\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.') }}\n\t\t\t\t\n\t\t\t\n\t\t\n\n\t\t
\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
I'm sliding up
\n */\nexport function registerAppsSlideToggle() {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dav } from 'davclient.js'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND',\n}\n\n/**\n * Throw an error when a URL is needed, and none is supplied.\n */\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {object} result\n * @param {object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tconst props = {\n\t\thref: result.href,\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (const key in propStat.properties) {\n\t\t\tlet propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @return {string} id\n */\nfunction parseIdFromLocation(url) {\n\tconst queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tconst parts = url.split('/')\n\tlet result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\n/**\n *\n * @param {number} status\n */\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\n/**\n *\n * @param attrs\n * @param davProperties\n */\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tconst props = {}\n\tlet key\n\tfor (key in attrs) {\n\t\tlet changedProp = davProperties[key]\n\t\tlet value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tlogger.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders,\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\tconst results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders,\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tconst responseJson = result.body || model.toJSON()\n\t\t\t\tconst locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\n/**\n *\n * @param options\n * @param model\n */\nexport function davCall(options, model) {\n\tconst client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t}, options.xmlNamespaces || {}),\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tconst headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\trequesttoken: OC.requestToken,\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n *\n * @param Backbone\n */\nexport function davSync(Backbone) {\n\treturn (method, model, options) => {\n\t\tconst params = { type: methodMap[method] || method }\n\t\tconst isCollection = (model instanceof Backbone.Collection)\n\n\t\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\t\tparams.type = 'MKCOL'\n\t\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\t\tparams.type = 'PUT'\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that we have a URL.\n\t\tif (!options.url) {\n\t\t\tparams.url = _.result(model, 'url') || urlError()\n\t\t}\n\n\t\t// Ensure that we have the appropriate request data.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t\t}\n\n\t\t// Don't process data on a non-GET request.\n\t\tif (params.type !== 'PROPFIND') {\n\t\t\tparams.processData = false\n\t\t}\n\n\t\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\t\tlet davProperties = model.davProperties\n\t\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t\t}\n\t\t\tif (davProperties) {\n\t\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t\t} else {\n\t\t\t\t\tparams.davProperties = davProperties\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\t\tif (_.isUndefined(options.depth)) {\n\t\t\t\tif (isCollection) {\n\t\t\t\t\toptions.depth = 1\n\t\t\t\t} else {\n\t\t\t\t\toptions.depth = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\t\tconst error = options.error\n\t\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\t\toptions.textStatus = textStatus\n\t\t\toptions.errorThrown = errorThrown\n\t\t\tif (error) {\n\t\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t\t}\n\t\t}\n\n\t\t// Make the request, allowing the user to override any Ajax options.\n\t\tconst xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\t\tmodel.trigger('request', model, xhr, options)\n\t\treturn xhr\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport $ from 'jquery'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\nimport OC from './index.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t *\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @return {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tconst self = this\n\t\tconst dialogDeferred = new $.Deferred()\n\n\t\tconst getCroppedPreview = function(file) {\n\t\t\tconst deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tconst type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tconst blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tconst originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tconst image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tconst url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\t/**\n\t\t * @param img\n\t\t */\n\t\tfunction crop(img) {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tconst targetSize = 96\n\t\t\tconst width = img.width\n\t\t\tconst height = img.height\n\t\t\tlet x\n\t\t\tlet y\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tconst size = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tfunction resampleHermite(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tconst img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tconst img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tconst data = img.data\n\t\t\tconst data2 = img2.data\n\t\t\tconst ratio_w = W / W2\n\t\t\tconst ratio_h = H / H2\n\t\t\tconst ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tconst ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (let j = 0; j < H2; j++) {\n\t\t\t\tfor (let i = 0; i < W2; i++) {\n\t\t\t\t\tconst x2 = (i + j * W2) * 4\n\t\t\t\t\tlet weight\n\t\t\t\t\tlet weights = 0\n\t\t\t\t\tlet weights_alpha = 0\n\t\t\t\t\tlet gx_r = 0\n\t\t\t\t\tlet gx_g = 0\n\t\t\t\t\tlet gx_b = 0\n\t\t\t\t\tlet gx_a = 0\n\t\t\t\t\tconst center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (let yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tconst dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tconst center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tconst w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (let xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tlet dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tconst w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) {\n\t\t\t\t\t\t\t\t\t\tweight = weight * data[dx + 3] / 250\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tconst addConflict = function($conflicts, original, replacement) {\n\t\t\tconst $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tconst $originalDiv = $conflict.find('.original')\n\t\t\tconst $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tlet path = original.directory + '/' + original.name\n\t\t\tconst urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0,\n\t\t\t}\n\t\t\tlet previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(function(path) {\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t}, function() {\n\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t})\n\t\t\t// connect checkboxes with labels\n\t\t\tconst checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\n\t\tconst dialogName = 'oc-dialog-fileexists-content'\n\t\tconst dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tconst $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tconst count = $(dialogId + ' .conflict').length\n\t\t\tconst title = n(\n\t\t\t\t'core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count },\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tconst title = t('core', 'One file conflict')\n\t\t\t\tconst $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.'),\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tconst $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tconst buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}, {\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tconst $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\t/**\n\t\t\t\t *\n\t\t\t\t */\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tconst checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tconst $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tconst $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tconst defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tconst self = this\n\t\t\t$.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tconst iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tconst iframe = document.createElement('iframe')\n\t\tiframe.id = iframeId\n\t\tiframe.style.display = 'none'\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tiframe.src = src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr\n\n\t\tthis.iframe = iframe\n\t\tdocument.body.appendChild(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {string} type event type\n\t * @param {object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tlet i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\nimport Handlebars from 'handlebars'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport function registerMenu($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport function unregisterMenu($toggle, $menuEl) {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport function hideMenus(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport function showMenu($toggle, $menuEl, complete) {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n */\nexport default {\n /**\n * Displayes a \"Saving...\" message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n */\n startSaving(selector) {\n this.startAction(selector, t('core', 'Saving …'));\n },\n /**\n * Displayes a custom message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n * @param message - Plain text message to display (no HTML allowed)\n */\n startAction(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.remove('error');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n el.style.display = 'block';\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selectior for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status - is being used to decide whether the message is displayed as an error/success\n */\n finishedSaving(selector, response) {\n this.finishedAction(selector, response);\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status . Is being used to decide whether the message is displayed as an error/success\n */\n finishedAction(selector, response) {\n if (response.status === 'success') {\n this.finishedSuccess(selector, response.data.message);\n }\n else {\n this.finishedError(selector, response.data.message);\n }\n },\n /**\n * Displayes an success message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text success message to display (no HTML allowed)\n */\n finishedSuccess(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('error');\n el.classList.add('success');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n window.setTimeout(fadeOut, 3000);\n el.style.display = 'block';\n /**\n * Fades out the message element\n */\n function fadeOut() {\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n // eslint-disable-next-line @stylistic/exp-list-style\n const animation = el.animate?.([\n { opacity: 1 },\n { opacity: 0 },\n ], {\n duration: 900,\n fill: 'forwards',\n });\n if (animation) {\n animation.addEventListener('finish', () => {\n el.style.display = 'none';\n });\n }\n else {\n window.setTimeout(() => {\n el.style.display = 'none';\n }, 900);\n }\n }\n },\n /**\n * Displayes an error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text error message to display (no HTML allowed)\n */\n finishedError(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.add('error');\n el.style.display = 'block';\n },\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/** @typedef {import('jquery')} jQuery */\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tlogger.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tlogger.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/**\n * @deprecated 25.0.0 Use Vue based (`@nextcloud/vue`) settings components instead\n */\nexport default {\n\t_cachedGroups: null,\n\n\tescapeHTML: function(text) {\n\t\treturn text.toString()\n\t\t\t.split('&').join('&')\n\t\t\t.split('<').join('<')\n\t\t\t.split('>').join('>')\n\t\t\t.split('\"').join('"')\n\t\t\t.split('\\'').join(''')\n\t},\n\n\tasync rebuildNavigation() {\n\t\tconst { data } = await axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\treturn\n\t\t}\n\n\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\twindow.dispatchEvent(new Event('resize'))\n\t},\n\n\t/**\n\t * Setup selection box for group selection.\n\t *\n\t * Values need to be separated by a pipe \"|\" character.\n\t * (mostly because a comma is more likely to be used\n\t * for groups)\n\t *\n\t * @param $elements jQuery element (hidden input) to setup select2 on\n\t * @param {Array} [extraOptions] extra options hash to pass to select2\n\t * @param {Array} [options] extra options\n\t * @param {Array} [options.excludeAdmins] flag whether to exclude admin groups\n\t */\n\tsetupGroupsSelect: function($elements, extraOptions, options) {\n\t\tconst self = this\n\t\toptions = options || {}\n\t\tif ($elements.length > 0) {\n\t\t\t// Let's load the data and THEN init our select\n\t\t\t$.ajax({\n\t\t\t\turl: generateOcsUrl('cloud/groups/details'),\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tconst results = []\n\n\t\t\t\t\tif (data.ocs.data.groups && data.ocs.data.groups.length > 0) {\n\t\t\t\t\t\tdata.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\t\tif (!options.excludeAdmins || group.id !== 'admin') {\n\t\t\t\t\t\t\t\tresults.push({ id: group.id, displayname: group.displayname })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// note: settings are saved through a \"change\" event registered\n\t\t\t\t\t\t// on all input fields\n\t\t\t\t\t\t$elements.select2(_.extend({\n\t\t\t\t\t\t\tplaceholder: t('core', 'Groups'),\n\t\t\t\t\t\t\tallowClear: true,\n\t\t\t\t\t\t\tmultiple: true,\n\t\t\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\t\t\tseparator: '|',\n\t\t\t\t\t\t\tdata: { results, text: 'displayname' },\n\t\t\t\t\t\t\tinitSelection: function(element, callback) {\n\t\t\t\t\t\t\t\tconst groups = $(element).val()\n\t\t\t\t\t\t\t\tlet selection\n\t\t\t\t\t\t\t\tif (groups && results.length > 0) {\n\t\t\t\t\t\t\t\t\tselection = _.map(_.filter((groups || []).split('|').sort(), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn results.find(function(group) {\n\t\t\t\t\t\t\t\t\t\t\treturn group.id === groupId\n\t\t\t\t\t\t\t\t\t\t}) !== undefined\n\t\t\t\t\t\t\t\t\t}), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\t\t\t\t\tdisplayname: results.find(function(group) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn group.id === groupId\n\t\t\t\t\t\t\t\t\t\t\t}).displayname,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else if (groups) {\n\t\t\t\t\t\t\t\t\tselection = _.map((groups || []).split('|').sort(), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\t\t\t\t\tdisplayname: groupId,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(selection)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tformatResult: function(element) {\n\t\t\t\t\t\t\t\treturn self.escapeHTML(element.displayname)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tformatSelection: function(element) {\n\t\t\t\t\t\t\t\treturn self.escapeHTML(element.displayname)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tescapeMarkup: function(m) {\n\t\t\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\t\t\treturn m\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, extraOptions || {}))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Notification.show(t('core', 'Group list is empty'), { type: 'error' })\n\t\t\t\t\t\tlogger.debug(data)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function(data) {\n\t\t\t\t\tOC.Notification.show(t('core', 'Unable to retrieve the group list'), { type: 'error' })\n\t\t\t\t\tlogger.debug(data)\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\nimport moment from 'moment'\nimport logger from '../logger.js'\nimport OC from './index.js'\nimport History from './util-history.js'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tlet bytes\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x])\n\t\t\t\tconst bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here to include null == undefined\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoin,\n} from '@nextcloud/paths'\nimport {\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgenerateUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\nimport logger from '../logger.js'\nimport { isUserAdmin } from './admin.js'\nimport { appConfig } from './appconfig.js'\nimport Apps from './apps.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport { getCapabilities } from './capabilities.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport { debug } from './debug.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport L10N from './l10n.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport * as MimeType from './mimeType.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.ts'\nimport { getRequestToken } from './requesttoken.ts'\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport Settings from './settings.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\tApps,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\tMimeType,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * This is already handled by `interceptRequests` in `core/src/init.js`.\n\t *\n\t * @deprecated 33.0.0 - unused by Nextcloud and only a stub remains. Just remove usage.\n\t */\n\tregisterXHRForErrorProcessing: () => {},\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths: join,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t// Query string helpers\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\t/**\n\t * @deprecated 25.0.0 Use Vue based (`@nextcloud/vue`) settings components instead\n\t */\n\tSettings,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', (e) => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tlogger.info('OC.requestToken changed', { token: e.token })\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport function getCapabilities() {\n\tif (OC.debug) {\n\t\tlogger.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\t}\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Parses a URL query string into a JS map\n *\n * @param queryString - Query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return Object containing key/values matching the URL parameters\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function parse(queryString) {\n const params = new URLSearchParams(queryString);\n return Object.fromEntries(params.entries());\n}\n/**\n * Builds a URL query from a JS map.\n *\n * @param params - Object containing key/values matching the URL parameters\n * @return String containing a URL query (without question) mark\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function build(params) {\n if (!params) {\n return '';\n }\n const search = new URLSearchParams(params);\n return search.toString();\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport function linkToRemoteBase(service) {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport OC from '../OC/index.js'\nimport L10n from '../OC/l10n.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.1\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.1';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n if (this.id !== prevId) {\n this.trigger('changeId', this, prevId, options);\n }\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-bbf83d00]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\tmargin: 0;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n\\n\\t// Only show the error state if the user interacted with the login box\\n\\t:deep(input:invalid:not(:user-invalid)) {\\n\\t\\tborder-color: var(--color-border-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.password-less-login-form[data-v-25758ef3]{display:flex;flex-direction:column;gap:.5rem;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.password-less-login-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\tmargin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.reset-password-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: .5rem;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA\",\"sourcesContent\":[\"\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(2 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__alternative-logins {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 0.75rem;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\t\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\nconst dav = {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '' + propName + '>\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n' + this._renderPropSet(properties);\n body += '';\n\n return this.request('PROPPATCH', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Generates a MKCOL request.\n * If attributes are given, it will use an extended MKCOL request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n '\\n' + this._renderPropSet(properties);\n body +='';\n }\n\n return this.request('MKCOL', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Performs a HTTP request, and returns a Promise\n *\n * @param {string} method HTTP method\n * @param {string} url Relative or absolute url\n * @param {Object} headers HTTP headers as an object.\n * @param {string} body HTTP request body.\n * @param {string} responseType HTTP request response type.\n * @param {Object} options\n * @param {Function} options.onProgress progress callback\n * @return {Promise}\n */\n request : function(method, url, headers, body, responseType, options) {\n\n var self = this;\n var xhr = this.xhrProvider();\n headers = headers || {};\n responseType = responseType || \"\";\n \n if (this.userName) {\n headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password);\n // xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);\n }\n xhr.open(method, this.resolveUrl(url), true);\n var ii;\n for(ii in headers) {\n xhr.setRequestHeader(ii, headers[ii]);\n }\n xhr.responseType = responseType;\n\n if (options && typeof(options.onProgress) === 'function') {\n if (method === 'PUT' || method === 'POST') {\n xhr.upload.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n else {\n xhr.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n }\n\n // Work around for edge\n if (body === undefined) {\n xhr.send();\n } else {\n xhr.send(body);\n }\n\n return new Promise(function(fulfill, reject) {\n\n xhr.onreadystatechange = function() {\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n var resultBody = xhr.response;\n if (xhr.status === 207) {\n resultBody = self.parseMultiStatus(xhr.response);\n }\n\n fulfill({\n body: resultBody,\n status: xhr.status,\n xhr: xhr\n });\n\n };\n\n xhr.ontimeout = function() {\n\n reject(new Error('Timeout exceeded'));\n\n };\n\n });\n\n },\n\n /**\n * Returns an XMLHttpRequest object.\n *\n * This is in its own method, so it can be easily overridden.\n *\n * @return {XMLHttpRequest}\n */\n xhrProvider : function() {\n\n return new XMLHttpRequest();\n\n },\n\n /**\n * Parses a property node.\n *\n * Either returns a string if the node only contains text, or returns an\n * array of non-text subnodes.\n *\n * @param {Object} propNode node to parse\n * @return {string|Array} text content as string or array of subnodes, excluding text nodes\n */\n _parsePropNode: function(propNode) {\n var content = null;\n if (propNode.childNodes && propNode.childNodes.length > 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nmodule.exports = {\n dav,\n Client: dav.Client,\n}\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.9';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy45JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n // Using delete is slow\n instance.helpers[helperName] = undefined;\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFOztBQUVmLGNBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO0tBQzFDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIC8vIFVzaW5nIGRlbGV0ZSBpcyBzbG93XG4gICAgICBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n var newContext = [];\n var iterator = context[Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkUsWUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFlBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZXh0W1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgY29uc3QgbmV3Q29udGV4dCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IGNvbnRleHRbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICBmb3IgKGxldCBpdCA9IGl0ZXJhdG9yLm5leHQoKTsgIWl0LmRvbmU7IGl0ID0gaXRlcmF0b3IubmV4dCgpKSB7XG4gICAgICAgICAgbmV3Q29udGV4dC5wdXNoKGl0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoY29udGV4dCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LlxuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHJldCA9IGludmVyc2UodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n // Create an object with \"null\"-prototype to avoid truthy results on\n // prototype properties.\n var propertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n propertyWhiteList['__proto__'] = false;\n _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);\n\n var methodWhiteList = Object.create(null);\n methodWhiteList['constructor'] = false;\n methodWhiteList['__defineGetter__'] = false;\n methodWhiteList['__defineSetter__'] = false;\n methodWhiteList['__lookupGetter__'] = false;\n methodWhiteList['__lookupSetter__'] = false;\n _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);\n\n return {\n properties: {\n whitelist: propertyWhiteList,\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: methodWhiteList,\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FCQUF1QixVQUFVOztzQkFDZCxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7OztBQUd2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRTlDLG1CQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxnQkFBTyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7QUFFakUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGlCQUFlLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDNUMsaUJBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGdCQUFPLGVBQWUsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs7QUFFNUQsU0FBTztBQUNMLGNBQVUsRUFBRTtBQUNWLGVBQVMsRUFBRSxpQkFBaUI7QUFDNUIsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLGVBQWU7QUFDMUIsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLHdCQUFPLEdBQUcsQ0FDUixPQUFPLEVBQ1AsaUVBQStELFlBQVksb0lBQ0gsb0hBQzJDLENBQ3BILENBQUM7R0FDSDtDQUNGOztBQUVNLFNBQVMscUJBQXFCLEdBQUc7QUFDdEMsUUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFlBQVksRUFBSTtBQUNwRCxXQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0dBQ3ZDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InByb3RvLWFjY2Vzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGFuIG9iamVjdCB3aXRoIFwibnVsbFwiLXByb3RvdHlwZSB0byBhdm9pZCB0cnV0aHkgcmVzdWx0cyBvblxuICAvLyBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAgY29uc3QgcHJvcGVydHlXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG9cbiAgcHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG4gIGV4dGVuZChwcm9wZXJ0eVdoaXRlTGlzdCwgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvUHJvcGVydGllcyk7XG5cbiAgY29uc3QgbWV0aG9kV2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgbWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVTZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBTZXR0ZXJfXyddID0gZmFsc2U7XG4gIGV4dGVuZChtZXRob2RXaGl0ZUxpc3QsIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgd2hpdGVsaXN0OiBwcm9wZXJ0eVdoaXRlTGlzdCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b1Byb3BlcnRpZXNCeURlZmF1bHRcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgIHdoaXRlbGlzdDogbWV0aG9kV2hpdGVMaXN0LFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvTWV0aG9kc0J5RGVmYXVsdFxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIHByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5tZXRob2RzLCBwcm9wZXJ0eU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wucHJvcGVydGllcywgcHJvcGVydHlOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdID09PSB0cnVlO1xuICB9XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlO1xuICB9XG4gIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSAhPT0gdHJ1ZSkge1xuICAgIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IHRydWU7XG4gICAgbG9nZ2VyLmxvZyhcbiAgICAgICdlcnJvcicsXG4gICAgICBgSGFuZGxlYmFyczogQWNjZXNzIGhhcyBiZWVuIGRlbmllZCB0byByZXNvbHZlIHRoZSBwcm9wZXJ0eSBcIiR7cHJvcGVydHlOYW1lfVwiIGJlY2F1c2UgaXQgaXMgbm90IGFuIFwib3duIHByb3BlcnR5XCIgb2YgaXRzIHBhcmVudC5cXG5gICtcbiAgICAgICAgYFlvdSBjYW4gYWRkIGEgcnVudGltZSBvcHRpb24gdG8gZGlzYWJsZSB0aGUgY2hlY2sgb3IgdGhpcyB3YXJuaW5nOlxcbmAgK1xuICAgICAgICBgU2VlIGh0dHBzOi8vaGFuZGxlYmFyc2pzLmNvbS9hcGktcmVmZXJlbmNlL3J1bnRpbWUtb3B0aW9ucy5odG1sI29wdGlvbnMtdG8tY29udHJvbC1wcm90b3R5cGUtYWNjZXNzIGZvciBkZXRhaWxzYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TG9nZ2VkUHJvcGVydGllcygpIHtcbiAgT2JqZWN0LmtleXMobG9nZ2VkUHJvcGVydGllcykuZm9yRWFjaChwcm9wZXJ0eU5hbWUgPT4ge1xuICAgIGRlbGV0ZSBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n options.hooks = this.hooks;\n options.protoAccessControl = this.protoAccessControl;\n\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return result;\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = {};\n addHelpers(mergedHelpers, env.helpers, container);\n addHelpers(mergedHelpers, options.helpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = lookupOwnProperty(options.data, 'partial-block');\n } else {\n partial = lookupOwnProperty(options.partials, options.name);\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = lookupOwnProperty(options.partials, partial);\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction lookupOwnProperty(obj, name) {\n if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {\n return obj[name];\n }\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction addHelpers(mergedHelpers, helpers, container) {\n if (!helpers) return;\n Object.keys(helpers).forEach(function (helperName) {\n var helper = helpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n options.lookupProperty = lookupProperty;\n return options;\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3pFLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUNuRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ2hELFNBQU8sK0JBQVcsTUFBTSxFQUFFLFVBQUEsT0FBTyxFQUFJO0FBQ25DLFdBQU8sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBQ3hDLFdBQU8sT0FBTyxDQUFDO0dBQ2hCLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucy5ob29rcyA9IHRoaXMuaG9va3M7XG4gICAgb3B0aW9ucy5wcm90b0FjY2Vzc0NvbnRyb2wgPSB0aGlzLnByb3RvQWNjZXNzQ29udHJvbDtcblxuICAgIGxldCByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmluZGVudCkge1xuICAgICAgICBsZXQgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmICghbGluZXNbaV0gJiYgaSArIDEgPT09IGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdUaGUgcGFydGlhbCAnICtcbiAgICAgICAgICBvcHRpb25zLm5hbWUgK1xuICAgICAgICAgICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSwgbG9jKSB7XG4gICAgICBpZiAoIW9iaiB8fCAhKG5hbWUgaW4gb2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmosIHtcbiAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250YWluZXIubG9va3VwUHJvcGVydHkob2JqLCBuYW1lKTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSB7fTtcbiAgICAgIGFkZEhlbHBlcnMobWVyZ2VkSGVscGVycywgZW52LmhlbHBlcnMsIGNvbnRhaW5lcik7XG4gICAgICBhZGRIZWxwZXJzKG1lcmdlZEhlbHBlcnMsIG9wdGlvbnMuaGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIG9wdGlvbnMubmFtZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIHBhcnRpYWwpO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGxvb2t1cE93blByb3BlcnR5KG9iaiwgbmFtZSkge1xuICBpZiAob2JqICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIG5hbWUpKSB7XG4gICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKFxuICAgICAgcHJvZyxcbiAgICAgIHByb3BzLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgZGVwdGhzICYmIGRlcHRoc1swXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cblxuZnVuY3Rpb24gYWRkSGVscGVycyhtZXJnZWRIZWxwZXJzLCBoZWxwZXJzLCBjb250YWluZXIpIHtcbiAgaWYgKCFoZWxwZXJzKSByZXR1cm47XG4gIE9iamVjdC5rZXlzKGhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IGhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgb3B0aW9ucy5sb29rdXBQcm9wZXJ0eSA9IGxvb2t1cFByb3BlcnR5O1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9KTtcbn1cbiJdfQ==\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","const map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tconst id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tconst e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","const deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority ||= 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = (body) => {\n\tvar mod;\n\treturn () => {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => (chunkId + \"-\" + chunkId + \".js?v=\" + {\"3108\":\"71c2314a13f8bd9bb9f3\",\"3252\":\"5cdefe70d09ea015d504\",\"4227\":\"44c552cb6722d4c29085\",\"4941\":\"cbb590bc81c3552fe3fc\",\"7859\":\"8b3b7c211b6d4a439761\",\"8374\":\"4f24f83d985c39aa0044\",\"8689\":\"5bbad32eaeecdbe5bbc4\",\"8826\":\"992dcbc4edbba49089e8\"}[chunkId] + \"\");","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop));","const inProgress = {};\nconst dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1418;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, \"\").replace(/\\/[^/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nconst installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nconst chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] ||= [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(67919)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["multiMatcher","RegExp","hexPair","parsePercentByte","input","position","codePointAt","length","digits","slice","test","byte","Number","parseInt","next","utf8SequenceLength","isContinuationByte","decode","decodeURIComponent","output","charAt","firstByte","sequenceLength","end","validSequence","index","nextByte","encodedSequence","splitOnFirst","string","separator","TypeError","separatorIndex","indexOf","base_decode","value","options","encodedURI","replaceMap","match","exec","result","entries","Object","keys","key","replace","customDecodeURIComponent","decodeUriComponent","keysSorter","Array","isArray","sort","a","b","map","parseValue","type","toLowerCase","arrayFormat","isNaN","trim","parseBooleans","parseNumbers","Symbol","login_LoginButtonvue_type_script_lang_js","name","components","ArrowRight","A","NcButton","props","String","default","t","valueLoading","loading","Boolean","required","invertedColors","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","LoginButtonvue_type_style_index_0_id_bbf83d00_prod_lang_scss_scoped_true","locals","LoginButton","componentNormalizer","_vm","this","_c","_self","attrs","variant","wide","disabled","on","click","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","auth","computed","userNameInputLengthIs255","user","userInputHelperText","login_LoginFormvue_type_script_lang_js","NcCheckboxRadioSwitch","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","remembermeAllowed","directLogin","emailStates","setup","l10n_dist","Tl","headlineText","productName","OC","theme","undefined","sanitize","escape","loginTimeout","loadState","requestToken","window","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","data","password","rememberme","visible","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","imagePath","loginActionUrl","generateUrl","emailEnabled","every","state","loginText","watch","mounted","$refs","inputField","focus","methods","updateUsername","submit","event","preventDefault","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true_options","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true","LoginForm","ref","method","action","title","_e","heading","_l","message","class","id","alt","src","staticStyle","clear","shake","label","maxlength","autocapitalize","spellchecking","autocomplete","error","change","model","callback","$$v","expression","domProps","WebAuthnError","Error","constructor","code","cause","super","defineProperty","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","bufferToBase64URLString_bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer_base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn_browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","globalThis","PublicKeyCredential","_browserSupportsWebAuthnAutofillInternals","toPublicKeyCredentialDescriptor_toPublicKeyCredentialDescriptor","descriptor","transports","attachments","toAuthenticatorAttachment_toAuthenticatorAttachment","attachment","vue_material_design_icons_LockOpenvue_type_script_lang_js","emits","fillColor","size","LockOpen","_b","role","$attrs","fill","width","height","viewBox","d","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","NoValidCredentials","login_PasswordLessLoginFormvue_type_script_lang_js","defineComponent","InformationIcon","InformationOutline","LockOpenIcon","NcEmptyContent","isHttps","isLocalhost","supportsWebauthn","browserSupportsWebAuthn","validCredentials","authenticate","loginForm","checkValidity","debug","params","async","loginName","url","Axios","post","allowCredentials","optionsJSON","challenge","console","warn","useBrowserAutofill","verifyBrowserAutofillInput","publicKey","getOptions","Promise","resolve","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","document","querySelectorAll","mediation","credential","navigator","credentials","get","err","AbortSignal","effectiveDomain","location","hostname","rpId","identifyAuthenticationError","rawId","response","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","JSON","stringify","finishAuthentication","then","defaultRedirectUrl","href","getBaseUrl","catch","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true_options","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true","PasswordLessLoginForm_component","_setupProxy","apply","arguments","placeholder","description","PasswordLessLoginForm","login_ResetPasswordvue_type_script_lang_ts","resetPasswordLink","axios","status","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true_options","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true","ResetPassword_component","ResetPassword","login_UpdatePasswordvue_type_script_lang_js","resetPasswordTarget","encrypted","proceed","encryption","msg","e","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css_options","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css","UpdatePassword_component","for","directives","rawName","spellcheck","target","composing","checked","_i","$$a","$$el","$$c","$$i","concat","warning","UpdatePassword","query","validateArrayFormatSeparator","arrayFormatSeparator","types","create","formatter","accumulator","push","newValue","includes","split","item","arrayValue","parserForArrayFormat","returnValue","parameterStart","firstSeparator","parameter","parameter_","replaceAll","key2","value2","typeOption","values","join","reduce","queryString","search","localStorage","sessionStorage","indexedDBList","indexedDB","databases","deleteDatabase","wipeBrowserStorages","views_Loginvue_type_script_lang_js","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","protocol","hideLoginForm","passwordResetFinished","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss_options","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss","Login","mode","done","alternativeLogin","isAdmin","_oc_isadmin","appConfig","oc_appconfig","dynamicSlideToggleEnabled","Apps","enableDynamicSlideToggle","$el","$","removeClass","show","trigger","hide","addClass","apps","OC_appswebroots","_oc_appswebroots","methodMap","update","patch","delete","read","parsePropFindResult","davProperties","_","subResult","propStat","properties","propKey","parseIdFromLocation","queryPos","substr","parts","pop","isSuccessStatus","callPropPatch","client","headers","propPatch","changedProp","convertModelAttributesToDavProperties","changed","success","toJSON","Backbone","VendorBackbone","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requesttoken","propFind","depth","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","isCollection","Collection","hasInnerCollection","usePUT","collection","urlError","processData","prototype","call","textStatus","errorThrown","context","OC_backbone","OC_config","_oc_config","rawUid","getElementsByTagName","getAttribute","displayName","currentUser","_oc_debug","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","text","modal","OK_BUTTON","info","confirm","confirmDestructive","buttons","DialogBuilder","setName","setText","setButtons","clicked","_getLegacyButtons","confirmHtml","setHTML","prompt","spawnDialog","defineAsyncComponent","all","__webpack_require__","inputName","isPassword","args","filepicker","multiselect","mimetype","_modal","FilePickerType","Choose","path","legacyCallback","getPath","node","root","startsWith","nodes","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","displayname","basename","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","attributes","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","self","dialogDeferred","addConflict","$conflicts","$conflict","find","clone","$originalDiv","$replacementDiv","Util","humanFileSize","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","css","deferred","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","img","canvas","createElement","Math","min","getContext","drawImage","W","H","W2","H2","round","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","resampleHermite","toDataURL","crop","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","dialogs","getRequestToken","head","dataset","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","style","display","appendChild","source","onmessage","parse","listen","fallBackCallBack","lastLength","addEventListener","eventsource","l10n","load","loadTranslations","register","kz","_unregister","unregister","translate","translatePlural","Handlebars","app","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","menuSpeed","iconCache","Map","mimeType","MimeTypeList","aliases","has","gotIcon","folder","themes","getRootUrl","getMimeTypeIcon","files","OCA","Theming","cacheBuster","set","clearIconCache","startSaving","selector","startAction","el","querySelector","HTMLElement","textContent","classList","getAnimations","animation","finishedSaving","finishedAction","finishedSuccess","finishedError","add","setTimeout","animate","opacity","duration","notification","updatableNotification","getDefaultNotificationFunction","setDefault","$row","each","toastify","hideToast","showHtml","html","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","toString","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","password_confirmation","requiresPasswordConfirmation","isPasswordConfirmationRequired","requirePasswordConfirmation","rejectCallback","confirmPassword","plugins","_plugins","targetName","plugin","getPlugins","attach","targetObject","detach","settings","_cachedGroups","rebuildNavigation","generateOcsUrl","ocs","meta","statuscode","emit","dispatchEvent","Event","setupGroupsSelect","$elements","extraOptions","dataType","groups","group","excludeAdmins","select2","allowClear","multiple","toggleSelect","initSelection","element","val","selection","groupId","formatResult","formatSelection","escapeMarkup","m","Notification","_theme","util_history","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","userAgent","patterns","pattern","ii","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","util","History","files_dist","v7","computerFileSize","s","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","top","left","visibility","overflow","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","isCookieSetToValue","cookies","cookie","webroot","_oc_webroot","lastIndexOf","OC_webroot","src_OC","coreApps","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","appswebroots","config","Config","mimeType_namespaceObject","isUserAdmin","L10N","registerXHRForErrorProcessing","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","is","slideToggle","showMenu","unregisterMenu","off","paths_dist","P8","encodePath","O0","dirname","pD","isSamePath","ys","joinPaths","getCanonicalLocale","lO","getLocale","JK","Z0","URLSearchParams","fromEntries","PasswordConfirmation","Plugins","Settings","generateFilePath","router_dist","Jv","getRootPath","d0","linkTo","uM","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","token","Nextcloud","L10n","Vue","mixin","extend","LoginView","$mount","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","resp","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","merge","addOptions","splice","array","at","tail","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","iterator","kind","_collection","_kind","_index","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","clearInterval","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","module","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","sources","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","ch","_XML_CHAR_MAP","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","_escapeXml","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","readyState","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","parseUrl","subString","scheme","host","port","propertyName","_interopRequireDefault","__esModule","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","SafeString","Exception","escapeExpression","VM","template","spec","inst","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","log","registerHelper","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","createFrame","_decoratorsInline2","container","ret","errorProps","loc","line","endLineNumber","column","endColumn","tmp","idx","captureStackTrace","lineNumber","nop","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","hooks","inverse","contextPath","appendContextPath","priorKey","execIteration","field","blockParams","newContext","it","conditional","includeZero","level","lookupProperty","createProtoAccessControl","runtimeOptions","propertyWhiteList","allowedProtoProperties","methodWhiteList","allowedProtoMethods","whitelist","defaultValue","allowProtoPropertiesByDefault","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","protoAccessControlForType","loggedProperties","logUnexpecedPropertyAccessOnce","checkWhiteList","wrapHelper","helper","transformOptionsFn","lookupLevel","levelMap","_len","_key","__defineGetter__","__magic__","$Handlebars","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","lookup","depths","len","lambda","invokePartial","resolvePartial","compile","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","_parent","mergeIfNeeded","common","nullContext","seal","noop","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","addHelpers","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","lookupOwnProperty","currentPartialBlock","partialBlock","Function","_internalWrapHelper","prog","currentDepths","passLookupPropertyOption","toHTML","possible","badChars","escapeChar","object","frame","chr","webpackContext","req","webpackContextResolve","o","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","r","getter","cw","mod","definition","binding","f","chunkId","promises","u","hasOwn","inProgress","dataWebpackPrefix","script","needAttach","scripts","charset","nc","onScriptComplete","onerror","clearTimeout","doneFns","parentNode","toStringTag","nmd","paths","dn","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","toUpperCase","baseURI","installedChunks","installedChunkData","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"core-login.js?v=62c603a0036abc34aceb","mappings":"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CA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,YACA,eACA,YACA,eACA,WACA,cACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,mBACA,sBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,iBACA,oBACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,c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","sources":["webpack:///nextcloud/node_modules/decode-uri-component/index.js","webpack:///nextcloud/node_modules/split-on-first/index.js","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?d26e","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/mixins/auth.js","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?48b6","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=d7513faa","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?9fd4","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=ts","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?728b","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?84cd","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/utils/xhr-request.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?6ce5","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.ts","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/mimeType.js","webpack:///nextcloud/core/src/OC/msg.ts","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/settings.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/query-string.ts","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///nextcloud/node_modules/handlebars/runtime.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/concatenation wrap","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["// Matches one or more consecutive percent-encoded bytes (e.g. `%C3%A5`).\nconst token = '%[a-f0-9]{2}';\nconst multiMatcher = new RegExp(`(${token})+`, 'gi');\n\nconst hexPair = /^[a-f\\d]{2}$/i;\n\n// Read a `%XX` sequence at `position`, returning the byte value and where to continue scanning.\nfunction parsePercentByte(input, position) {\n\tif (input.codePointAt(position) !== 37 || position + 3 > input.length) {\n\t\treturn;\n\t}\n\n\tconst digits = input.slice(position + 1, position + 3);\n\n\tif (!hexPair.test(digits)) {\n\t\treturn;\n\t}\n\n\treturn {byte: Number.parseInt(digits, 16), next: position + 3};\n}\n\n/**\n * Return how many bytes a UTF-8 code point needs based on its lead byte.\n * Returns 0 for continuation bytes and other invalid lead bytes.\n */\nfunction utf8SequenceLength(byte) {\n\tif (byte <= 0x7F) {\n\t\treturn 1;\n\t}\n\n\t// Start at 0xC2 to exclude overlong 2-byte encodings (0xC0/0xC1).\n\tif (byte >= 0xC2 && byte <= 0xDF) {\n\t\treturn 2;\n\t}\n\n\tif (byte >= 0xE0 && byte <= 0xEF) {\n\t\treturn 3;\n\t}\n\n\tif (byte >= 0xF0 && byte <= 0xF4) {\n\t\treturn 4;\n\t}\n\n\treturn 0;\n}\n\nfunction isContinuationByte(byte) {\n\treturn byte >= 0x80 && byte <= 0xBF;\n}\n\n/**\n * Decode as much of `input` as possible without throwing.\n *Scans left-to-right in O(n), decoding valid UTF-8 runs and leaving the rest literal.\n */\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet output = '';\n\t\tlet position = 0;\n\n\t\twhile (position < input.length) {\n\t\t\tif (input.codePointAt(position) !== 37) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst firstByte = parsePercentByte(input, position);\n\n\t\t\t// `%` not followed by two hex digits (e.g. `%` or `%G`).\n\t\t\tif (!firstByte) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst sequenceLength = utf8SequenceLength(firstByte.byte);\n\n\t\t\t// Continuation byte or invalid lead byte — emit one `%XX` literally.\n\t\t\tif (sequenceLength === 0) {\n\t\t\t\toutput += input.slice(position, position + 3);\n\t\t\t\tposition += 3;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet end = firstByte.next;\n\t\t\tlet validSequence = true;\n\n\t\t\tfor (let index = 1; index < sequenceLength; index++) {\n\t\t\t\tconst nextByte = parsePercentByte(input, end);\n\n\t\t\t\tif (!nextByte || !isContinuationByte(nextByte.byte)) {\n\t\t\t\t\tvalidSequence = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tend = nextByte.next;\n\t\t\t}\n\n\t\t\tif (validSequence) {\n\t\t\t\tconst encodedSequence = input.slice(position, end);\n\n\t\t\t\ttry {\n\t\t\t\t\toutput += decodeURIComponent(encodedSequence);\n\t\t\t\t\tposition = end;\n\t\t\t\t\tcontinue;\n\t\t\t\t} catch {\n\t\t\t\t\t// Invalid UTF-8 despite correct structure — emit the first byte literally.\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Missing continuation bytes or decode failure — emit the first byte literally.\n\t\t\toutput += input.slice(position, position + 3);\n\t\t\tposition += 3;\n\t\t}\n\n\t\treturn output;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\t// Find percent-encoded runs separated by literal text or lone `%` characters.\n\tlet match = multiMatcher.exec(input);\n\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError(`Expected \\`encodedURI\\` to be of type \\`string\\`, got \\`${typeof encodedURI}\\``);\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[', index, ']'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[]'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[]=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), ':list='].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), ':list=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\tresult.push([encode(key, options), keyValueSeparator, encode(value, options)].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push(encode(value, options));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push(encode(key, options));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key]];\n\t\t\t\t}\n\n\t\t\t\tfor (const item of arrayValue) {\n\t\t\t\t\taccumulator[key].push(item);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key].push(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction getUrlWithoutQuery(url) {\n\t// Avoid `split('?')` so query-heavy URLs don't allocate large arrays.\n\tconst queryStart = url.indexOf('?');\n\treturn queryStart === -1 ? url : url.slice(0, queryStart);\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value === null) {\n\t\treturn true;\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tif (/^&+$/.test(query)) {\n\t\treturn returnValue;\n\t}\n\n\tlet parameterStart = 0;\n\tlet firstSeparator = query.indexOf('&');\n\tif (firstSeparator === -1) {\n\t\tfirstSeparator = query.length;\n\t}\n\n\tfor (let index = firstSeparator; index <= query.length; index++) {\n\t\tif (index < query.length && query[index] !== '&') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (index === parameterStart) {\n\t\t\tparameterStart = index + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter = query.slice(parameterStart, index);\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\n\t\tparameterStart = index + 1;\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst typeOption = options.types[key];\n\t\t\t\tconst type = typeof typeOption === 'function' ? typeOption : (typeOption ? typeOption.replace('[]', '') : undefined);\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tlet value = object[key];\n\n\t\t// Apply replacer function if provided\n\t\tif (options.replacer) {\n\t\t\tvalue = options.replacer(key, value);\n\n\t\t\t// If replacer returns undefined, skip this key\n\t\t\tif (value === undefined) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\t// Apply replacer to array elements if provided\n\t\t\t// Note: We don't re-apply replacer to the array itself, only to elements\n\t\t\tlet processedArray = value;\n\t\t\tif (options.replacer) {\n\t\t\t\tprocessedArray = value.map((item, index) =>\n\t\t\t\t\toptions.replacer(`${key}[${index}]`, item),\n\t\t\t\t).filter(item => item !== undefined);\n\t\t\t}\n\n\t\t\tconst result = processedArray.reduce(formatter(key), []);\n\t\t\tconst arrayFormatSeparator = ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? options.arrayFormatSeparator : '&';\n\t\t\treturn result.join(arrayFormatSeparator);\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: getUrlWithoutQuery(url_ ?? ''),\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = getUrlWithoutQuery(removeHash(object.url)) || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\thash = `#${object.fragmentIdentifier}`;\n\n\t\tif (options[encodeFragmentIdentifier]) {\n\t\t\t// Percent-encode the fragment with a throwaway URL. The fragment percent-encode set does not depend on the scheme, so the caller's URL is deliberately not parsed here; it may not even be parseable.\n\t\t\tconst throwawayUrl = new URL('https://query-string.invalid');\n\t\t\tthrowawayUrl.hash = hash;\n\t\t\thash = throwawayUrl.hash;\n\t\t}\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tif (Array.isArray(filter)) {\n\t\tconst filterSet = new Set(filter);\n\t\treturn pick(input, key => !filterSet.has(key), options);\n\t}\n\n\treturn pick(input, (key, value) => !filter(key, value), options);\n}\n","\n\n\n\t\n\t\t{{ !loading ? value : valueLoading }}\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=bbf83d00&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbf83d00\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"variant\":\"primary\",\"type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","\n\n\n\t\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f91ba7fe&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f91ba7fe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Session error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'It appears your session token has expired, please refresh the page and try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"password\",\"name\":\"password\",\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"visible\":_vm.visible,\"data-login-form-input-password\":\"\",\"required\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),(_vm.remembermeAllowed)?_c('NcCheckboxRadioSwitch',{ref:\"rememberme\",attrs:{\"id\":\"rememberme\",\"name\":\"rememberme\",\"value\":\"1\",\"data-login-form-input-rememberme\":\"\"},model:{value:(_vm.rememberme),callback:function ($$v) {_vm.rememberme=$$v},expression:\"rememberme\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Remember me'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=d7513faa\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport logger from '../logger.js';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication({ optionsJSON: data });\n}\n/**\n * Verify webauthn authentication\n *\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex was originally sourced from here, then remixed to add punycode support:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n // Support punycode (ACE) or ascii labels and domains\n /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(hostname));\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=25758ef3&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25758ef3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",staticClass:\"password-less-login-form\",attrs:{\"aria-labelledby\":\"password-less-login-form-title\",\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',{attrs:{\"id\":\"password-less-login-form-title\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"required\":\"\",\"model-value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Your connection is not secure'),\"description\":_vm.t('core', 'Passwordless authentication is only available over a secure connection.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockOpenIcon')]},proxy:true}])}):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Browser not supported'),\"description\":_vm.t('core', 'Passwordless authentication is not supported in your browser.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InformationIcon')]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"reset-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Reset password')))]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"id\":\"user\",\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=759a0fdd&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"759a0fdd\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","\n\n\n\t\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=2c0ecaf9&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0ecaf9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{ warning: _vm.error }},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.') }}\n\t\t\t\t\n\t\t\t\n\t\t\n\n\t\t
\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
I'm sliding up
\n */\nexport function registerAppsSlideToggle() {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dav } from 'davclient.js'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND',\n}\n\n/**\n * Throw an error when a URL is needed, and none is supplied.\n */\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {object} result\n * @param {object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tconst props = {\n\t\thref: result.href,\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (const key in propStat.properties) {\n\t\t\tlet propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @return {string} id\n */\nfunction parseIdFromLocation(url) {\n\tconst queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tconst parts = url.split('/')\n\tlet result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\n/**\n *\n * @param {number} status\n */\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\n/**\n *\n * @param attrs\n * @param davProperties\n */\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tconst props = {}\n\tlet key\n\tfor (key in attrs) {\n\t\tlet changedProp = davProperties[key]\n\t\tlet value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tlogger.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders,\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\tconst results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders,\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tconst responseJson = result.body || model.toJSON()\n\t\t\t\tconst locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\n/**\n *\n * @param options\n * @param model\n */\nexport function davCall(options, model) {\n\tconst client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t}, options.xmlNamespaces || {}),\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tconst headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\trequesttoken: OC.requestToken,\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n *\n * @param Backbone\n */\nexport function davSync(Backbone) {\n\treturn (method, model, options) => {\n\t\tconst params = { type: methodMap[method] || method }\n\t\tconst isCollection = (model instanceof Backbone.Collection)\n\n\t\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\t\tparams.type = 'MKCOL'\n\t\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\t\tparams.type = 'PUT'\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that we have a URL.\n\t\tif (!options.url) {\n\t\t\tparams.url = _.result(model, 'url') || urlError()\n\t\t}\n\n\t\t// Ensure that we have the appropriate request data.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t\t}\n\n\t\t// Don't process data on a non-GET request.\n\t\tif (params.type !== 'PROPFIND') {\n\t\t\tparams.processData = false\n\t\t}\n\n\t\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\t\tlet davProperties = model.davProperties\n\t\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t\t}\n\t\t\tif (davProperties) {\n\t\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t\t} else {\n\t\t\t\t\tparams.davProperties = davProperties\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\t\tif (_.isUndefined(options.depth)) {\n\t\t\t\tif (isCollection) {\n\t\t\t\t\toptions.depth = 1\n\t\t\t\t} else {\n\t\t\t\t\toptions.depth = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\t\tconst error = options.error\n\t\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\t\toptions.textStatus = textStatus\n\t\t\toptions.errorThrown = errorThrown\n\t\t\tif (error) {\n\t\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t\t}\n\t\t}\n\n\t\t// Make the request, allowing the user to override any Ajax options.\n\t\tconst xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\t\tmodel.trigger('request', model, xhr, options)\n\t\treturn xhr\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport $ from 'jquery'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\nimport OC from './index.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t *\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @return {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tconst self = this\n\t\tconst dialogDeferred = new $.Deferred()\n\n\t\tconst getCroppedPreview = function(file) {\n\t\t\tconst deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tconst type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tconst blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tconst originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tconst image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tconst url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\t/**\n\t\t * @param img\n\t\t */\n\t\tfunction crop(img) {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tconst targetSize = 96\n\t\t\tconst width = img.width\n\t\t\tconst height = img.height\n\t\t\tlet x\n\t\t\tlet y\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tconst size = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tfunction resampleHermite(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tconst img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tconst img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tconst data = img.data\n\t\t\tconst data2 = img2.data\n\t\t\tconst ratio_w = W / W2\n\t\t\tconst ratio_h = H / H2\n\t\t\tconst ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tconst ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (let j = 0; j < H2; j++) {\n\t\t\t\tfor (let i = 0; i < W2; i++) {\n\t\t\t\t\tconst x2 = (i + j * W2) * 4\n\t\t\t\t\tlet weight\n\t\t\t\t\tlet weights = 0\n\t\t\t\t\tlet weights_alpha = 0\n\t\t\t\t\tlet gx_r = 0\n\t\t\t\t\tlet gx_g = 0\n\t\t\t\t\tlet gx_b = 0\n\t\t\t\t\tlet gx_a = 0\n\t\t\t\t\tconst center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (let yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tconst dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tconst center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tconst w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (let xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tlet dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tconst w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) {\n\t\t\t\t\t\t\t\t\t\tweight = weight * data[dx + 3] / 250\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tconst addConflict = function($conflicts, original, replacement) {\n\t\t\tconst $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tconst $originalDiv = $conflict.find('.original')\n\t\t\tconst $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tlet path = original.directory + '/' + original.name\n\t\t\tconst urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0,\n\t\t\t}\n\t\t\tlet previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(function(path) {\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t}, function() {\n\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t})\n\t\t\t// connect checkboxes with labels\n\t\t\tconst checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\n\t\tconst dialogName = 'oc-dialog-fileexists-content'\n\t\tconst dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tconst $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tconst count = $(dialogId + ' .conflict').length\n\t\t\tconst title = n(\n\t\t\t\t'core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count },\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tconst title = t('core', 'One file conflict')\n\t\t\t\tconst $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.'),\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tconst $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tconst buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}, {\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tconst $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\t/**\n\t\t\t\t *\n\t\t\t\t */\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tconst checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tconst $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tconst $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tconst defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tconst self = this\n\t\t\t$.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tconst iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tconst iframe = document.createElement('iframe')\n\t\tiframe.id = iframeId\n\t\tiframe.style.display = 'none'\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tiframe.src = src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr\n\n\t\tthis.iframe = iframe\n\t\tdocument.body.appendChild(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {string} type event type\n\t * @param {object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tlet i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\nimport Handlebars from 'handlebars'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport function registerMenu($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport function unregisterMenu($toggle, $menuEl) {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport function hideMenus(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport function showMenu($toggle, $menuEl, complete) {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n */\nexport default {\n /**\n * Displayes a \"Saving...\" message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n */\n startSaving(selector) {\n this.startAction(selector, t('core', 'Saving …'));\n },\n /**\n * Displayes a custom message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n * @param message - Plain text message to display (no HTML allowed)\n */\n startAction(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.remove('error');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n el.style.display = 'block';\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selectior for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status - is being used to decide whether the message is displayed as an error/success\n */\n finishedSaving(selector, response) {\n this.finishedAction(selector, response);\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status . Is being used to decide whether the message is displayed as an error/success\n */\n finishedAction(selector, response) {\n if (response.status === 'success') {\n this.finishedSuccess(selector, response.data.message);\n }\n else {\n this.finishedError(selector, response.data.message);\n }\n },\n /**\n * Displayes an success message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text success message to display (no HTML allowed)\n */\n finishedSuccess(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('error');\n el.classList.add('success');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n window.setTimeout(fadeOut, 3000);\n el.style.display = 'block';\n /**\n * Fades out the message element\n */\n function fadeOut() {\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n // eslint-disable-next-line @stylistic/exp-list-style\n const animation = el.animate?.([\n { opacity: 1 },\n { opacity: 0 },\n ], {\n duration: 900,\n fill: 'forwards',\n });\n if (animation) {\n animation.addEventListener('finish', () => {\n el.style.display = 'none';\n });\n }\n else {\n window.setTimeout(() => {\n el.style.display = 'none';\n }, 900);\n }\n }\n },\n /**\n * Displayes an error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text error message to display (no HTML allowed)\n */\n finishedError(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.add('error');\n el.style.display = 'block';\n },\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/** @typedef {import('jquery')} jQuery */\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tlogger.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tlogger.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/**\n * @deprecated 25.0.0 Use Vue based (`@nextcloud/vue`) settings components instead\n */\nexport default {\n\t_cachedGroups: null,\n\n\tescapeHTML: function(text) {\n\t\treturn text.toString()\n\t\t\t.split('&').join('&')\n\t\t\t.split('<').join('<')\n\t\t\t.split('>').join('>')\n\t\t\t.split('\"').join('"')\n\t\t\t.split('\\'').join(''')\n\t},\n\n\tasync rebuildNavigation() {\n\t\tconst { data } = await axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\treturn\n\t\t}\n\n\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\twindow.dispatchEvent(new Event('resize'))\n\t},\n\n\t/**\n\t * Setup selection box for group selection.\n\t *\n\t * Values need to be separated by a pipe \"|\" character.\n\t * (mostly because a comma is more likely to be used\n\t * for groups)\n\t *\n\t * @param $elements jQuery element (hidden input) to setup select2 on\n\t * @param {Array} [extraOptions] extra options hash to pass to select2\n\t * @param {Array} [options] extra options\n\t * @param {Array} [options.excludeAdmins] flag whether to exclude admin groups\n\t */\n\tsetupGroupsSelect: function($elements, extraOptions, options) {\n\t\tconst self = this\n\t\toptions = options || {}\n\t\tif ($elements.length > 0) {\n\t\t\t// Let's load the data and THEN init our select\n\t\t\t$.ajax({\n\t\t\t\turl: generateOcsUrl('cloud/groups/details'),\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tconst results = []\n\n\t\t\t\t\tif (data.ocs.data.groups && data.ocs.data.groups.length > 0) {\n\t\t\t\t\t\tdata.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\t\tif (!options.excludeAdmins || group.id !== 'admin') {\n\t\t\t\t\t\t\t\tresults.push({ id: group.id, displayname: group.displayname })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// note: settings are saved through a \"change\" event registered\n\t\t\t\t\t\t// on all input fields\n\t\t\t\t\t\t$elements.select2(_.extend({\n\t\t\t\t\t\t\tplaceholder: t('core', 'Groups'),\n\t\t\t\t\t\t\tallowClear: true,\n\t\t\t\t\t\t\tmultiple: true,\n\t\t\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\t\t\tseparator: '|',\n\t\t\t\t\t\t\tdata: { results, text: 'displayname' },\n\t\t\t\t\t\t\tinitSelection: function(element, callback) {\n\t\t\t\t\t\t\t\tconst groups = $(element).val()\n\t\t\t\t\t\t\t\tlet selection\n\t\t\t\t\t\t\t\tif (groups && results.length > 0) {\n\t\t\t\t\t\t\t\t\tselection = _.map(_.filter((groups || []).split('|').sort(), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn results.find(function(group) {\n\t\t\t\t\t\t\t\t\t\t\treturn group.id === groupId\n\t\t\t\t\t\t\t\t\t\t}) !== undefined\n\t\t\t\t\t\t\t\t\t}), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\t\t\t\t\tdisplayname: results.find(function(group) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn group.id === groupId\n\t\t\t\t\t\t\t\t\t\t\t}).displayname,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else if (groups) {\n\t\t\t\t\t\t\t\t\tselection = _.map((groups || []).split('|').sort(), function(groupId) {\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\t\t\t\t\tdisplayname: groupId,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(selection)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tformatResult: function(element) {\n\t\t\t\t\t\t\t\treturn self.escapeHTML(element.displayname)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tformatSelection: function(element) {\n\t\t\t\t\t\t\t\treturn self.escapeHTML(element.displayname)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tescapeMarkup: function(m) {\n\t\t\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\t\t\treturn m\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, extraOptions || {}))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Notification.show(t('core', 'Group list is empty'), { type: 'error' })\n\t\t\t\t\t\tlogger.debug(data)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function(data) {\n\t\t\t\t\tOC.Notification.show(t('core', 'Unable to retrieve the group list'), { type: 'error' })\n\t\t\t\t\tlogger.debug(data)\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\nimport moment from 'moment'\nimport logger from '../logger.js'\nimport OC from './index.js'\nimport History from './util-history.js'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tlet bytes\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x])\n\t\t\t\tconst bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here to include null == undefined\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoin,\n} from '@nextcloud/paths'\nimport {\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgenerateUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\nimport logger from '../logger.js'\nimport { isUserAdmin } from './admin.js'\nimport { appConfig } from './appconfig.js'\nimport Apps from './apps.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport { getCapabilities } from './capabilities.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport { debug } from './debug.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport L10N from './l10n.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport * as MimeType from './mimeType.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.ts'\nimport { getRequestToken } from './requesttoken.ts'\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport Settings from './settings.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\tApps,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\tMimeType,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * This is already handled by `interceptRequests` in `core/src/init.js`.\n\t *\n\t * @deprecated 33.0.0 - unused by Nextcloud and only a stub remains. Just remove usage.\n\t */\n\tregisterXHRForErrorProcessing: () => {},\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths: join,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t// Query string helpers\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\t/**\n\t * @deprecated 25.0.0 Use Vue based (`@nextcloud/vue`) settings components instead\n\t */\n\tSettings,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', (e) => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tlogger.info('OC.requestToken changed', { token: e.token })\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport function getCapabilities() {\n\tif (OC.debug) {\n\t\tlogger.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\t}\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Parses a URL query string into a JS map\n *\n * @param queryString - Query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return Object containing key/values matching the URL parameters\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function parse(queryString) {\n const params = new URLSearchParams(queryString);\n return Object.fromEntries(params.entries());\n}\n/**\n * Builds a URL query from a JS map.\n *\n * @param params - Object containing key/values matching the URL parameters\n * @return String containing a URL query (without question) mark\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function build(params) {\n if (!params) {\n return '';\n }\n const search = new URLSearchParams(params);\n return search.toString();\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport function linkToRemoteBase(service) {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport OC from '../OC/index.js'\nimport L10n from '../OC/l10n.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.1\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.1';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n if (this.id !== prevId) {\n this.trigger('changeId', this, prevId, options);\n }\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-bbf83d00]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\tmargin: 0;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n\\n\\t// Only show the error state if the user interacted with the login box\\n\\t:deep(input:invalid:not(:user-invalid)) {\\n\\t\\tborder-color: var(--color-border-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.password-less-login-form[data-v-25758ef3]{display:flex;flex-direction:column;gap:.5rem;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.password-less-login-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\tmargin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.reset-password-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: .5rem;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA\",\"sourcesContent\":[\"\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(2 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__alternative-logins {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 0.75rem;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\t\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\nconst dav = {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '' + propName + '>\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n' + this._renderPropSet(properties);\n body += '';\n\n return this.request('PROPPATCH', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Generates a MKCOL request.\n * If attributes are given, it will use an extended MKCOL request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n '\\n' + this._renderPropSet(properties);\n body +='';\n }\n\n return this.request('MKCOL', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Performs a HTTP request, and returns a Promise\n *\n * @param {string} method HTTP method\n * @param {string} url Relative or absolute url\n * @param {Object} headers HTTP headers as an object.\n * @param {string} body HTTP request body.\n * @param {string} responseType HTTP request response type.\n * @param {Object} options\n * @param {Function} options.onProgress progress callback\n * @return {Promise}\n */\n request : function(method, url, headers, body, responseType, options) {\n\n var self = this;\n var xhr = this.xhrProvider();\n headers = headers || {};\n responseType = responseType || \"\";\n \n if (this.userName) {\n headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password);\n // xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);\n }\n xhr.open(method, this.resolveUrl(url), true);\n var ii;\n for(ii in headers) {\n xhr.setRequestHeader(ii, headers[ii]);\n }\n xhr.responseType = responseType;\n\n if (options && typeof(options.onProgress) === 'function') {\n if (method === 'PUT' || method === 'POST') {\n xhr.upload.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n else {\n xhr.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n }\n\n // Work around for edge\n if (body === undefined) {\n xhr.send();\n } else {\n xhr.send(body);\n }\n\n return new Promise(function(fulfill, reject) {\n\n xhr.onreadystatechange = function() {\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n var resultBody = xhr.response;\n if (xhr.status === 207) {\n resultBody = self.parseMultiStatus(xhr.response);\n }\n\n fulfill({\n body: resultBody,\n status: xhr.status,\n xhr: xhr\n });\n\n };\n\n xhr.ontimeout = function() {\n\n reject(new Error('Timeout exceeded'));\n\n };\n\n });\n\n },\n\n /**\n * Returns an XMLHttpRequest object.\n *\n * This is in its own method, so it can be easily overridden.\n *\n * @return {XMLHttpRequest}\n */\n xhrProvider : function() {\n\n return new XMLHttpRequest();\n\n },\n\n /**\n * Parses a property node.\n *\n * Either returns a string if the node only contains text, or returns an\n * array of non-text subnodes.\n *\n * @param {Object} propNode node to parse\n * @return {string|Array} text content as string or array of subnodes, excluding text nodes\n */\n _parsePropNode: function(propNode) {\n var content = null;\n if (propNode.childNodes && propNode.childNodes.length > 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nmodule.exports = {\n dav,\n Client: dav.Client,\n}\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.9';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy45JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n // Using delete is slow\n instance.helpers[helperName] = undefined;\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFOztBQUVmLGNBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO0tBQzFDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIC8vIFVzaW5nIGRlbGV0ZSBpcyBzbG93XG4gICAgICBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n var newContext = [];\n var iterator = context[Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkUsWUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFlBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZXh0W1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgY29uc3QgbmV3Q29udGV4dCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IGNvbnRleHRbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICBmb3IgKGxldCBpdCA9IGl0ZXJhdG9yLm5leHQoKTsgIWl0LmRvbmU7IGl0ID0gaXRlcmF0b3IubmV4dCgpKSB7XG4gICAgICAgICAgbmV3Q29udGV4dC5wdXNoKGl0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoY29udGV4dCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LlxuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHJldCA9IGludmVyc2UodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n // Create an object with \"null\"-prototype to avoid truthy results on\n // prototype properties.\n var propertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n propertyWhiteList['__proto__'] = false;\n _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);\n\n var methodWhiteList = Object.create(null);\n methodWhiteList['constructor'] = false;\n methodWhiteList['__defineGetter__'] = false;\n methodWhiteList['__defineSetter__'] = false;\n methodWhiteList['__lookupGetter__'] = false;\n methodWhiteList['__lookupSetter__'] = false;\n _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);\n\n return {\n properties: {\n whitelist: propertyWhiteList,\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: methodWhiteList,\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FCQUF1QixVQUFVOztzQkFDZCxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7OztBQUd2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRTlDLG1CQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxnQkFBTyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7QUFFakUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGlCQUFlLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDNUMsaUJBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGdCQUFPLGVBQWUsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs7QUFFNUQsU0FBTztBQUNMLGNBQVUsRUFBRTtBQUNWLGVBQVMsRUFBRSxpQkFBaUI7QUFDNUIsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLGVBQWU7QUFDMUIsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLHdCQUFPLEdBQUcsQ0FDUixPQUFPLEVBQ1AsaUVBQStELFlBQVksb0lBQ0gsb0hBQzJDLENBQ3BILENBQUM7R0FDSDtDQUNGOztBQUVNLFNBQVMscUJBQXFCLEdBQUc7QUFDdEMsUUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFlBQVksRUFBSTtBQUNwRCxXQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0dBQ3ZDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InByb3RvLWFjY2Vzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGFuIG9iamVjdCB3aXRoIFwibnVsbFwiLXByb3RvdHlwZSB0byBhdm9pZCB0cnV0aHkgcmVzdWx0cyBvblxuICAvLyBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAgY29uc3QgcHJvcGVydHlXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG9cbiAgcHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG4gIGV4dGVuZChwcm9wZXJ0eVdoaXRlTGlzdCwgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvUHJvcGVydGllcyk7XG5cbiAgY29uc3QgbWV0aG9kV2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgbWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVTZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBTZXR0ZXJfXyddID0gZmFsc2U7XG4gIGV4dGVuZChtZXRob2RXaGl0ZUxpc3QsIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgd2hpdGVsaXN0OiBwcm9wZXJ0eVdoaXRlTGlzdCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b1Byb3BlcnRpZXNCeURlZmF1bHRcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgIHdoaXRlbGlzdDogbWV0aG9kV2hpdGVMaXN0LFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvTWV0aG9kc0J5RGVmYXVsdFxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIHByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5tZXRob2RzLCBwcm9wZXJ0eU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wucHJvcGVydGllcywgcHJvcGVydHlOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdID09PSB0cnVlO1xuICB9XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlO1xuICB9XG4gIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSAhPT0gdHJ1ZSkge1xuICAgIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IHRydWU7XG4gICAgbG9nZ2VyLmxvZyhcbiAgICAgICdlcnJvcicsXG4gICAgICBgSGFuZGxlYmFyczogQWNjZXNzIGhhcyBiZWVuIGRlbmllZCB0byByZXNvbHZlIHRoZSBwcm9wZXJ0eSBcIiR7cHJvcGVydHlOYW1lfVwiIGJlY2F1c2UgaXQgaXMgbm90IGFuIFwib3duIHByb3BlcnR5XCIgb2YgaXRzIHBhcmVudC5cXG5gICtcbiAgICAgICAgYFlvdSBjYW4gYWRkIGEgcnVudGltZSBvcHRpb24gdG8gZGlzYWJsZSB0aGUgY2hlY2sgb3IgdGhpcyB3YXJuaW5nOlxcbmAgK1xuICAgICAgICBgU2VlIGh0dHBzOi8vaGFuZGxlYmFyc2pzLmNvbS9hcGktcmVmZXJlbmNlL3J1bnRpbWUtb3B0aW9ucy5odG1sI29wdGlvbnMtdG8tY29udHJvbC1wcm90b3R5cGUtYWNjZXNzIGZvciBkZXRhaWxzYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TG9nZ2VkUHJvcGVydGllcygpIHtcbiAgT2JqZWN0LmtleXMobG9nZ2VkUHJvcGVydGllcykuZm9yRWFjaChwcm9wZXJ0eU5hbWUgPT4ge1xuICAgIGRlbGV0ZSBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n options.hooks = this.hooks;\n options.protoAccessControl = this.protoAccessControl;\n\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return result;\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = {};\n addHelpers(mergedHelpers, env.helpers, container);\n addHelpers(mergedHelpers, options.helpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = lookupOwnProperty(options.data, 'partial-block');\n } else {\n partial = lookupOwnProperty(options.partials, options.name);\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = lookupOwnProperty(options.partials, partial);\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction lookupOwnProperty(obj, name) {\n if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {\n return obj[name];\n }\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction addHelpers(mergedHelpers, helpers, container) {\n if (!helpers) return;\n Object.keys(helpers).forEach(function (helperName) {\n var helper = helpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n options.lookupProperty = lookupProperty;\n return options;\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3pFLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUNuRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ2hELFNBQU8sK0JBQVcsTUFBTSxFQUFFLFVBQUEsT0FBTyxFQUFJO0FBQ25DLFdBQU8sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBQ3hDLFdBQU8sT0FBTyxDQUFDO0dBQ2hCLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucy5ob29rcyA9IHRoaXMuaG9va3M7XG4gICAgb3B0aW9ucy5wcm90b0FjY2Vzc0NvbnRyb2wgPSB0aGlzLnByb3RvQWNjZXNzQ29udHJvbDtcblxuICAgIGxldCByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmluZGVudCkge1xuICAgICAgICBsZXQgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmICghbGluZXNbaV0gJiYgaSArIDEgPT09IGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdUaGUgcGFydGlhbCAnICtcbiAgICAgICAgICBvcHRpb25zLm5hbWUgK1xuICAgICAgICAgICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSwgbG9jKSB7XG4gICAgICBpZiAoIW9iaiB8fCAhKG5hbWUgaW4gb2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmosIHtcbiAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250YWluZXIubG9va3VwUHJvcGVydHkob2JqLCBuYW1lKTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSB7fTtcbiAgICAgIGFkZEhlbHBlcnMobWVyZ2VkSGVscGVycywgZW52LmhlbHBlcnMsIGNvbnRhaW5lcik7XG4gICAgICBhZGRIZWxwZXJzKG1lcmdlZEhlbHBlcnMsIG9wdGlvbnMuaGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIG9wdGlvbnMubmFtZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIHBhcnRpYWwpO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGxvb2t1cE93blByb3BlcnR5KG9iaiwgbmFtZSkge1xuICBpZiAob2JqICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIG5hbWUpKSB7XG4gICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKFxuICAgICAgcHJvZyxcbiAgICAgIHByb3BzLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgZGVwdGhzICYmIGRlcHRoc1swXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cblxuZnVuY3Rpb24gYWRkSGVscGVycyhtZXJnZWRIZWxwZXJzLCBoZWxwZXJzLCBjb250YWluZXIpIHtcbiAgaWYgKCFoZWxwZXJzKSByZXR1cm47XG4gIE9iamVjdC5rZXlzKGhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IGhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgb3B0aW9ucy5sb29rdXBQcm9wZXJ0eSA9IGxvb2t1cFByb3BlcnR5O1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9KTtcbn1cbiJdfQ==\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","const map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tconst id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tconst e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","const deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority ||= 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = (body) => {\n\tvar mod;\n\treturn () => {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => (chunkId + \"-\" + chunkId + \".js?v=\" + {\"3108\":\"71c2314a13f8bd9bb9f3\",\"3252\":\"5cdefe70d09ea015d504\",\"4227\":\"44c552cb6722d4c29085\",\"4941\":\"cbb590bc81c3552fe3fc\",\"7859\":\"8b3b7c211b6d4a439761\",\"8374\":\"4f24f83d985c39aa0044\",\"8689\":\"5bbad32eaeecdbe5bbc4\",\"8826\":\"992dcbc4edbba49089e8\"}[chunkId] + \"\");","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop));","const inProgress = {};\nconst dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1418;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, \"\").replace(/\\/[^/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nconst installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nconst chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] ||= [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(67919)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["multiMatcher","RegExp","hexPair","parsePercentByte","input","position","codePointAt","length","digits","slice","test","byte","Number","parseInt","next","utf8SequenceLength","isContinuationByte","decode","decodeURIComponent","output","charAt","firstByte","sequenceLength","end","validSequence","index","nextByte","encodedSequence","splitOnFirst","string","separator","TypeError","separatorIndex","indexOf","base_decode","value","options","encodedURI","replaceMap","match","exec","result","entries","Object","keys","key","replace","customDecodeURIComponent","decodeUriComponent","keysSorter","Array","isArray","sort","a","b","map","parseValue","type","toLowerCase","arrayFormat","isNaN","trim","parseBooleans","parseNumbers","Symbol","login_LoginButtonvue_type_script_lang_js","name","components","ArrowRight","A","NcButton","props","String","default","t","valueLoading","loading","Boolean","required","invertedColors","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","LoginButtonvue_type_style_index_0_id_bbf83d00_prod_lang_scss_scoped_true","locals","LoginButton","componentNormalizer","_vm","this","_c","_self","attrs","variant","wide","disabled","on","click","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","auth","computed","userNameInputLengthIs255","user","userInputHelperText","login_LoginFormvue_type_script_lang_js","NcCheckboxRadioSwitch","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","remembermeAllowed","directLogin","emailStates","setup","l10n_dist","Tl","headlineText","productName","OC","theme","undefined","sanitize","escape","loginTimeout","loadState","requestToken","window","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","data","password","rememberme","visible","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","imagePath","loginActionUrl","generateUrl","emailEnabled","every","state","loginText","watch","mounted","$refs","inputField","focus","methods","updateUsername","submit","event","preventDefault","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true_options","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true","LoginForm","ref","method","action","title","_e","heading","_l","message","class","id","alt","src","staticStyle","clear","shake","label","maxlength","autocapitalize","spellchecking","autocomplete","error","change","model","callback","$$v","expression","domProps","WebAuthnError","Error","constructor","code","cause","super","defineProperty","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","bufferToBase64URLString_bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer_base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn_browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","globalThis","PublicKeyCredential","_browserSupportsWebAuthnAutofillInternals","toPublicKeyCredentialDescriptor_toPublicKeyCredentialDescriptor","descriptor","transports","attachments","toAuthenticatorAttachment_toAuthenticatorAttachment","attachment","vue_material_design_icons_LockOpenvue_type_script_lang_js","emits","fillColor","size","LockOpen","_b","role","$attrs","fill","width","height","viewBox","d","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","NoValidCredentials","login_PasswordLessLoginFormvue_type_script_lang_js","defineComponent","InformationIcon","InformationOutline","LockOpenIcon","NcEmptyContent","isHttps","isLocalhost","supportsWebauthn","browserSupportsWebAuthn","validCredentials","authenticate","loginForm","checkValidity","debug","params","async","loginName","url","Axios","post","allowCredentials","optionsJSON","challenge","console","warn","useBrowserAutofill","verifyBrowserAutofillInput","publicKey","getOptions","Promise","resolve","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","document","querySelectorAll","mediation","credential","navigator","credentials","get","err","AbortSignal","effectiveDomain","location","hostname","rpId","identifyAuthenticationError","rawId","response","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","JSON","stringify","finishAuthentication","then","defaultRedirectUrl","href","getBaseUrl","catch","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true_options","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true","PasswordLessLoginForm_component","_setupProxy","apply","arguments","placeholder","description","PasswordLessLoginForm","login_ResetPasswordvue_type_script_lang_ts","resetPasswordLink","axios","status","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true_options","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true","ResetPassword_component","ResetPassword","login_UpdatePasswordvue_type_script_lang_js","resetPasswordTarget","encrypted","proceed","encryption","msg","e","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css_options","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css","UpdatePassword_component","for","directives","rawName","spellcheck","target","composing","checked","_i","$$a","$$el","$$c","$$i","concat","warning","UpdatePassword","query","validateArrayFormatSeparator","arrayFormatSeparator","types","create","formatter","accumulator","push","newValue","includes","split","item","arrayValue","parserForArrayFormat","returnValue","parameterStart","firstSeparator","parameter","parameter_","replaceAll","key2","value2","typeOption","values","join","reduce","queryString","search","localStorage","sessionStorage","indexedDBList","indexedDB","databases","deleteDatabase","wipeBrowserStorages","views_Loginvue_type_script_lang_js","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","protocol","hideLoginForm","passwordResetFinished","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss_options","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss","Login","mode","done","alternativeLogin","isAdmin","_oc_isadmin","appConfig","oc_appconfig","dynamicSlideToggleEnabled","Apps","enableDynamicSlideToggle","$el","$","removeClass","show","trigger","hide","addClass","apps","OC_appswebroots","_oc_appswebroots","methodMap","update","patch","delete","read","parsePropFindResult","davProperties","_","subResult","propStat","properties","propKey","parseIdFromLocation","queryPos","substr","parts","pop","isSuccessStatus","callPropPatch","client","headers","propPatch","changedProp","convertModelAttributesToDavProperties","changed","success","toJSON","Backbone","VendorBackbone","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requesttoken","propFind","depth","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","isCollection","Collection","hasInnerCollection","usePUT","collection","urlError","processData","prototype","call","textStatus","errorThrown","context","OC_backbone","OC_config","_oc_config","rawUid","getElementsByTagName","getAttribute","displayName","currentUser","_oc_debug","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","text","modal","OK_BUTTON","info","confirm","confirmDestructive","buttons","DialogBuilder","setName","setText","setButtons","clicked","_getLegacyButtons","confirmHtml","setHTML","prompt","spawnDialog","defineAsyncComponent","all","__webpack_require__","inputName","isPassword","args","filepicker","multiselect","mimetype","_modal","FilePickerType","Choose","path","legacyCallback","getPath","node","root","startsWith","nodes","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","displayname","basename","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","attributes","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","self","dialogDeferred","addConflict","$conflicts","$conflict","find","clone","$originalDiv","$replacementDiv","Util","humanFileSize","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","css","deferred","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","img","canvas","createElement","Math","min","getContext","drawImage","W","H","W2","H2","round","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","resampleHermite","toDataURL","crop","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","dialogs","getRequestToken","head","dataset","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","style","display","appendChild","source","onmessage","parse","listen","fallBackCallBack","lastLength","addEventListener","eventsource","l10n","load","loadTranslations","register","kz","_unregister","unregister","translate","translatePlural","Handlebars","app","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","menuSpeed","iconCache","Map","mimeType","MimeTypeList","aliases","has","gotIcon","folder","themes","getRootUrl","getMimeTypeIcon","files","OCA","Theming","cacheBuster","set","clearIconCache","startSaving","selector","startAction","el","querySelector","HTMLElement","textContent","classList","getAnimations","animation","finishedSaving","finishedAction","finishedSuccess","finishedError","add","setTimeout","animate","opacity","duration","notification","updatableNotification","getDefaultNotificationFunction","setDefault","$row","each","toastify","hideToast","showHtml","html","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","toString","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","password_confirmation","requiresPasswordConfirmation","isPasswordConfirmationRequired","requirePasswordConfirmation","rejectCallback","confirmPassword","plugins","_plugins","targetName","plugin","getPlugins","attach","targetObject","detach","settings","_cachedGroups","rebuildNavigation","generateOcsUrl","ocs","meta","statuscode","emit","dispatchEvent","Event","setupGroupsSelect","$elements","extraOptions","dataType","groups","group","excludeAdmins","select2","allowClear","multiple","toggleSelect","initSelection","element","val","selection","groupId","formatResult","formatSelection","escapeMarkup","m","Notification","_theme","util_history","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","userAgent","patterns","pattern","ii","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","util","History","files_dist","v7","computerFileSize","s","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","top","left","visibility","overflow","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","isCookieSetToValue","cookies","cookie","webroot","_oc_webroot","lastIndexOf","OC_webroot","src_OC","coreApps","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","appswebroots","config","Config","mimeType_namespaceObject","isUserAdmin","L10N","registerXHRForErrorProcessing","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","is","slideToggle","showMenu","unregisterMenu","off","paths_dist","P8","encodePath","O0","dirname","pD","isSamePath","ys","joinPaths","getCanonicalLocale","lO","getLocale","JK","Z0","URLSearchParams","fromEntries","PasswordConfirmation","Plugins","Settings","generateFilePath","router_dist","Jv","getRootPath","d0","linkTo","uM","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","token","Nextcloud","L10n","Vue","mixin","extend","LoginView","$mount","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","resp","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","merge","addOptions","splice","array","at","tail","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","iterator","kind","_collection","_kind","_index","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","clearInterval","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","module","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","sources","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","ch","_XML_CHAR_MAP","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","_escapeXml","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","readyState","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","parseUrl","subString","scheme","host","port","propertyName","_interopRequireDefault","__esModule","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","SafeString","Exception","escapeExpression","VM","template","spec","inst","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","log","registerHelper","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","createFrame","_decoratorsInline2","container","ret","errorProps","loc","line","endLineNumber","column","endColumn","tmp","idx","captureStackTrace","lineNumber","nop","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","hooks","inverse","contextPath","appendContextPath","priorKey","execIteration","field","blockParams","newContext","it","conditional","includeZero","level","lookupProperty","createProtoAccessControl","runtimeOptions","propertyWhiteList","allowedProtoProperties","methodWhiteList","allowedProtoMethods","whitelist","defaultValue","allowProtoPropertiesByDefault","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","protoAccessControlForType","loggedProperties","logUnexpecedPropertyAccessOnce","checkWhiteList","wrapHelper","helper","transformOptionsFn","lookupLevel","levelMap","_len","_key","__defineGetter__","__magic__","$Handlebars","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","lookup","depths","len","lambda","invokePartial","resolvePartial","compile","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","_parent","mergeIfNeeded","common","nullContext","seal","noop","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","addHelpers","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","lookupOwnProperty","currentPartialBlock","partialBlock","Function","_internalWrapHelper","prog","currentDepths","passLookupPropertyOption","toHTML","possible","badChars","escapeChar","object","frame","chr","webpackContext","req","webpackContextResolve","o","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","r","getter","cw","mod","definition","binding","f","chunkId","promises","u","hasOwn","inProgress","dataWebpackPrefix","script","needAttach","scripts","charset","nc","onScriptComplete","onerror","clearTimeout","doneFns","parentNode","toStringTag","nmd","paths","dn","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","toUpperCase","baseURI","installedChunks","installedChunkData","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/files-main.js.license b/dist/files-main.js.license
index cd1ff9c9470c0..f61d6e5c52517 100644
--- a/dist/files-main.js.license
+++ b/dist/files-main.js.license
@@ -455,7 +455,7 @@ This file is generated from multiple sources. Included packages:
- version: 6.5.0
- license: MIT
- query-string
- - version: 9.5.0
+ - version: 9.5.1
- license: MIT
- rehype-external-links
- version: 3.0.0
diff --git a/dist/files-main.js.map b/dist/files-main.js.map
index 527d55f6ad2b7..9b1cfd3ec69ab 100644
--- a/dist/files-main.js.map
+++ b/dist/files-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-main.js?v=7355b8e5aa389a086d2c","mappings":"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","sources":["webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/node_modules/vue2-teleport/dist/teleport.esm.js","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?5dae","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=template&id=64cece03","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Reload.vue?2e35","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=template&id=39a07256","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ViewGridOutline.vue?0216","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=template&id=0c2dec16","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/composables/useFileListWidth.ts","webpack:///nextcloud/apps/files/src/composables/useViews.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/services/DropServiceUtils.ts","webpack:///nextcloud/apps/files/src/services/DropService.ts","webpack:///nextcloud/apps/files/src/store/dragging.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/uploader.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?12ea","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/TrayArrowDown.vue?a897","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=template&id=5dbf2618","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?6c5d","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?a2e0","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue","webpack:///nextcloud/apps/files/src/store/filters.ts","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?5f13","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?9837","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=16833c02","webpack:///nextcloud/apps/files/src/mixins/actionsMixin.ts","webpack:///nextcloud/apps/files/src/utils/actionUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?463a","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?3a01","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?7b52","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryCheckbox.vue?a18b","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?367f","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?98a4","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountGroup.vue?1c79","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=template&id=fa2b1464","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountPlus.vue?2818","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=template&id=53a26aa0","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FolderOpen.vue?6818","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=template&id=ae0c5fc0","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Key.vue?157c","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=template&id=499b3412","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/NetworkOutline.vue?5a96","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=template&id=8f00cb50","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=3cc1493c","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?1937","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?949d","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?63d3","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?62c6","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?8603","webpack://nextcloud/./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?75c1","webpack:///nextcloud/apps/files/src/composables/usePreviewImage.ts","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryPreview.vue?8c1f","webpack:///nextcloud/apps/files/src/composables/useFileActions.ts","webpack:///nextcloud/apps/files/src/composables/useRouteParameters.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileMultiple.vue?6e9d","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=template&id=15fca808","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?bb2d","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?36f6","webpack:///nextcloud/apps/files/src/utils/dragUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntryMixin.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntryGrid.vue?bb8e","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?d193","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?e408","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?feab","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?c04b","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?fa4c","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?bd62","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?9494","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?d742","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?e364","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?9768","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?b1c9","webpack:///nextcloud/apps/files/src/components/VirtualList.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/VirtualList.vue","webpack://nextcloud/./apps/files/src/components/VirtualList.vue?37fa","webpack:///nextcloud/apps/files/src/composables/useFileListHeaders.ts","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?db8d","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?e7cf","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/composables/useFileListActions.ts","webpack:///nextcloud/apps/files/src/store/sidebar.ts","webpack:///nextcloud/apps/files/src/utils/filesViews.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/apps/files/src/utils/davUtils.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesList.vue?8fad","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CogOutline.vue?045c","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=template&id=96fed70c","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue","webpack:///nextcloud/apps/files/src/services/FolderTree.ts","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationListItem.vue?adcc","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?a941","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?110b","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/composables/useBeforeNavigation.ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationSearch.vue?a917","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPieOutline.vue?0c3f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=template&id=a29cc97a","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?0a9c","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?f01b","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?3c4f","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?4bf8","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?afdf","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?09e9","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?ccbe","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?7317","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesAppSettings.vue?38e4","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?d3aa","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?e4aa","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?0f62","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?bfcc","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?4ce1","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?e16e","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?9144","webpack:///nextcloud/apps/files/src/FilesApp.vue","webpack:///nextcloud/apps/files/src/composables/useHotKeys.ts","webpack:///nextcloud/apps/files/src/FilesApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/FilesApp.vue?597e","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/apps/files/src/router/router.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=style&index=0&id=dd56de22&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-DPkUyJ8g.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/concatenation wrap","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","//\n//\n//\n//\n//\n//\n\nvar script = {\n name: 'teleport',\n props: {\n to: {\n type: [String, HTMLElement],\n required: true,\n },\n where: {\n type: String,\n default: 'after',\n },\n disabled: Boolean,\n },\n data: function data() {\n return {\n nodes: [],\n waiting: false,\n observer: null,\n // The primary target holds the live (reactive) nodes; any additional\n // matching targets hold static deep clones (see `move`).\n parents: [],\n clones: [],\n moved: false,\n };\n },\n watch: {\n to: 'maybeMove',\n where: 'maybeMove',\n disabled: function disabled(value) {\n var this$1 = this;\n\n if (value) {\n this.disable();\n // Ensure all event done.\n this.$nextTick(function () {\n this$1.teardownObserver();\n });\n } else {\n this.bootObserver();\n this.move();\n }\n },\n },\n mounted: function mounted() {\n // Store a reference to the nodes\n this.nodes = Array.from(this.$el.childNodes);\n\n if (!this.disabled) {\n this.bootObserver();\n }\n\n // Move slot content to target\n this.maybeMove();\n },\n beforeDestroy: function beforeDestroy() {\n // Fix nodes reference\n this.nodes = this.getComponentChildrenNode();\n\n // Move back\n this.disable();\n\n // Stop observing\n this.teardownObserver();\n },\n computed: {\n classes: function classes() {\n if (this.disabled) {\n return ['teleporter'];\n }\n\n return ['teleporter', 'hidden'];\n },\n },\n methods: {\n maybeMove: function maybeMove() {\n if (!this.disabled) {\n this.move();\n }\n },\n move: function move() {\n var this$1 = this;\n\n this.waiting = false;\n\n // `to` may be a single element or a selector matching one or many nodes.\n var parents = this.to instanceof HTMLElement\n ? [this.to]\n : Array.from(document.querySelectorAll(this.to));\n\n if (parents.length === 0) {\n this.disable();\n\n this.waiting = true;\n\n return;\n }\n\n // Drop clones from any previous placement. This never touches our host\n // element, so it can't retrigger the childNodes observer.\n this.removeClones();\n\n parents.forEach(function (parent, index) {\n // The first target receives the real nodes (kept reactive). Moving them\n // straight into the target — never back through `this.$el` — keeps the\n // observers from looping. Extra targets receive static deep clones,\n // since a node can only live in one place.\n var fragment = index === 0\n ? this$1.getFragment()\n : this$1.getFragment(this$1.nodes.map(function (node) { return node.cloneNode(true); }), this$1.clones);\n\n if (this$1.where === 'before') {\n parent.prepend(fragment);\n } else {\n parent.appendChild(fragment);\n }\n });\n\n this.parents = parents;\n },\n disable: function disable() {\n this.removeClones();\n\n if (this.parents.length > 0) {\n // Pull the live nodes back into our (hidden) host element. Resetting\n // `parents` first keeps a follow-up disable() from churning the host.\n this.parents = [];\n this.$el.appendChild(this.getFragment());\n }\n },\n removeClones: function removeClones() {\n this.clones.forEach(function (node) { return node.parentNode && node.parentNode.removeChild(node); });\n this.clones = [];\n },\n // Using a fragment is faster because it'll trigger only a single reflow\n // See https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment\n getFragment: function getFragment(nodes, track) {\n if ( nodes === void 0 ) nodes = this.nodes;\n if ( track === void 0 ) track = null;\n\n var fragment = document.createDocumentFragment();\n\n nodes.forEach(function (node) {\n if (track) {\n track.push(node);\n }\n fragment.appendChild(node);\n });\n\n return fragment;\n },\n onMutations: function onMutations(mutations) {\n var this$1 = this;\n\n // Makes sure the move operation is only done once\n var shouldMove = false;\n\n for (var i = 0; i < mutations.length; i++) {\n var mutation = mutations[i];\n // Ignore nodes we manage ourselves (live nodes + clones) so our own\n // DOM writes don't retrigger a move.\n var filteredAddedNodes = Array.from(mutation.addedNodes)\n .filter(function (node) { return !this$1.nodes.includes(node) && !this$1.clones.includes(node); });\n var removedParent = Array.from(mutation.removedNodes).some(function (node) { return this$1.parents.includes(node); });\n\n // A target we were using disappeared (re-distribute to whatever still\n // matches, or fall back to waiting), or we're waiting and something new\n // showed up (a target may have appeared). move() handles both.\n if (removedParent || (this.waiting && filteredAddedNodes.length > 0)) {\n shouldMove = true;\n }\n }\n\n if (shouldMove) {\n this.move();\n }\n },\n bootObserver: function bootObserver() {\n var this$1 = this;\n\n if (this.observer) {\n return;\n }\n\n this.observer = new MutationObserver(function (mutations) { return this$1.onMutations(mutations); });\n\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false,\n });\n\n if (this.childObserver) {\n return;\n }\n // watch childNodes change\n this.childObserver = new MutationObserver(function (mutations) {\n var childChangeRecord = mutations.find(function (i) { return i.target === this$1.$el; });\n if (childChangeRecord) {\n // Remove old nodes before update position.\n this$1.nodes.forEach(function (node) { return node.parentNode && node.parentNode.removeChild(node); });\n this$1.nodes = this$1.getComponentChildrenNode();\n this$1.maybeMove();\n }\n });\n\n this.childObserver.observe(this.$el, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n });\n },\n teardownObserver: function teardownObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n if (this.childObserver) {\n this.childObserver.disconnect();\n this.childObserver = null;\n }\n },\n getComponentChildrenNode: function getComponentChildrenNode() {\n return this.$vnode.componentOptions.children\n .map(function (i) { return i.elm; })\n .filter(function (i) { return i; });\n },\n },\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nvar isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return function (id, style) { return addStyle(id, style); };\r\n}\r\nvar HEAD;\r\nvar styles = {};\r\nfunction addStyle(id, css) {\r\n var group = isOldIE ? css.media || 'default' : id;\r\n var style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n var code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n { style.element.setAttribute('media', css.media); }\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n var index = style.ids.size - 1;\r\n var textNode = document.createTextNode(code);\r\n var nodes = style.element.childNodes;\r\n if (nodes[index])\r\n { style.element.removeChild(nodes[index]); }\r\n if (nodes.length)\r\n { style.element.insertBefore(textNode, nodes[index]); }\r\n else\r\n { style.element.appendChild(textNode); }\r\n }\r\n }\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { class: _vm.classes }, [_vm._t(\"default\")], 2)\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n var __vue_inject_styles__ = function (inject) {\n if (!inject) { return }\n inject(\"data-v-4d124d9a_0\", { source: \".hidden[data-v-4d124d9a] {\\n visibility: hidden;\\n display: none;\\n}\", map: undefined, media: undefined });\n\n };\n /* scoped */\n var __vue_scope_id__ = \"data-v-4d124d9a\";\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n createInjector,\n undefined,\n undefined\n );\n\n// Taken from https://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n\n// Declare install function executed by Vue.use()\nfunction install (Vue) {\n if (install.installed) { return; }\n\n install.installed = true;\n Vue.component('Teleport', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n install: install,\n};\n\n// Auto-install when vue is found (eg. in browser via ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./ViewGridOutline.vue?vue&type=template&id=0c2dec16\"\nimport script from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && !_vm.isNarrow,\"force-menu\":\"\",\"open\":_vm.isMenuOpen,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"update:open\":function($event){_vm.isMenuOpen=$event},\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"menu-icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.isMenuOpen ? _vm.mdiChevronUp : _vm.mdiChevronDown}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"default\",fn:function(){return [(_vm.canShare)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountPlus}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Share'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.$emit('reload')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiReload}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Reload content'))+\"\\n\\t\\t\\t\")])]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed, onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst isWide = computed(() => width.value >= 1024);\nconst isMedium = computed(() => width.value >= 512 && width.value < 1024);\nconst isNarrow = computed(() => width.value < 512);\nconst observer = new ResizeObserver(([element]) => {\n if (!element) {\n return;\n }\n const contentBoxSize = element.contentBoxSize?.[0];\n if (contentBoxSize) {\n // use the newer `contentBoxSize` property if available\n width.value = contentBoxSize.inlineSize;\n }\n else {\n // fall back to `contentRect`\n width.value = element.contentRect.width;\n }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n const el = document.querySelector('#app-content-vue') ?? document.body;\n if (el !== element) {\n // if already observing: stop observing the old element\n if (element) {\n observer.unobserve(element);\n }\n // observe the new element if needed\n observer.observe(el);\n element = el;\n }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n // Update the observer when the component is mounted (e.g. because this is the files app)\n onMounted(updateObserver);\n // Update the observer also in setup context, so we already have an initial value\n updateObserver();\n return {\n width: readonly(width),\n isWide,\n isMedium,\n isNarrow,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getNavigation } from '@nextcloud/files';\nimport { computed, shallowRef } from 'vue';\nconst allViews = shallowRef([]);\nconst visibleViews = computed(() => allViews.value?.filter((view) => !view.hidden) ?? []);\nlet initialized = false;\n/**\n * Get all currently registered views.\n * Unline `Navigation.views` this is reactive and will update when new views are added or existing views are removed.\n */\nexport function useViews() {\n if (!initialized) {\n const navigation = getNavigation();\n navigation.addEventListener('update', () => {\n allViews.value = [...navigation.views];\n });\n allViews.value = [...navigation.views];\n initialized = true;\n }\n return allViews;\n}\n/**\n * Get all non-hidden views.\n */\nexport function useVisibleViews() {\n useViews();\n return visibleViews;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n return nodes.every((node) => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { n, t } from '@nextcloud/l10n';\nimport { basename, join } from '@nextcloud/paths';\nimport { getConflicts } from '@nextcloud/upload';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n id: ACTION_COPY_MOVE,\n order: 15,\n displayName({ nodes }) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled({ nodes, view }) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(context) {\n return this.execBatch(context)[0];\n },\n async execBatch({ nodes, folder }) {\n const action = getActionForNodes(nodes);\n const target = await openFilePickerForAction(action, folder.path, nodes);\n // Handle cancellation silently\n if (target === false) {\n return nodes.map(() => null);\n }\n try {\n const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n return result.map(() => true);\n }\n catch (error) {\n logger.error(`Failed to ${target.action} node`, { nodes, error });\n if (error instanceof HintException && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return nodes.map(() => null);\n }\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n return nodes.map(() => false);\n }\n },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n const nameMapping = new Map();\n // Check for conflicts if we do not want to overwrite\n if (!overwrite) {\n const otherNodes = (await getContents(destination.path)).contents;\n const conflicts = getConflicts(nodes, otherNodes);\n const nodesToRename = [];\n if (conflicts.length > 0) {\n if (method === MoveCopyAction.MOVE) {\n // Let the user choose what to do with the conflicting files\n const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n const result = await openConflictPicker(destination.path, conflicts, content, { overwriting: true });\n if (!result) {\n // User cancelled\n return;\n }\n nodes = nodes.filter((n) => !result.skipped.includes(n));\n nodesToRename.push(...result.renamed);\n }\n else {\n // for COPY we always rename conflicting files\n nodesToRename.push(...conflicts);\n }\n const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n for (const node of nodesToRename) {\n const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n nameMapping.set(node.source, newName);\n usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n }\n }\n }\n const actionFinished = createLoadingNotification(method, nodes.map((node) => node.displayname), join(destination.dirname, destination.displayname).replace(/^\\//, ''));\n const queue = getQueue();\n try {\n for (const node of nodes) {\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n yield queue.add(async () => {\n try {\n const client = getClient();\n const currentPath = join(defaultRootPath, node.path);\n const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n if (method === MoveCopyAction.COPY) {\n await client.copyFile(currentPath, destinationPath);\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(destinationPath, {\n details: true,\n data: getDefaultPropfind(),\n });\n emit('files:node:created', resultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, destinationPath);\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n if (error.response?.status === 412) {\n throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new HintException(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new HintException(t('files', 'The file does not exist anymore'));\n }\n else if ('response' in error && error.response) {\n const parser = new DOMParser();\n const text = await error.response.text();\n const message = parser.parseFromString(text ?? '', 'text/xml')\n .querySelector('message')?.textContent;\n if (message) {\n throw new HintException(message);\n }\n }\n throw error;\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n }\n }\n finally {\n actionFinished();\n }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n const text = mode === MoveCopyAction.MOVE\n ? (sources.length === 1\n ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Moving %n file to \"{destination}\" …', 'Moving %n files to \"{destination}\" …', sources.length, { destination }))\n : (sources.length === 1\n ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Copying %n file to \"{destination}\" …', 'Copying %n files to \"{destination}\" …', sources.length, { destination }));\n const toast = showLoading(text);\n return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setCanPick((n) => {\n const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n return hasCreatePermissions;\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map((node) => node.dirname);\n const paths = nodes.map((node) => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n disabled: selection.length === 0,\n variant: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n // Missing 'CREATE' permissions for selected destination\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Move'),\n disabled: selection.length === 0,\n variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showInfo, showWarning } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n _contents;\n constructor(name, contents = []) {\n super([], name, { type: 'httpd/unix-directory' });\n this._contents = contents;\n }\n set contents(contents) {\n this._contents = contents;\n }\n get contents() {\n return this._contents;\n }\n get size() {\n return this._computeDirectorySize(this);\n }\n get lastModified() {\n if (this._contents.length === 0) {\n return Date.now();\n }\n return this._computeDirectoryMtime(this);\n }\n /**\n * Get the last modification time of a file tree\n * This is not perfect, but will get us a pretty good approximation\n *\n * @param directory the directory to traverse\n */\n _computeDirectoryMtime(directory) {\n return directory.contents.reduce((acc, file) => {\n return file.lastModified > acc\n // If the file is a directory, the lastModified will\n // also return the results of its _computeDirectoryMtime method\n // Fancy recursion, huh?\n ? file.lastModified\n : acc;\n }, 0);\n }\n /**\n * Get the size of a file tree\n *\n * @param directory the directory to traverse\n */\n _computeDirectorySize(directory) {\n return directory.contents.reduce((acc, entry) => {\n // If the file is a directory, the size will\n // also return the results of its _computeDirectorySize method\n // Fancy recursion, huh?\n return acc + entry.size;\n }, 0);\n }\n}\n/**\n * Traverse a file tree using the Filesystem API\n *\n * @param entry the entry to traverse\n */\nexport async function traverseTree(entry) {\n // Handle file\n if (entry.isFile) {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n }\n // Handle directory\n logger.debug('Handling recursive file tree', { entry: entry.name });\n const directory = entry;\n const entries = await readDirectory(directory);\n const contents = (await Promise.all(entries.map(traverseTree))).flat();\n return new Directory(directory.name, contents);\n}\n/**\n * Read a directory using Filesystem API\n *\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n}\n/**\n * @param path - The path relative to the destination root\n * @param destination - The destination folder. When provided, directories are created relative\n * to its source URL instead of the default user root. This is needed for uploads into\n * non-default locations like team folders.\n */\nexport async function createDirectoryIfNotExists(path, destination) {\n const davUrl = destination?.source ?? join(defaultRemoteURL, defaultRootPath);\n const davRoot = destination?.root ?? defaultRootPath;\n const davClient = getClient(davUrl);\n const dirExists = await davClient.exists(path);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { path, davUrl });\n await davClient.createDirectory(path, { recursive: true });\n const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() });\n emit('files:node:created', resultToNode(stat.data, davRoot, davUrl));\n }\n}\n/**\n * Resolve conflicts between existing files and incoming files\n *\n * @param files - incoming files\n * @param destination - destination folder\n * @param contents - existing contents of the destination folder\n */\nexport async function resolveConflict(files, destination, contents) {\n try {\n // List all conflicting files\n const conflicts = files.filter((file) => {\n return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n }).filter(Boolean);\n // List of incoming files that are NOT in conflict\n const uploads = files.filter((file) => {\n return !conflicts.includes(file);\n });\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n logger.debug('Conflict resolution', { uploads, selected, renamed });\n // If the user selected nothing, we cancel the upload\n if (selected.length === 0 && renamed.length === 0 && uploads.length === 0) {\n // User skipped\n showInfo(t('files', 'Conflicts resolution skipped'));\n logger.info('User skipped the conflict resolution');\n return [];\n }\n // Update the list of files to upload\n return [...uploads, ...selected, ...renamed];\n }\n catch (error) {\n // User cancelled\n logger.warn('User cancelled the upload', { error });\n showWarning(t('files', 'Upload cancelled'));\n }\n return [];\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { handleCopyMoveNodesTo, HintException } from '../actions/moveOrCopyAction.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.ts';\nimport { createDirectoryIfNotExists, Directory, resolveConflict, traverseTree } from './DropServiceUtils.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport async function dataTransferToFileTree(items) {\n // Check if the browser supports the Filesystem API\n // We need to cache the entries to prevent Blink engine bug that clears\n // the list (`data.items`) after first access props of one of the entries\n const entries = items\n .filter((item) => {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n return false;\n }\n return true;\n }).map((item) => {\n // MDN recommends to try both, as it might be renamed in the future\n return item?.getAsEntry?.()\n ?? item?.webkitGetAsEntry?.()\n ?? item;\n });\n let warned = false;\n const fileTree = new Directory('root');\n // Traverse the file tree\n for (const entry of entries) {\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry instanceof DataTransferItem) {\n logger.warn('Could not get FilesystemEntry of item, falling back to file');\n const file = entry.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n continue;\n }\n // Warn the user that the browser does not support the Filesystem API\n // we therefore cannot upload directories recursively.\n if (file.type === 'httpd/unix-directory' || !file.type) {\n if (!warned) {\n logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n warned = true;\n }\n continue;\n }\n fileTree.contents.push(file);\n continue;\n }\n // Use Filesystem API\n try {\n fileTree.contents.push(await traverseTree(entry));\n }\n catch (error) {\n // Do not throw, as we want to continue with the other files\n logger.error('Error while traversing file tree', { error });\n }\n }\n return fileTree;\n}\n/**\n * Handle dropping external files\n *\n * @param root - The root directory which should be uploaded\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n */\nexport async function onDropExternalFiles(root, destination, contents) {\n const uploader = getUploader();\n // Check for conflicts on root elements\n if (await hasConflict(root.contents, contents)) {\n root.contents = await resolveConflict(root.contents, destination, contents);\n if (root.contents.length === 0) {\n // user cancelled the upload\n return [];\n }\n }\n else if (root.contents.length === 0) {\n logger.info('No files to upload', { root });\n showInfo(t('files', 'No files to upload'));\n return [];\n }\n // Let's process the files\n logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n const queue = [];\n const uploadDirectoryContents = async (directory, path) => {\n for (const file of directory.contents) {\n // This is the relative path to the resource\n // from the current uploader destination\n const relativePath = join(path, file.name);\n // If the file is a directory, we need to create it first\n // then browse its tree and upload its contents.\n if (file instanceof Directory) {\n try {\n logger.debug('Processing directory', { relativePath, destination });\n await createDirectoryIfNotExists(relativePath, destination);\n await uploadDirectoryContents(file, relativePath);\n }\n catch (error) {\n showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n logger.error('Unable to create the directory', { error, relativePath, directory: file });\n }\n continue;\n }\n // If we've reached a file, we can upload it\n logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n // Overriding the root to avoid changing the current uploader context\n queue.push(uploader.upload(relativePath, file, destination.source));\n }\n };\n // Pause the uploader to prevent it from starting\n // while we compute the queue\n uploader.pause();\n // Upload the files. Using '/' as the starting point\n // as we already adjusted the uploader destination\n await uploadDirectoryContents(root, '/');\n uploader.start();\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n // Check for errors\n const errors = results.filter((result) => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return [];\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return Promise.all(queue);\n}\n/**\n * Handle dropping internal files\n *\n * @param nodes - The nodes being dropped\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n * @param isCopy - Whether the operation is a copy\n */\nexport async function onDropInternalFiles(nodes, destination, contents, isCopy = false) {\n // Check for conflicts on root elements\n if (await hasConflict(nodes, contents)) {\n nodes = await resolveConflict(nodes, destination, contents);\n }\n if (nodes.length === 0) {\n logger.info('No files to process', { nodes });\n showInfo(t('files', 'No files to process'));\n return;\n }\n try {\n const promises = Array.fromAsync(handleCopyMoveNodesTo(nodes, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE));\n await promises;\n logger.debug('Files copy/move successful');\n showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n }\n catch (error) {\n logger.error('Error while processing dropped files', { error });\n if (error instanceof HintException) {\n showError(error.message);\n }\n else {\n showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n }\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of files being dragged currently\n *\n * @param selection array of node sources\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n *\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n *\n * @param lastSelectedIndex\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getUploader } from '@nextcloud/upload';\nimport { defineStore } from 'pinia';\nlet uploader;\n/**\n *\n * @param args\n */\nexport function useUploaderStore(...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=86e9be62&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"86e9be62\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=1e2b9696&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e2b9696\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.fileListFilters,attrs:{\"data-test-id\":\"files-list-filters\"}},[(_setup.isWide)?_vm._l((_setup.visualFilters),function(filter){return _c(_setup.NcPopover,{key:filter.id,attrs:{\"boundary\":_setup.boundary},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{class:_vm.$style.fileListFilters__popoverContainer},[_c(filter.tagName,{tag:\"component\",domProps:{\"filter\":filter}})],1)]},proxy:true}],null,true)})}):_c(_setup.NcPopover,{attrs:{\"boundary\":_setup.boundary,\"popup-role\":_setup.selectedFilter ? 'dialog' : 'menu'},on:{\"update:shown\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"id\":_setup.menuTriggerId,\"aria-label\":_setup.t('files', 'Filters'),\"pressed\":_setup.hasActiveFilters,\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFilterVariant}})]},proxy:true}])})]},proxy:true},{key:\"default\",fn:function(){return [(_setup.selectedFilter)?_c('div',{class:_vm.$style.fileListFilters__popoverFilterView},[_c(_setup.NcButton,{attrs:{\"wide\":\"\",\"variant\":\"tertiary\"},on:{\"click\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"directional\":\"\",\"path\":_setup.mdiArrowLeft}})]},proxy:true}],null,false,1066031977)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Back to filters'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.selectedFilter.tagName,{tag:\"component\",domProps:{\"filter\":_setup.selectedFilter}})],1):[_c('ul',{class:_vm.$style.fileListFilters__popoverContainer,attrs:{\"aria-labelledby\":_setup.menuTriggerId,\"role\":\"menu\"}},_vm._l((_setup.visualFilters),function(filter){return _c('li',{key:filter.id,attrs:{\"role\":\"presentation\"}},[_c(_setup.NcButton,{attrs:{\"role\":\"menuitem\",\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){_setup.selectedFilter = filter}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),0)]]},proxy:true}])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters, getFilesRegistry } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport logger from '../logger.ts';\n/**\n * Check if the given value is an instance file list filter with mount function\n *\n * @param value The filter to check\n */\nfunction isFileListFilterWithUi(value) {\n return 'tagName' in value;\n}\nexport const useFiltersStore = defineStore('filters', () => {\n const chips = ref({});\n const filters = ref([]);\n /**\n * Currently active filter chips\n */\n const activeChips = computed(() => Object.values(chips.value).flat());\n /**\n * Filters sorted by order\n */\n const sortedFilters = computed(() => filters.value.sort((a, b) => a.order - b.order));\n /**\n * All filters that provide a UI for visual controlling the filter state\n */\n const filtersWithUI = computed(() => sortedFilters.value.filter(isFileListFilterWithUi));\n /**\n * Register a new filter on the store.\n * This will subscribe the store to the filters events.\n *\n * @param filter The filter to add\n */\n function addFilter(filter) {\n filter.addEventListener('update:chips', onFilterUpdateChips);\n filter.addEventListener('update:filter', onFilterUpdate);\n filters.value.push(filter);\n logger.debug('New file list filter registered', { id: filter.id });\n }\n /**\n * Unregister a filter from the store.\n * This will remove the filter from the store and unsubscribe the store from the filer events.\n *\n * @param filterId Id of the filter to remove\n */\n function removeFilter(filterId) {\n const index = filters.value.findIndex(({ id }) => id === filterId);\n if (index > -1) {\n const [filter] = filters.value.splice(index, 1);\n filter.removeEventListener('update:chips', onFilterUpdateChips);\n filter.removeEventListener('update:filter', onFilterUpdate);\n logger.debug('Files list filter unregistered', { id: filterId });\n }\n }\n /**\n * Event handler for filter update events\n *\n */\n function onFilterUpdate() {\n emit('files:filters:changed');\n }\n /**\n * Event handler for filter chips updates\n *\n * @param event The update event\n */\n function onFilterUpdateChips(event) {\n const id = event.target.id;\n chips.value = {\n ...chips.value,\n [id]: [...event.detail],\n };\n logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n }\n initialize();\n return {\n // state\n chips,\n filters,\n filtersWithUI,\n // getters / computed\n activeChips,\n sortedFilters,\n };\n /**\n * Initialize the store by registering event listeners and loading initial filters.\n *\n * @internal\n */\n function initialize() {\n const registry = getFilesRegistry();\n const initialFilters = getFileListFilters();\n // handle adding and removing filters after initialization\n registry.addEventListener('register:listFilter', (event) => {\n addFilter(event.detail);\n });\n registry.addEventListener('unregister:listFilter', (event) => {\n removeFilter(event.detail);\n });\n // register the initial filters\n for (const filter of initialFilters) {\n addFilter(filter);\n }\n // subscribe to file list view changes to reset the filters\n subscribe('files:navigation:changed', onViewChanged);\n }\n /**\n * Event handler that resets all filters if the file list view was changed.\n *\n * @internal\n */\n function onViewChanged() {\n logger.debug('Reset all file list filters - view changed');\n for (const filter of filters.value) {\n if (filter.reset !== undefined) {\n filter.reset();\n }\n }\n }\n});\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=4b9fd4ac\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":\"source\",\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMimeAvailable: _vm.isMimeAvailable,\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilterToSearch'),_c('FileListFilterChips')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.n('files', '{count} selected', '{count} selected', _vm.selectedNodes.length, { count: _vm.selectedNodes.length }))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.headers),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"empty\",fn:function(){return [_vm._t(\"empty\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=5eb63caa\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"active-folder\":_vm.activeStore.activeFolder,\"active-view\":_vm.activeStore.activeView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"variant\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"close\":_vm.onMenuClose,\"closed\":_vm.onMenuClosed}},[_vm._l((_vm.renderedNonDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action\",class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.renderedDestructiveActions.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.renderedDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action files-list__row-action--destructive\",class:{\n\t\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e(),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",attrs:{\"data-cy-files-list-row-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n data() {\n return {\n openedSubmenu: null,\n };\n },\n computed: {\n enabledSubmenuActions() {\n return this.enabledFileActions\n .reduce((record, action) => {\n if (action.parent !== undefined) {\n if (!record[action.parent]) {\n record[action.parent] = [];\n }\n record[action.parent].push(action);\n }\n return record;\n }, {});\n },\n },\n methods: {\n /**\n * Check if a menu is valid, meaning it is\n * defined and has at least one action\n *\n * @param action The action to check\n */\n isValidMenu(action) {\n return this.enabledSubmenuActions[action.id]?.length > 0;\n },\n async onBackToMenuClick(action) {\n if (!action) {\n return;\n }\n this.openedSubmenu = null;\n // Wait for first render\n await this.$nextTick();\n // Focus the previous menu action button\n this.$nextTick(() => {\n // Focus the action button, test both batch and single action references\n // as this mixin is used in both single and batch actions.\n const menuAction = this.$refs[`action-batch-${action.id}`]?.[0]\n || this.$refs[`action-${action.id}`]?.[0];\n if (menuAction) {\n menuAction.$el.querySelector('button')?.focus();\n }\n });\n },\n },\n});\n","import { showError, showSuccess } from '@nextcloud/dialogs';\nimport { NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from '../store/active.ts';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport async function executeAction(action) {\n const activeStore = useActiveStore();\n const currentFolder = activeStore.activeFolder;\n const currentNode = activeStore.activeNode;\n const currentView = activeStore.activeView;\n if (!currentFolder || !currentNode || !currentView) {\n logger.error('No active folder, node or view', { folder: currentFolder, node: currentNode, view: currentView });\n return;\n }\n if (currentNode.status === NodeStatus.LOADING) {\n logger.debug('Node is already loading', { node: currentNode });\n return;\n }\n // @ts-expect-error _children is private\n const contents = currentFolder?._children || [];\n const context = {\n nodes: [currentNode],\n view: currentView,\n folder: currentFolder,\n contents,\n };\n if (!action.enabled(context)) {\n logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n return;\n }\n let displayName = action.id;\n try {\n displayName = action.displayName(context) || displayName;\n }\n catch (error) {\n logger.error('Error while getting action display name', { action, error });\n }\n try {\n // Set the loading marker\n Vue.set(currentNode, 'status', NodeStatus.LOADING);\n activeStore.activeAction = action;\n const success = await action.exec(context);\n // If the action returns null, we stay silent\n if (success === null || success === undefined) {\n return;\n }\n if (success) {\n showSuccess(t('files', '{displayName}: done', { displayName }));\n return;\n }\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n catch (error) {\n logger.error('Error while executing action', { action, error });\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n finally {\n // Reset the loading marker\n Vue.set(currentNode, 'status', undefined);\n activeStore.activeAction = undefined;\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=5f3391ea&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f3391ea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"model-value\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:modelValue\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n *\n * @param args\n */\nexport function useKeyboardStore(...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n}\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=b10e52a2\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":\"\",\"required\":\"\",\"minlength\":1,\"enterkeyhint\":\"done\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),(_vm.userConfigStore.userConfig.show_files_extensions)?_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { FileType, NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from '@nextcloud/paths';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineStore } from 'pinia';\nimport Vue, { defineAsyncComponent, ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useUserConfigStore } from './userconfig.ts';\nexport const useRenamingStore = defineStore('renaming', () => {\n /**\n * The currently renamed node\n */\n const renamingNode = ref();\n /**\n * The new name of the currently renamed node\n */\n const newNodeName = ref('');\n /**\n * Internal flag to only allow calling `rename` once.\n */\n const isRenaming = ref(false);\n /**\n * Execute the renaming.\n * This will rename the node set as `renamingNode` to the configured new name `newName`.\n *\n * @return true if success, false if skipped (e.g. new and old name are the same)\n * @throws {Error} if renaming fails, details are set in the error message\n */\n async function rename() {\n if (renamingNode.value === undefined) {\n throw new Error('No node is currently being renamed');\n }\n const oldName = renamingNode.value.basename;\n let newName = newNodeName.value.trim();\n if (newName === oldName) {\n return false;\n }\n // Only rename once so we use this as some kind of mutex\n if (isRenaming.value) {\n return false;\n }\n isRenaming.value = true;\n const userConfig = useUserConfigStore();\n let node = renamingNode.value;\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n if (userConfig.userConfig.show_dialog_file_extension) {\n const oldExtension = extname(oldName);\n const newExtension = extname(newName);\n // Check for extension change for files\n if (node.type === FileType.File\n && oldExtension !== newExtension\n && !(await showFileExtensionDialog(oldExtension, newExtension))) {\n // user selected to use the old extension\n newName = basename(newName, newExtension) + oldExtension;\n if (oldName === newName) {\n return false;\n }\n }\n if (!userConfig.userConfig.show_hidden\n && newName.startsWith('.')\n && !oldName.startsWith('.')\n && !(await showHiddenFileDialog(newName))) {\n return false;\n }\n }\n const oldEncodedSource = node.encodedSource;\n // rename the node\n node.rename(newName);\n logger.debug('Moving file to', { destination: node.encodedSource, oldEncodedSource });\n // create MOVE request\n await axios({\n method: 'MOVE',\n url: oldEncodedSource,\n headers: {\n Destination: node.encodedSource,\n Overwrite: 'F',\n },\n });\n // Update mime type if extension changed\n // as other related informations might have changed\n // on the backend but it is really hard to know on the front\n if (extname(oldName) !== extname(newName)) {\n node = await fetchNode(node.path);\n }\n // Success 🎉\n emit('files:node:updated', node);\n emit('files:node:renamed', node);\n emit('files:node:moved', {\n node,\n oldSource: `${dirname(node.source)}/${oldName}`,\n });\n // Reset the state not changed\n if (renamingNode.value === node) {\n $reset();\n }\n return true;\n }\n catch (error) {\n logger.error('Error while renaming file', { error });\n // Rename back as it failed\n node.rename(oldName);\n if (isAxiosError(error)) {\n // TODO: 409 means current folder does not exist, redirect ?\n if (error?.response?.status === 404) {\n throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }), { cause: error });\n }\n else if (error?.response?.status === 412) {\n throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n newName,\n dir: basename(renamingNode.value.dirname),\n }), { cause: error });\n }\n }\n // Unknown error\n throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }), { cause: error });\n }\n finally {\n Vue.set(node, 'status', undefined);\n isRenaming.value = false;\n }\n }\n /**\n * Reset the store state\n */\n function $reset() {\n newNodeName.value = '';\n renamingNode.value = undefined;\n }\n // Make sure we only register the listeners once\n subscribe('files:node:rename', (node) => {\n renamingNode.value = node;\n newNodeName.value = node.basename;\n });\n return {\n $reset,\n newNodeName,\n rename,\n renamingNode,\n };\n});\n/**\n * Show a dialog asking user for confirmation about changing the file extension.\n *\n * @param oldExtension the old file name extension\n * @param newExtension the new file name extension\n */\nasync function showFileExtensionDialog(oldExtension, newExtension) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileExtension.vue')), { oldExtension, newExtension }, resolve);\n return promise;\n}\n/**\n * Show a dialog asking user for confirmation about renaming a file to a hidden file.\n *\n * @param filename - The new filename\n */\nasync function showHiddenFileDialog(filename) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileHidden.vue')), { filename }, resolve);\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n * @param isFolder Whether the filename is for a folder\n */\nexport function getFilenameValidity(name, escape = false, isFolder = false) {\n if (name.trim() === '') {\n if (isFolder) {\n return t('files', 'Folder name must not be empty.');\n }\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n if (isFolder) {\n return t('files', '\"{char}\" is not allowed inside a folder name.', { char: error.segment }, { escape });\n }\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n if (isFolder) {\n return t('files', '\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment }, { escape: false });\n }\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (!isFolder && error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, { escape: false });\n }\n if (isFolder) {\n return t('files', 'Folder names must not end with \"{extension}\".', { extension: error.segment }, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, { escape: false });\n default:\n if (isFolder) {\n return t('files', 'Invalid folder name.');\n }\n return t('files', 'Invalid filename.');\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=dd56de22&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=dd56de22&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=dd56de22&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=dd56de22&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd56de22\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{key:_vm.source.fileid,ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{ 'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false },attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):(_vm.isRecentView && _vm.isRecentlyCreated)?_c('span',{staticClass:\"files-list__row-icon-recently-created\"},[_vm._m(4)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecentlyCreatedIcon')\n}]\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountGroup.vue?vue&type=template&id=fa2b1464\"\nimport script from \"./AccountGroup.vue?vue&type=script&lang=js\"\nexport * from \"./AccountGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-group-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NetworkOutline.vue?vue&type=template&id=8f00cb50\"\nimport script from \"./NetworkOutline.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\t\n\t\t\n\t\n\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=dc7ddfee\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=4505d262&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4505d262\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"recently-created-marker-icon\",attrs:{\"name\":_vm.t('files', 'Recently created'),\"path\":_vm.mdiPlus}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecentlyCreatedIcon.vue?vue&type=template&id=251f6582&scoped=true\"\nimport script from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"251f6582\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { getSharingToken, isPublicShare } from '@nextcloud/sharing/public';\nimport { toValue } from '@vueuse/core';\nimport { computed } from 'vue';\n/**\n * Get the preview URL for a given node.\n *\n * @param node - The node to get the preview for\n * @param options - The preview options\n * @param options.crop - Whether to crop the preview (default: true)\n * @param options.fallback - Whether to use a mime type icon as fallback (default: true)\n * @param options.size - The size of the preview in pixels (default: 128). Can be a number or a tuple [width, height]\n */\nexport function usePreviewImage(node, options = {}) {\n return computed(() => {\n const source = toValue(node);\n if (!source) {\n return;\n }\n if (source.type === FileType.Folder) {\n return;\n }\n const fallback = toValue(options).fallback ?? true;\n if (source.attributes['has-preview'] !== true\n && source.mime !== undefined\n && source.mime !== 'application/octet-stream') {\n if (!fallback) {\n return;\n }\n const previewUrl = generateUrl('/core/mimeicon?mime={mime}', {\n mime: source.mime,\n });\n const url = new URL(window.location.origin + previewUrl);\n return url.href;\n }\n const crop = toValue(options).crop ?? true;\n const [sizeX, sizeY] = [toValue(options).size ?? 128].flat();\n try {\n const previewUrl = source.attributes.previewUrl\n || (isPublicShare()\n ? generateUrl('/apps/files_sharing/publicpreview/{token}?file={file}', {\n token: getSharingToken(),\n file: source.path,\n })\n : generateUrl('/core/preview?fileId={fileid}', {\n fileid: String(source.fileid),\n }));\n const url = new URL(window.location.origin + previewUrl);\n // Request tiny previews\n url.searchParams.set('x', sizeX.toString());\n url.searchParams.set('y', (sizeY ?? sizeX).toString());\n url.searchParams.set('mimeFallback', fallback.toString());\n // Etag to force refresh preview on change\n const etag = source.attributes.etag || source.mtime?.getTime() || '';\n url.searchParams.set('v', etag.slice(0, 6));\n // Handle cropping\n url.searchParams.set('a', crop ? '0' : '1');\n return url.href;\n }\n catch {\n return;\n }\n });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=285bdd62\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, readonly, ref } from 'vue';\nconst actions = ref();\n/**\n * Get the registered and sorted file actions.\n */\nexport function useFileActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileActions();\n getFilesRegistry().addEventListener('register:action', () => {\n actions.value = getFileActions();\n });\n }\n return readonly(actions);\n}\n/**\n * Get the enabled file actions for the given context.\n *\n * @param context - The context to check the enabled state of the actions against\n */\nexport function useEnabledFileActions(context) {\n const actions = useFileActions();\n return computed(() => actions.value\n .filter((action) => action.enabled === undefined\n || action.enabled(toValue(context)))\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n const route = useRoute();\n /**\n * Get the path of the current active directory\n */\n const directory = computed(() => String(route.query.dir || '/')\n // Remove any trailing slash but leave root slash\n .replace(/^(.+)\\/$/, '$1'));\n /**\n * Get the current fileId used on the route\n */\n const fileId = computed(() => {\n const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n return Number.isNaN(fileId) ? null : fileId;\n });\n /**\n * State of `openFile` route param\n */\n const openFile = computed(() => 'openfile' in route.query\n && (typeof route.query.openfile !== 'string'\n || route.query.openfile.toLocaleLowerCase() !== 'false'));\n // if `opendetails` is set it is considered truthy, but allow to explicitly set it to 'false'\n const openDetails = computed(() => 'opendetails' in route.query\n && (typeof route.query.opendetails !== 'string'\n || route.query.opendetails.toLocaleLowerCase() !== 'false'));\n return {\n /** Path of currently open directory */\n directory,\n /** Current active fileId */\n fileId,\n /** Should the active node should be opened (`openFile` route param) */\n openFile,\n /** Should the details sidebar be shown (`openDetails` route param) */\n openDetails,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: ({ nodes }) => {\n const node = nodes[0];\n if (nodes.length !== 1 || !node) {\n return false;\n }\n const sidebar = getSidebar();\n if (!sidebar.available) {\n return false;\n }\n if (isPublicShare()) {\n return false;\n }\n return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n },\n async exec({ nodes }) {\n const sidebar = getSidebar();\n const [node] = nodes;\n try {\n // If the sidebar is already open for the current file, do nothing\n if (sidebar.node?.source === node.source) {\n logger.debug('Sidebar already open for this file', { node });\n return null;\n }\n sidebar.open(node, 'sharing');\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n hotkey: {\n key: 'D',\n description: t('files', 'Open the details sidebar'),\n },\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","\n \n \n \n\n\n","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, } from '@nextcloud/files';\nimport { n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param path - The full path\n * @return [dirPath, fileName]\n */\nexport function extractFilePaths(path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n}\n/**\n * Generate a translated summary of an array of nodes\n *\n * @param nodes - The nodes to summarize\n * @param hidden - The number of hidden nodes\n */\nexport function getSummaryFor(nodes, hidden = 0) {\n const fileCount = nodes.filter((node) => node.type === FileType.File).length;\n const folderCount = nodes.filter((node) => node.type === FileType.Folder).length;\n const summary = [];\n if (fileCount > 0 || folderCount === 0) {\n const fileSummary = n('files', '%n file', '%n files', fileCount);\n summary.push(fileSummary);\n }\n if (folderCount > 0) {\n const folderSummary = n('files', '%n folder', '%n folders', folderCount);\n summary.push(folderSummary);\n }\n if (hidden > 0) {\n // TRANSLATORS: This is the number of hidden files or folders\n const hiddenSummary = n('files', '%n hidden', '%n hidden', hidden);\n summary.push(hiddenSummary);\n }\n return summary.join(' · ');\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=6c14765c\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport DragAndDropPreview from '../components/DragAndDropPreview.vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\n/**\n *\n * @param nodes\n */\nexport async function getDragAndDropPreview(nodes) {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, Folder, File as NcFile, Node, NodeStatus, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport logger from '../logger.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n isMtimeAvailable: {\n type: Boolean,\n default: false,\n },\n compact: {\n type: Boolean,\n default: false,\n },\n },\n provide() {\n return {\n defaultFileAction: computed(() => this.defaultFileAction),\n enabledFileActions: computed(() => this.enabledFileActions),\n };\n },\n data() {\n return {\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n fileid() {\n return this.source.fileid ?? 0;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING;\n },\n /**\n * The display name of the current node\n * Either the nodes filename or a custom display name (e.g. for shares)\n */\n displayName() {\n // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n return this.source.displayname || this.source.basename;\n },\n /**\n * The display name without extension\n */\n basename() {\n if (this.extension === '') {\n return this.displayName;\n }\n return this.displayName.slice(0, 0 - this.extension.length);\n },\n /**\n * The extension of the file\n */\n extension() {\n if (this.source.type === FileType.Folder) {\n return '';\n }\n return extname(this.displayName);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.selectedFiles.includes(this.source.source);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.isNarrow;\n },\n isActive() {\n // Not using activeNode here because we want to\n // be reactive to the url change directly\n return String(this.fileid) === String(this.currentRouteFileId);\n },\n /**\n * Check if the source is in a failed state after an API request\n */\n isFailedSource() {\n return this.source.status === NodeStatus.FAILED;\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map((source) => this.filesStore.getNode(source));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.draggingFiles.includes(this.source.source)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n // If the menu is opened on another file entry, we ignore closed events\n if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {\n return;\n }\n // If opened, we specify the current file id\n // else we set it to null to close the menu\n this.actionsMenuStore.opened = opened\n ? this.uniqueId.toString()\n : null;\n },\n },\n mtime() {\n // If the mtime is not a valid date, return it as is\n if (this.source.mtime && !isNaN(this.source.mtime.getDate())) {\n return this.source.mtime;\n }\n if (this.source.crtime && !isNaN(this.source.crtime.getDate())) {\n return this.source.crtime;\n }\n return null;\n },\n mtimeOpacity() {\n if (!this.mtime) {\n return {};\n }\n // The time when we start reducing the opacity\n const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n // everything older than the maxOpacityTime will have the same value\n const timeDiff = Date.now() - this.mtime.getTime();\n if (timeDiff < 0) {\n // this means we have an invalid mtime which is in the future!\n return {};\n }\n // inversed time difference from 0 to maxOpacityTime (which would mean today)\n const opacityTime = Math.max(0, maxOpacityTime - timeDiff);\n // 100 = today, 0 = 31 days ago or older\n const percentage = Math.round(opacityTime * 100 / maxOpacityTime);\n return {\n color: `color-mix(in srgb, var(--color-main-text) ${percentage}%, var(--color-text-maxcontrast))`,\n };\n },\n /**\n * Sorted actions that are enabled for this node\n */\n enabledFileActions() {\n if (this.source.status === NodeStatus.FAILED) {\n return [];\n }\n return this.actions\n .filter((action) => {\n if (!action.enabled) {\n return true;\n }\n // In case something goes wrong, since we don't want to break\n // the entire list, we filter out actions that throw an error.\n try {\n return action.enabled({\n nodes: [this.source],\n view: this.activeView,\n folder: this.activeFolder,\n contents: this.nodes,\n });\n }\n catch (error) {\n logger.error('Error while checking action', { action, error });\n return false;\n }\n })\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n },\n defaultFileAction() {\n return this.enabledFileActions.find((action) => action.default !== undefined);\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n *\n * @param newSource The new value of the source prop\n * @param oldSource The previous value\n */\n source(newSource, oldSource) {\n if (newSource.source !== oldSource.source) {\n this.resetState();\n }\n },\n openedMenu() {\n // Checking if the menu is really closed and not\n // just a change in the open state to another file entry.\n if (this.actionsMenuStore.opened === null) {\n // Reset any right menu position potentially set\n logger.debug('All actions menu closed, resetting right menu position...');\n const root = this.$el?.closest('main.app-content');\n if (root !== null) {\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n }\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset the preview state\n this.$refs?.preview?.reset?.();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // Ignore right click if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n // Actions menu is contained within the app content\n const root = this.$el?.closest('main.app-content');\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n logger.debug('Setting actions menu position...');\n root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n }\n else {\n // Reset any right menu position potentially set\n const root = this.$el?.closest('main.app-content');\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n // Ignore click if we are renaming\n if (this.isRenaming) {\n return;\n }\n // Ignore right click (button & 2) and any auxiliary button expect mouse-wheel (button & 4)\n if (Boolean(event.button & 2) || event.button > 4) {\n return;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n // also if there is no default action use this as a fallback\n const metaKeyPressed = event.ctrlKey || event.metaKey || event.button === 1;\n if (metaKeyPressed || !this.defaultFileAction) {\n // If no download permission, then we can not allow to download (direct link) the files\n if (!isDownloadable(this.source)) {\n return;\n }\n const url = isPublicShare()\n ? this.source.encodedSource\n : generateUrl('/f/{fileId}', { fileId: this.fileid });\n event.preventDefault();\n event.stopPropagation();\n // Open the file in a new tab if the meta key or the middle mouse button is clicked\n window.open(url, metaKeyPressed ? '_blank' : '_self');\n return;\n }\n // every special case handled so just execute the default action\n event.preventDefault();\n event.stopPropagation();\n // Execute the first default action if any\n this.defaultFileAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n })) {\n sidebarAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.source.source)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.source.source]);\n }\n const nodes = this.draggingStore.dragging\n .map((source) => this.filesStore.getNode(source));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // If another button is pressed, cancel it. This\n // allows cancelling the drag with the right click.\n if (!this.canDrop || event.button) {\n return;\n }\n // Caching the selection\n const selection = this.draggingFiles;\n const items = Array.from(event.dataTransfer?.items || []);\n if (selection.length === 0 && items.some((item) => item.kind === 'file')) {\n // Snapshot DataTransfer items immediately so Blink clears data.items\n // after the first async yield. Then convert FileSystemEntry to File\n // inside dataTransferToFileTree (duck-typed via entry.isFile) rather\n // than deferring to @nextcloud/upload's batchUpload, whose\n // instanceof-based conversion silently no-ops on some Chromium builds.\n // See https://github.com/nextcloud/server/issues/60139\n const fileTree = await dataTransferToFileTree(items);\n // canDrop already gates this branch on FileType.Folder, but the\n // type system can't see that — narrow defensively so a future\n // loosening of canDrop can't silently lie via the cast below.\n // Use the `type` field rather than `instanceof Folder`: apps\n // bundle their own copy of @nextcloud/files, so a Folder from\n // an app would not be `instanceof` the server's Folder class.\n if (this.source.type !== FileType.Folder) {\n logger.error('onDrop: external drop target is not a Folder', { source: this.source });\n this.dragover = false;\n return;\n }\n // Fetch destination contents for conflict resolution\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n logger.debug('Start uploading dropped files', { target: this.source.path, fileTree });\n await onDropExternalFiles(fileTree, this.source, contents);\n this.dragover = false;\n return;\n }\n // We might not have the target directory fetched yet\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, folder: this.source, selection });\n const nodes = selection.map((source) => this.filesStore.getNode(source));\n await onDropInternalFiles(nodes, this.source, contents, isCopy);\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (selection.some((source) => this.selectedFiles.includes(source))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // check hide-download property of shares\n if (node.attributes['hide-download'] === true\n || node.attributes['hide-download'] === 'true') {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n if (!node.isDavResource) {\n return false;\n }\n if ((node.permissions & Permission.WRITE) === 0) {\n return false;\n }\n // Syncable has the same permissions as downloadable for now\n return isDownloadable(node);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__row-mime\",attrs:{\"title\":_vm.mime,\"data-cy-files-list-row-mime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mime))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.activeView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"active-folder\":_vm.activeFolder,\"active-view\":_vm.activeView,\"render\":_vm.adaptColumnRenderToCustomElementRender(column),\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4fc1f0a8\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{ 'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading },attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"grid-mode\":true,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=c13970d8\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.activeChips.length > 0)?_c('ul',{class:_vm.$style.fileListFilterChips,attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"hide-status\":\"\",\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterChips.vue?vue&type=template&id=690b69f8\"\nimport script from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isVisible)?_c(_setup.NcButton,{attrs:{\"size\":\"small\"},on:{\"click\":_setup.onClick}},[_vm._v(\"\\n\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FileListFilterToSearch.vue?vue&type=template&id=f1a11948\"\nimport script from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=272fbca3\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_setup.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mime\"}):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_setup.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.columns),function(column){return _c('th',{key:column.id,class:_setup.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=378a6e4a&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"378a6e4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"open\":_vm.openedMenu,\"container\":\"#app-content-vue\",\"boundaries-element\":_vm.boundariesElement,\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.enabledInlineActions.length,\"menu-name\":_vm.enabledInlineActions.length <= 1 ? _vm.t('files', 'Actions') : undefined},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action,idx){return _c('NcActionButton',{key:action.id,ref:`action-batch-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-actions-batch-${action.id}`]: true,\n\t\t\t\t[`files-list__row-actions-batch--menu`]: _vm.isValidMenu(action),\n\t\t\t},attrs:{\"id\":idx === 0 ? _vm.FILE_LIST_HEAD_FIRST_BATCH_ACTION_ID : undefined,\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-selection-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-actions-batch-back\",attrs:{\"data-cy-files-list-selection-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-actions-batch--submenu\",class:`files-list__row-actions-batch-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-selection-action\":action.id,\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=53193162&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53193162\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:[{\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"variant\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialViewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = defineStore('viewconfig', () => {\n const viewConfigs = ref({ ...initialViewConfig });\n /**\n * Get the config for a specific view\n *\n * @param viewid Id of the view to fet the config for\n */\n function getConfig(viewid) {\n return viewConfigs.value[viewid] || {};\n }\n /**\n * Update the view config local store\n *\n * @param viewId The id of the view to update\n * @param key The config key to update\n * @param value The new value\n */\n function onUpdate(viewId, key, value) {\n if (!(viewId in viewConfigs.value)) {\n set(viewConfigs.value, viewId, {});\n }\n set(viewConfigs.value[viewId], key, value);\n }\n /**\n * Update the view config local store AND on server side\n *\n * @param view Id of the view to update\n * @param key Config key to update\n * @param value New value\n */\n async function update(view, key, value) {\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/views'), {\n value,\n view,\n key,\n });\n }\n emit('files:view-config:updated', { view, key, value });\n }\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n *\n * @param key Key to sort by\n * @param view View to set the sorting key for\n */\n function setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n update(view, 'sorting_mode', key);\n update(view, 'sorting_direction', 'asc');\n }\n /**\n * Toggle the sorting direction\n *\n * @param viewId id of the view to set the sorting order for\n */\n function toggleSortingDirection(viewId = 'files') {\n const config = viewConfigs.value[viewId] || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n update(viewId, 'sorting_direction', newDirection);\n }\n // Initialize event listener\n subscribe('files:view-config:updated', ({ view, key, value }) => onUpdate(view, key, value));\n return {\n viewConfigs,\n getConfig,\n setSortingBy,\n toggleSortingDirection,\n update,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mapState } from 'pinia';\nimport Vue from 'vue';\nimport { useActiveStore } from '../store/active.ts';\nimport { useViewConfigStore } from '../store/viewConfig.ts';\nexport default Vue.extend({\n setup() {\n const activeStore = useActiveStore();\n return {\n activeStore,\n };\n },\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.activeStore.activeView?.id)?.sorting_mode\n || this.activeStore.activeView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.activeStore.activeView?.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.activeStore.activeView?.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.activeStore.activeView?.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=4a8557e6&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a8557e6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"id\":_vm.FILES_LIST_HEADER_SELECT_ALL_CHECKBOX_ID,\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:model-value\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Actions'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mime\",class:{ 'files-list__column--sortable': _vm.isMimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'File type'),\"mode\":\"mime\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=5a72550e&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a72550e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",class:{ 'files-list--grid': _vm.gridMode },attrs:{\"data-cy-files-list\":\"\"},on:{\"&scroll\":function($event){return _vm.onScroll.apply(null, arguments)}}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{ref:\"filters\",staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),(_vm.dataSources.length === 0)?_c('div',{staticClass:\"files-list__empty\"},[_vm._t(\"empty\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{\n\t\t\t'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'],\n\t\t\t'files-list__table--hidden': _vm.dataSources.length === 0,\n\t\t},attrs:{\"aria-hidden\":_vm.dataSources.length === 0,\"inert\":_vm.dataSources.length === 0}},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({ key, item },i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{ref:\"footer\",staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=097bcb72\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListHeaders, getFilesRegistry } from '@nextcloud/files';\nimport { computed, ref } from 'vue';\nconst headers = ref();\nconst sorted = computed(() => [...(headers.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list headers.\n */\nexport function useFileListHeaders() {\n if (!headers.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n headers.value = getFileListHeaders();\n getFilesRegistry().addEventListener('register:listHeader', () => {\n headers.value = getFileListHeaders();\n });\n }\n return sorted;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=1a9725ff&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a9725ff\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, ref } from 'vue';\nconst actions = ref();\nconst sorted = computed(() => [...(actions.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list actions.\n */\nexport function useFileListActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileListActions();\n getFilesRegistry().addEventListener('register:listAction', () => {\n actions.value = getFileListActions();\n });\n }\n return sorted;\n}\n/**\n * Get the enabled file list actions for the given folder, contents and view.\n *\n * @param folder - The current folder\n * @param contents - The contents of the current folder\n * @param view - The current view\n */\nexport function useEnabledFileListActions(folder, contents, view) {\n const actions = useFileListActions();\n return computed(() => {\n if (toValue(folder) === undefined || toValue(view) === undefined) {\n return [];\n }\n return actions.value.filter((action) => action.enabled === undefined\n || action.enabled({ folder: toValue(folder), contents: toValue(contents), view: toValue(view) }));\n });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n const activeTab = ref();\n const isOpen = ref(false);\n const activeStore = useActiveStore();\n const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n const currentContext = computed(() => {\n if (!hasContext.value) {\n return;\n }\n return {\n node: currentNode.value,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n };\n });\n const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n /**\n * Open the sidebar for a given node and optional tab ID.\n *\n * @param node - The node to display in the sidebar.\n * @param tabId - Optional ID of the tab to activate.\n */\n function open(node, tabId) {\n if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n node,\n activeFolder: activeStore.activeFolder,\n activeView: activeStore.activeView,\n });\n throw new Error('Cannot open sidebar because the active folder or view is not set.');\n }\n if (isOpen.value && currentNode.value?.source === node.source) {\n logger.debug('sidebar: already open for current node');\n if (tabId) {\n logger.debug('sidebar: already open for current node - switching tab', { tabId });\n setActiveTab(tabId);\n }\n return;\n }\n const newTabs = getTabs({\n node,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n });\n if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n activeTab.value = newTabs[0]?.id;\n }\n else {\n activeTab.value = tabId ?? newTabs[0]?.id;\n }\n logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n activeStore.activeNode = node;\n isOpen.value = true;\n }\n /**\n * Close the sidebar.\n */\n function close() {\n isOpen.value = false;\n }\n /**\n * Get the available tabs for the sidebar.\n * If a context is provided, only tabs enabled for that context are returned.\n *\n * @param context - Optional context to filter the available tabs.\n */\n function getTabs(context) {\n let tabs = getSidebarTabs();\n if (context) {\n tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n }\n return tabs.sort((a, b) => a.order - b.order);\n }\n /**\n * Get the available actions for the sidebar.\n * If a context is provided, only actions enabled for that context are returned.\n *\n * @param context - Optional context to filter the available actions.\n */\n function getActions(context) {\n let actions = getSidebarActions();\n if (context) {\n actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n }\n return actions.sort((a, b) => a.order - b.order);\n }\n /**\n * Set the active tab in the sidebar.\n *\n * @param tabId - The ID of the tab to activate.\n */\n function setActiveTab(tabId) {\n if (!currentTabs.value.find(({ id }) => id === tabId)) {\n throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n }\n activeTab.value = tabId;\n }\n // update the current node if updated\n subscribe('files:node:updated', (node) => {\n if (node.source === currentNode.value?.source) {\n activeStore.activeNode = node;\n }\n });\n // close the sidebar if the current node is deleted\n subscribe('files:node:deleted', (node) => {\n if (node.fileid === currentNode.value?.fileid) {\n close();\n }\n });\n subscribe('viewer:sidebar:open', ({ source }) => {\n const filesStore = useFilesStore();\n const node = filesStore.getNode(source);\n if (node) {\n logger.debug('sidebar: opening for node from Viewer.', { node });\n open(node);\n }\n else {\n logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n }\n });\n let initialized = false;\n // close sidebar when parameter is removed from url\n subscribe('files:list:updated', () => {\n if (!initialized) {\n initialized = true;\n window.OCP.Files.Router._router.afterEach((to, from) => {\n if ((from.query && ('opendetails' in from.query))\n && (to.query && !('opendetails' in to.query))) {\n logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n close();\n }\n });\n }\n });\n // watch open state and update URL query parameters\n watch(isOpen, (isOpen) => {\n const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n if (!isOpen && ('opendetails' in query)) {\n delete query.opendetails;\n window.OCP.Files.Router.goToRoute(null, params, query, true);\n }\n if (isOpen && !('opendetails' in query)) {\n window.OCP.Files.Router.goToRoute(null, params, {\n ...query,\n opendetails: 'true',\n }, true);\n }\n });\n return {\n activeTab,\n currentActions,\n currentContext,\n currentNode,\n currentTabs,\n hasContext,\n isOpen: readonly(isOpen),\n open,\n close,\n getActions,\n getTabs,\n setActiveTab,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n const storageStats = loadState('files', 'storageStats', { quota: -1 });\n // Don't show this view if the user has no storage quota\n return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n // the default view - only use the personal one if it is enabled\n if (defaultView !== 'personal' || hasPersonalFilesView()) {\n return defaultView;\n }\n return 'files';\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c(_vm.isNarrow ? 'Teleport' : 'div',{tag:\"component\",attrs:{\"to\":_vm.isNarrow ? 'body' : undefined}},[(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",class:{ 'files-list__header-upload-button--narrow': _vm.isNarrow },attrs:{\"allow-folders\":\"\",\"no-label\":_vm.isNarrow,\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\",\"primary\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()],1),_vm._v(\" \"),_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\",attrs:{\"name\":_vm.t('files', 'File list is reloading')}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"files-list__header-actions\",attrs:{\"inline\":1,\"variant\":\"tertiary\",\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"disabled\":!!_vm.loadingAction,\"data-cy-files-list-action\":action.id,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.execFileListAction(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingAction === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):(action.iconSvgInline !== undefined && _vm.currentView)?_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}}):_vm._e()]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('FileListFilters'),_vm._v(\" \"),(_vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"variant\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload && _vm.currentFolder)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(!_vm.currentView)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted,\"summary\":_vm.summary},scopedSlots:_vm._u([{key:\"empty\",fn:function(){return [(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"variant\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView?.icon}})]},proxy:true}],null,true)})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n *\n * @param error - Any exception\n * @return - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n *\n * @param error - An exception from webdav request\n * @return Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n if (error instanceof Error) {\n if (isWebDAVClientError(error)) {\n const status = error.status || error.response?.status || 0;\n if ([400, 404, 405].includes(status)) {\n return t('files', 'Folder not found');\n }\n else if (status === 403) {\n return t('files', 'This operation is forbidden');\n }\n else if (status === 500) {\n return t('files', 'This folder is unavailable, please try again later or contact the administration');\n }\n else if (status === 503) {\n return t('files', 'Storage is temporarily not available');\n }\n }\n // We don't need to show abortion error to the user as those are expected.\n if (error.name === 'AbortError') {\n return null;\n }\n return t('files', 'Unexpected error: {error}', { error: error.message });\n }\n return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=ed23df10&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ed23df10\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_setup.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c(_setup.FilesNavigationSearch)]},proxy:true},{key:\"default\",fn:function(){return [_c(_setup.FilesNavigationList),_vm._v(\" \"),_c(_setup.FilesAppSettings,{attrs:{\"open\":_setup.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"update:open\":function($event){_setup.settingsOpened=$event},\"close\":function($event){_setup.settingsOpened = false}}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c(_setup.NavigationQuota),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"name\":_setup.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();_setup.settingsOpened = true}}},[_c(_setup.IconCog,{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CogOutline.vue?vue&type=template&id=96fed70c\"\nimport script from \"./CogOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CogOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationList,{class:_vm.$style.filesNavigationList,attrs:{\"aria-label\":_setup.t('files', 'Views')}},_vm._l((_setup.rootViews),function(view){return _c(_setup.FilesNavigationListItem,{key:view.id,attrs:{\"view\":view}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n const sortedTree = tree.toSorted(compareNodes);\n for (const { id, basename, displayName, children } of sortedTree) {\n const path = join(currentPath, basename);\n const source = `${sourceRoot}${path}`;\n const node = {\n source,\n encodedSource: encodeSource(source),\n path,\n fileid: id,\n basename,\n };\n if (displayName) {\n node.displayName = displayName;\n }\n nodes.push(node);\n if (children.length > 0) {\n getTreeNodes(children, path, nodes);\n }\n }\n return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n });\n const nodes = getTreeNodes(tree, withParents ? '/' : path);\n return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n const { origin } = new URL(source);\n return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n const parent = dirname(source);\n if (parent === sourceRoot) {\n return folderTreeId;\n }\n return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationItem,{staticClass:\"files-navigation__item\",attrs:{\"allow-collapse\":\"\",\"loading\":_setup.isLoading,\"data-cy-files-navigation-item\":_vm.view.id,\"exact\":_setup.hasChildViews,\"name\":_vm.view.name,\"open\":_setup.isExpanded,\"pinned\":_vm.view.sticky,\"to\":_setup.navigationRoute},on:{\"update:open\":_setup.onExpandCollapse},scopedSlots:_vm._u([(_vm.view.icon)?{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(!_setup.hasChildViews && !_setup.childViewsLoaded && _vm.view.loadChildViews)?_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"role\":\"presentation\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.sortedChildViews),function(childView){return _c('FilesNavigationListItem',{key:childView.id,attrs:{\"level\":_vm.level + 1,\"view\":childView}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationListItem.vue?vue&type=template&id=008accd4\"\nimport script from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigationList.vue?vue&type=template&id=1b62d532\"\nimport script from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.searchLabel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcActions,{attrs:{\"aria-label\":_setup.t('files', 'Search scope options'),\"disabled\":_setup.isSearchView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.searchStore.scope === 'globally' ? _setup.mdiSearchWeb : _setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'filter'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search here'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'globally'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiSearchWeb}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\\t\\t\\t\")])],1)]},proxy:true}]),model:{value:(_setup.searchStore.query),callback:function ($$v) {_vm.$set(_setup.searchStore, \"query\", $$v)},expression:\"searchStore.query\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { onUnmounted } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n/**\n * Helper until we use Vue-Router v4 (Vue3).\n *\n * @param fn - The navigation guard\n */\nexport function onBeforeNavigation(fn) {\n const router = useRouter();\n const remove = router.beforeResolve(fn);\n onUnmounted(remove);\n}\n","import { render, staticRenderFns } from \"./FilesNavigationSearch.vue?vue&type=template&id=7f26c822\"\nimport script from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","\n\n\t= 0 }\"\n\t\t:loading=\"loadingStorageStats\"\n\t\t:name=\"storageStatsTitle\"\n\t\t:title=\"storageStatsTooltip\"\n\t\tclass=\"app-navigation-entry__settings-quota\"\n\t\tdata-cy-files-navigation-settings-quota\n\t\t@click.stop.prevent=\"debounceUpdateStorageStats\">\n\t\t\n\n\t\t\n\t\t= 0\"\n\t\t\tslot=\"extra\"\n\t\t\t:aria-label=\"t('files', 'Storage quota')\"\n\t\t\t:error=\"storageStats.relative > 80\"\n\t\t\t:value=\"Math.min(storageStats.relative, 100)\" />\n\t\n\n\n\n\n\n","import { render, staticRenderFns } from \"./ChartPieOutline.vue?vue&type=template&id=a29cc97a\"\nimport script from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 11H19.95Q19.58 8.25 17.66 6.34 15.75 4.43 13 4.05M11 19.95V4.05Q8 4.43 6 6.69 4 8.95 4 12T6 17.31Q8 19.58 11 19.95M13 19.95Q15.75 19.6 17.68 17.68 19.6 15.75 19.95 13H13M12 12M12 22Q9.93 22 8.1 21.21 6.28 20.43 4.93 19.08 3.58 17.73 2.79 15.9 2 14.08 2 12T2.79 8.1Q3.58 6.28 4.93 4.93 6.28 3.58 8.1 2.79 9.93 2 12 2T15.89 2.79Q17.7 3.58 19.06 4.94 20.43 6.3 21.21 8.11 22 9.93 22 12 22 14.05 21.21 15.88 20.43 17.7 19.08 19.06 17.73 20.43 15.9 21.21 14.08 22 12 22Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=062ef4b2&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"062ef4b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0 },attrs:{\"aria-description\":_vm.t('files', 'Storage information'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"aria-label\":_vm.t('files', 'Storage quota'),\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsDialog,{attrs:{\"legacy\":false,\"name\":_setup.t('files', 'Files settings'),\"no-version\":\"\",\"open\":_vm.open,\"show-navigation\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close')}}},[_c(_setup.FilesAppSettingsGeneral),_vm._v(\" \"),_c(_setup.FilesAppSettingsAppearance),_vm._v(\" \"),_c(_setup.FilesAppSettingsLegacyApi),_vm._v(\" \"),_c(_setup.FilesAppSettingsWarnings),_vm._v(\" \"),_c(_setup.FilesAppSettingsWebDav),_vm._v(\" \"),_c(_setup.FilesAppSettingsShortcuts)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"appearance\",\"name\":_setup.t('files', 'Appearance')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show hidden files')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_hidden', $event)}},model:{value:(_setup.store.userConfig.show_hidden),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_hidden\", $$v)},expression:\"store.userConfig.show_hidden\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file type column')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_mime_column', $event)}},model:{value:(_setup.store.userConfig.show_mime_column),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_mime_column\", $$v)},expression:\"store.userConfig.show_mime_column\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file extensions')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_files_extensions', $event)}},model:{value:(_setup.store.userConfig.show_files_extensions),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_files_extensions\", $$v)},expression:\"store.userConfig.show_files_extensions\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Crop image previews')},on:{\"update:modelValue\":function($event){return _setup.store.update('crop_image_previews', $event)}},model:{value:(_setup.store.userConfig.crop_image_previews),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"crop_image_previews\", $$v)},expression:\"store.userConfig.crop_image_previews\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsAppearance.vue?vue&type=template&id=1d0fcc36\"\nimport script from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"settings\",\"name\":_setup.t('files', 'General')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort favorites first')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_favorites_first', $event)}},model:{value:(_setup.store.userConfig.sort_favorites_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_favorites_first\", $$v)},expression:\"store.userConfig.sort_favorites_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort folders before files')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_folders_first', $event)}},model:{value:(_setup.store.userConfig.sort_folders_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_folders_first\", $$v)},expression:\"store.userConfig.sort_folders_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Enable folder tree view')},on:{\"update:modelValue\":function($event){return _setup.store.update('folder_tree', $event)}},model:{value:(_setup.store.userConfig.folder_tree),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"folder_tree\", $$v)},expression:\"store.userConfig.folder_tree\"}})],1),_vm._v(\" \"),_c(_setup.NcRadioGroup,{attrs:{\"label\":_setup.t('files', 'Default view')},on:{\"update:modelValue\":function($event){return _setup.store.update('default_view', $event)}},model:{value:(_setup.store.userConfig.default_view),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"default_view\", $$v)},expression:\"store.userConfig.default_view\"}},[_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'All files'),\"value\":\"files\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'Personal files'),\"value\":\"personal\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOutline}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsGeneral.vue?vue&type=template&id=286756ea\"\nimport script from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"el\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=template&id=6d8612e1\"\nimport script from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.apiSettings.length !== 0)?_c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"api-settings\",\"name\":_setup.t('files', 'Additional settings')}},_vm._l((_setup.apiSettings),function(setting){return _c(_setup.FilesAppSettingsLegacyApiEntry,{key:setting.name,attrs:{\"setting\":setting}})}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApi.vue?vue&type=template&id=f4559f9c\"\nimport script from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsShortcutsSection,[_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Actions')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'File actions'),\"hotkey\":\"A\"}}),_vm._v(\" \"),_vm._l((_setup.actionHotkeys),function(hotkey){return _c(_setup.NcHotkey,{key:hotkey.id,attrs:{\"label\":hotkey.label,\"hotkey\":hotkey.hotkey}})})],2),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Selection')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select all files'),\"hotkey\":\"Control A\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Deselect all'),\"hotkey\":\"Escape\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select or deselect'),\"hotkey\":\"Control Space\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select a range'),\"hotkey\":\"Control Shift Space\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Navigation')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to parent folder'),\"hotkey\":\"Alt ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file above'),\"hotkey\":\"ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file below'),\"hotkey\":\"ArrowDown\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go left in grid'),\"hotkey\":\"ArrowLeft\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go right in grid'),\"hotkey\":\"ArrowRight\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'View')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Toggle grid view'),\"hotkey\":\"V\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Show those shortcuts'),\"hotkey\":\"?\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsShortcuts.vue?vue&type=template&id=5a8abf86\"\nimport script from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"warning\",\"name\":_setup.t('files', 'Warnings')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before changing a file extension')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_file_extension', $event)}},model:{value:(_setup.store.userConfig.show_dialog_file_extension),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_file_extension\", $$v)},expression:\"store.userConfig.show_dialog_file_extension\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before deleting a file')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_deletion', $event)}},model:{value:(_setup.store.userConfig.show_dialog_deletion),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_deletion\", $$v)},expression:\"store.userConfig.show_dialog_deletion\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsWarnings.vue?vue&type=template&id=02608f74\"\nimport script from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"webdav\",\"name\":\"WebDAV\"}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxCopyButton,{attrs:{\"label\":_setup.t('files', 'WebDAV URL'),\"value\":_setup.webDavUrl}}),_vm._v(\" \"),(_setup.isTwoFactorEnabled)?_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'Create an app password'),\"description\":_setup.t('files', 'Required for WebDAV authentication because Two-Factor Authentication is enabled for this account.'),\"href\":_setup.appPasswordUrl,\"target\":\"_blank\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'How to access files using WebDAV'),\"href\":_setup.webDavDocsUrl,\"target\":\"_blank\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"","import { render, staticRenderFns } from \"./FilesAppSettingsWebDav.vue?vue&type=template&id=601f53e8\"\nimport script from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettings.vue?vue&type=template&id=72195bd8\"\nimport script from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigation.vue?vue&type=template&id=b3d7fbf2&scoped=true\"\nimport script from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3d7fbf2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebar,{attrs:{\"data-cy-sidebar\":\"\",\"force-menu\":\"\",\"active\":_setup.sidebar.activeTab,\"background\":_setup.background,\"empty\":!_setup.sidebar.hasContext,\"loading\":!_setup.sidebar.hasContext,\"name\":_setup.sidebar.currentNode?.displayname ?? _setup.t('files', 'Loading …'),\"no-toggle\":\"\",\"open\":_setup.sidebar.isOpen},on:{\"update:active\":function($event){return _vm.$set(_setup.sidebar, \"activeTab\", $event)},\"closed\":_setup.onClosed,\"opened\":_setup.onOpened,\"update:open\":_setup.onToggle},scopedSlots:_vm._u([(_setup.sidebar.currentNode)?{key:\"subname\",fn:function(){return [_c(_setup.FilesSidebarSubname,{attrs:{\"node\":_setup.sidebar.currentNode}})]},proxy:true}:null,(_setup.sidebar.currentContext)?{key:\"secondary-actions\",fn:function(){return _vm._l((_setup.sidebar.currentActions),function(action){return _c(_setup.NcActionButton,{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return action.onClick(_setup.sidebar.currentContext)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":action.iconSvgInline(_setup.sidebar.currentContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_setup.sidebar.currentContext))+\"\\n\\t\\t\")])})},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._v(\" \"),(_setup.sidebar.hasContext)?_vm._l((_setup.sidebar.currentTabs),function(tab){return _c(_setup.FilesSidebarTab,{key:tab.id,attrs:{\"active\":_setup.sidebar.activeTab === tab.id,\"tab\":tab}})}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.filesSidebarSubname},[(_setup.isFavourited)?_c(_setup.NcIconSvgWrapper,{attrs:{\"inline\":\"\",\"path\":_setup.mdiStar,\"name\":_setup.t('files', 'Favorite')}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_setup.size))]),_vm._v(\" \"),(_vm.node.mtime)?_c('span',[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcDateTime,{attrs:{\"timestamp\":_vm.node.mtime}})],1):_vm._e(),_vm._v(\" \"),(_vm.node.owner)?[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcUserBubble,{class:_vm.$style.filesSidebarSubname__userBubble,attrs:{\"title\":_setup.t('files', 'Owner'),\"user\":_vm.node.owner,\"display-name\":_vm.node.attributes['owner-display-name']}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebarSubname.vue?vue&type=template&id=7bd1e3c0\"\nimport script from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":_vm.tab.id,\"order\":_vm.tab.order,\"name\":_vm.tab.displayName},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.tab.iconSvgInline}})]},proxy:true}])},[_vm._v(\" \"),(_setup.loading || !_setup.context)?_c(_setup.NcEmptyContent,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}],null,false,1675040227)}):_c(_vm.tab.tagName,{tag:\"component\",domProps:{\"active\":_vm.active,\"node\":_setup.context.node,\"folder\":_setup.context.folder,\"view\":_setup.context.view}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { N as NcActionButton } from \"./chunks/NcActionButton-D7uypboC.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-Cbg5yktN.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-Xepxb1Nk.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-B2bgbBHw.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-JnumflF4.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BykT5Byh.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-BScPRxTJ.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-C4iIEWY3.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-BJnvmftc.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DRaKry-f.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-BOfIdgIu.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-KbbB-8vX.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-CI_e6Rva.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BN3w-BCp.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-C7Oywy1u.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-CsGyNFSh.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-D3ylJW58.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-CEo2tgBa.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-CHiZT-vH.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-mcLe7umL.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-BBqomFJ3.mjs\";\nimport { u } from \"./chunks/NcAvatar-BBqomFJ3.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-CP2UBH-9.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-BN1Qrbjc.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-OySgLqXi.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-D6Swkr1k.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Ddl_QlRN.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-q7zkDwqG.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-DlAxFoRr.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BgMXU5Dv.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-oyS__D-B.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-uYQMYeJS.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-DmRqcm3W.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-Bqjj-wmb.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-ClkGGFdW.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-B57HJpaE.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-Bd7m8ffs.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-CRL7kucw.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BOENrJAS.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-bdRBjKGq.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-tW-MwPUj.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-MEyDJghO.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-jHItu4LV.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CpgacYSd.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-BYFbKo6_.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-BrzZ8Bne.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-Ciok4H4t.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-DdkIQyoP.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CSeFP0Uz.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-BzTp7LfM.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-D4kc6Jjr.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-B8a5TW2l.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CFp3GPty.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CG7oWfBl.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-DnsOMAHk.mjs\";\nimport \"./chunks/createElementId-DhjFt1I9.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-BGmuXU7x.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-C3Nj11Wy.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-DrKzKPZL.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-BPhf3E7g.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-D8pmnLor.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-z2bZafO2.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-DV-x6Ag7.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CFvLzGNf.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-C82D8CSK.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-D4xfdT9T.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-CuCNjhc8.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-DdPPN-cP.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=7dfe8568\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebar.vue?vue&type=template&id=f91af60e&scoped=true\"\nimport script from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f91af60e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"files\"}},[(!_setup.isPublic)?_c(_setup.FilesNavigation):_vm._e(),_vm._v(\" \"),_c(_setup.FilesList,{attrs:{\"is-public\":_setup.isPublic}}),_vm._v(\" \"),(!_setup.isPublic)?_c(_setup.FilesSidebar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions } from '@nextcloud/files';\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { dirname } from 'path';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport logger from '../logger.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { executeAction } from '../utils/actionUtils.ts';\nimport { useRouteParameters } from './useRouteParameters.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport function useHotKeys() {\n const userConfigStore = useUserConfigStore();\n const { directory } = useRouteParameters();\n const router = useRouter();\n const route = useRoute();\n const actions = getFileActions();\n for (const action of actions) {\n if (!action.hotkey) {\n continue;\n }\n const key = action.hotkey.key.match(/^[a-z]$/)\n ? action.hotkey.key.toUpperCase()\n : action.hotkey.key;\n logger.debug(`Register hotkey for action \"${action.id}\"`);\n useHotKey(key, () => executeAction(action), {\n stop: true,\n prevent: true,\n alt: action.hotkey.alt,\n ctrl: action.hotkey.ctrl,\n shift: action.hotkey.shift,\n });\n }\n // alt+up go to parent directory\n useHotKey('ArrowUp', goToParentDir, {\n stop: true,\n prevent: true,\n alt: true,\n });\n // v toggle grid view\n useHotKey('v', toggleGridView, {\n stop: true,\n prevent: true,\n });\n logger.debug('Hotkeys registered');\n /**\n * Use the router to go to the parent directory\n */\n function goToParentDir() {\n const dir = dirname(directory.value);\n logger.debug('Navigating to parent directory', { dir });\n router.push({ params: { ...route.params }, query: { ...route.query, dir } });\n }\n /**\n * Toggle the grid view\n */\n function toggleGridView() {\n const value = userConfigStore.userConfig.grid_view;\n logger.debug('Toggling grid view', { old: value, new: !value });\n userConfigStore.update('grid_view', !value);\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=e1f85142\"\nimport script from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[', index, ']'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[]'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[]=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), ':list='].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), ':list=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\tresult.push([encode(key, options), keyValueSeparator, encode(value, options)].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push(encode(value, options));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push(encode(key, options));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key]];\n\t\t\t\t}\n\n\t\t\t\tfor (const item of arrayValue) {\n\t\t\t\t\taccumulator[key].push(item);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key].push(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction getUrlWithoutQuery(url) {\n\t// Avoid `split('?')` so query-heavy URLs don't allocate large arrays.\n\tconst queryStart = url.indexOf('?');\n\treturn queryStart === -1 ? url : url.slice(0, queryStart);\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value === null) {\n\t\treturn true;\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tif (/^&+$/.test(query)) {\n\t\treturn returnValue;\n\t}\n\n\tlet parameterStart = 0;\n\tlet firstSeparator = query.indexOf('&');\n\tif (firstSeparator === -1) {\n\t\tfirstSeparator = query.length;\n\t}\n\n\tfor (let index = firstSeparator; index <= query.length; index++) {\n\t\tif (index < query.length && query[index] !== '&') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (index === parameterStart) {\n\t\t\tparameterStart = index + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter = query.slice(parameterStart, index);\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\n\t\tparameterStart = index + 1;\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst typeOption = options.types[key];\n\t\t\t\tconst type = typeof typeOption === 'function' ? typeOption : (typeOption ? typeOption.replace('[]', '') : undefined);\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tlet value = object[key];\n\n\t\t// Apply replacer function if provided\n\t\tif (options.replacer) {\n\t\t\tvalue = options.replacer(key, value);\n\n\t\t\t// If replacer returns undefined, skip this key\n\t\t\tif (value === undefined) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\t// Apply replacer to array elements if provided\n\t\t\t// Note: We don't re-apply replacer to the array itself, only to elements\n\t\t\tlet processedArray = value;\n\t\t\tif (options.replacer) {\n\t\t\t\tprocessedArray = value.map((item, index) =>\n\t\t\t\t\toptions.replacer(`${key}[${index}]`, item),\n\t\t\t\t).filter(item => item !== undefined);\n\t\t\t}\n\n\t\t\tconst result = processedArray.reduce(formatter(key), []);\n\t\t\tconst arrayFormatSeparator = ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? options.arrayFormatSeparator : '&';\n\t\t\treturn result.join(arrayFormatSeparator);\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: getUrlWithoutQuery(url_ ?? ''),\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = getUrlWithoutQuery(removeHash(object.url)) || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url, 'https://query-string.invalid');\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tif (Array.isArray(filter)) {\n\t\tconst filterSet = new Set(filter);\n\t\treturn pick(input, key => !filterSet.has(key), options);\n\t}\n\n\treturn pick(input, (key, value) => !filter(key, value), options);\n}\n","/*\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { relative } from 'path';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated- and redirected-navigation errors but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)\n || isNavigationFailure(error, NavigationFailureType.redirected)) {\n logger.debug('Ignoring duplicated/redirected navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/apps/files'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view: defaultView() } },\n },\n {\n path: '/:view/:fileid(\\\\d+)?',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\n// Handle aborted navigation (NavigationGuards) gracefully\nrouter.onError((error) => {\n if (isNavigationFailure(error, NavigationFailureType.aborted)) {\n logger.debug('Navigation was aboorted', { error });\n }\n else {\n throw error;\n }\n});\n// If navigating back from a folder to a parent folder,\n// we need to keep the current dir fileid so it's highlighted\n// and scrolled into view.\nrouter.beforeResolve((to, from, next) => {\n if (to.params?.parentIntercept) {\n delete to.params.parentIntercept;\n return next();\n }\n if (to.params.view !== from.params.view) {\n // skip if different views\n return next();\n }\n const fromDir = (from.query?.dir || '/');\n const toDir = (to.query?.dir || '/');\n // We are going back to a parent directory\n if (relative(fromDir, toDir) === '..') {\n const { getNode } = useFilesStore();\n const { getPath } = usePathsStore();\n if (!from.params.view) {\n logger.error('No current view id found, cannot navigate to parent directory', { fromDir, toDir });\n return next();\n }\n // Get the previous parent's file id\n const fromSource = getPath(from.params.view, fromDir);\n if (!fromSource) {\n logger.error('No source found for the parent directory', { fromDir, toDir });\n return next();\n }\n const fileId = getNode(fromSource)?.fileid;\n if (!fileId) {\n logger.error('No fileid found for the parent directory', { fromDir, toDir, fromSource });\n return next();\n }\n logger.debug('Navigating back to parent directory', { fromDir, toDir, fileId });\n return next({\n name: 'filelist',\n query: to.query,\n params: {\n ...to.params,\n fileid: String(fileId),\n // Prevents the beforeEach from being called again\n parentIntercept: 'true',\n },\n // Replace the current history entry\n replace: true,\n });\n }\n // else, we just continue\n next();\n});\nsubscribe('files:node:deleted', (node) => {\n if (router.currentRoute.params.fileid === String(node.fileid)) {\n const params = { ...router.currentRoute.params };\n const { getPath } = usePathsStore(getPinia());\n const { getNode } = useFilesStore(getPinia());\n const source = getPath(router.currentRoute.params.view, node.dirname);\n const parentFolder = getNode(source);\n if (source && parentFolder) {\n params.fileid = String(parentFolder.fileid);\n }\n else {\n delete params.fileid;\n }\n const query = { ...router.currentRoute.query };\n delete query.opendetails;\n delete query.openfile;\n router.replace({\n ...router.currentRoute,\n name: router.currentRoute.name,\n params,\n query,\n });\n }\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n *\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name - The route name or null to keep current route and just update params/query\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n name ??= this.router.currentRoute.name;\n const location = { name, query, params };\n if (replace) {\n return this._router.replace(location);\n }\n return this._router.push(location);\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesApp from './FilesApp.vue';\nimport SettingsModel from './models/Setting.ts';\nimport router from './router/router.ts';\nimport RouterService from './services/RouterService.ts';\nimport SettingsService from './services/Settings.js';\nimport { getPinia } from './store/index.ts';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n const Router = new RouterService(router);\n Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router: window.OCP.Files.Router._router,\n pinia: getPinia(),\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../logger.ts'\n\nexport default class Settings {\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tlogger.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter((e) => e.name === view.name).length > 0) {\n\t\t\tlogger.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class Setting {\n #name;\n #options;\n /**\n * Create a new files app setting\n *\n * @param name - The name of this setting\n * @param options - The setting options\n * @param options.el - Function that returns an unmounted dom element to be added\n * @param options.open - Callback for when setting is added\n * @param options.close - Callback for when setting is closed\n * @param options.order - The order of this setting, lower numbers are shown first\n * @since 19.0.0\n */\n constructor(name, options) {\n this.#name = name;\n this.#options = {\n open: () => { },\n close: () => { },\n order: 0,\n ...options,\n };\n if (typeof this.#options.el !== 'function') {\n throw new Error('Setting must have an `el` function that returns a DOM element');\n }\n if (typeof this.#name !== 'string') {\n throw new Error('Setting must have a `name` string');\n }\n if (typeof this.#options.order !== 'number') {\n throw new Error('Setting must have an `order` number');\n }\n }\n get name() {\n return this.#name;\n }\n get el() {\n return this.#options.el;\n }\n get open() {\n return this.#options.open;\n }\n get close() {\n return this.#options.close;\n }\n get order() {\n return this.#options.order;\n }\n}\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (!activeNode.value?.id) {\n return;\n }\n // Sync even when the active node is the current folder: skipping that case\n // leaves a stale child fileid in the route, which then gets restored into\n // the sidebar when it reopens.\n if (activeNode.value.id === String(window.OCP.Files.Router.params?.fileid ?? '')) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.id });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: activeNode.value.id }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useActiveStore } from './active.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n // handle updating the active node\n const activeStore = useActiveStore();\n if (activeStore.activeNode && activeStore.activeNode.source in newNodes) {\n activeStore.activeNode = files.value[activeStore.activeNode.source];\n }\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n const newNode = await fetchNode(node.path);\n updateNodes([newNode]);\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n crop_image_previews: true,\n default_view: 'files',\n folder_tree: true,\n grid_view: false,\n show_files_extensions: true,\n show_hidden: false,\n show_mime_column: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n show_dialog_deletion: false,\n show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n const userConfig = ref({ ...initialUserConfig });\n /**\n * Update the user config local store\n *\n * @param key The config key\n * @param value The new value\n */\n function onUpdate(key, value) {\n set(userConfig.value, key, value);\n }\n /**\n * Update the user config local store AND on server side\n *\n * @param key The config key\n * @param value The new value\n */\n async function update(key, value) {\n // only update if a user is logged in (not the case for public shares)\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n value,\n });\n }\n emit('files:config:updated', { key, value });\n }\n // Register the event listener\n subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n return {\n userConfig,\n update,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__breadcrumbs[data-v-86e9be62]{flex:1 1 100% !important;width:100%;height:100%;margin:0;min-width:0}.files-list__breadcrumbs[data-v-86e9be62] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-86e9be62]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourcesContent\":[\"\\n.files-list__breadcrumbs {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tmargin: 0;\\n\\tmin-width: 0;\\n\\n\\t:deep() {\\n\\t\\ta {\\n\\t\\t\\tcursor: pointer !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&--with-progress {\\n\\t\\tflex-direction: column !important;\\n\\t\\talign-items: flex-start !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;width:100%;min-height:102px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-1e2b9696]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 44px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-inline-start: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:34px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon-preview-container{display:flex;overflow:hidden;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:6px;margin-inline-start:-16px}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,4FAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAIA,kHACC,cA/CU,CAgDV,yBAAA,CACA,0JACC,eAAA,CAMF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 28px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tinset-inline-start: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: $size + $stack-shift;\\n\\tpadding: $stack-shift $stack-shift * 2;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon-preview-container {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: $size - $stack-shift;\\n\\t\\theight: $size - $stack-shift;;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-inline-end: $stack-shift * 2;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t// Max 3 elements\\n\\t\\t\\t> .files-list__row-icon-preview-container + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-inline-start: $stack-shift * 2 - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-4505d262]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: var(--color-favorite);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\nmain.app-content[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\t// 34px added to align with the top of the cursor\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-action[data-v-5f3391ea]{--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}.files-list__row-action.files-list__row-action--inline[data-v-5f3391ea]{--max-icon-size: var(--default-clickable-area)}.files-list__row-action .files-list__row-action-icon[data-v-5f3391ea] svg{max-height:var(--max-icon-size) !important;max-width:var(--max-icon-size) !important}.files-list__row-action.files-list__row-action--destructive[data-v-5f3391ea] ::deep(button){color:var(--color-text-error) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,uFAAA,CAGA,wEACC,8CAAA,CAID,0EACC,0CAAA,CACA,yCAAA,CAIA,4FACC,wCAAA\",\"sourcesContent\":[\"\\n.files-list__row-action {\\n\\t--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\\n\\n\\t// inline icons can have clickable area size so they still fit into the row\\n\\t&.files-list__row-action--inline {\\n\\t\\t--max-icon-size: var(--default-clickable-area);\\n\\t}\\n\\n\\t// Some icons exceed the default size so we need to enforce a max width and height\\n\\t.files-list__row-action-icon :deep(svg) {\\n\\t\\tmax-height: var(--max-icon-size) !important;\\n\\t\\tmax-width: var(--max-icon-size) !important;\\n\\t}\\n\\n\\t&.files-list__row-action--destructive {\\n\\t\\t::deep(button) {\\n\\t\\t\\tcolor: var(--color-text-error) !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `button.files-list__row-name-link[data-v-dd56de22]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-dd56de22]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourcesContent\":[\"\\nbutton.files-list__row-name-link {\\n\\tbackground-color: unset;\\n\\tborder: none;\\n\\tfont-weight: normal;\\n\\n\\t&:active {\\n\\t\\t// No active styles - handled by the row entry\\n\\t\\tbackground-color: unset !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.recently-created-marker-icon[data-v-251f6582]{color:var(--color-element-success);min-width:unset !important;min-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,kCAAA,CAEA,0BAAA,CACA,2BAAA,CAGC,oDAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,yDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.recently-created-marker-icon {\\n\\tcolor: var(--color-element-success);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n\\tmin-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Show a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-378a6e4a]{margin-bottom:var(--body-container-margin);border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-378a6e4a]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,0CAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: var(--body-container-margin);\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n\\n\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-5a72550e]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-5a72550e]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-53193162]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-4a8557e6]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-4a8557e6]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-4a8557e6]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-4a8557e6]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-4a8557e6]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--button-padding, var(--cell-margin)) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-1a9725ff]{--row-height: 44px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 24px;--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));display:flex;flex-direction:column;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-1a9725ff]:has(.files-list__filters:empty){--fixed-block-start-position: 0px}.files-list[data-v-1a9725ff] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-1a9725ff] tbody tr{contain:strict}.files-list[data-v-1a9725ff] tbody tr:hover,.files-list[data-v-1a9725ff] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-1a9725ff] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-1a9725ff] .files-list__selected{padding-inline-end:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.files-list[data-v-1a9725ff] .files-list__table{display:block}.files-list[data-v-1a9725ff] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-1a9725ff] .files-list__table--hidden{visibility:hidden;z-index:-1;opacity:0}.files-list[data-v-1a9725ff] .files-list__filters{display:flex;gap:var(--default-grid-baseline);box-sizing:border-box;position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-1a9725ff] .files-list__filters:not(:empty){padding-block:calc(var(--default-grid-baseline, 4px)/2)}.files-list[data-v-1a9725ff] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height);flex:0 0 var(--row-height)}.files-list[data-v-1a9725ff] .files-list__thead,.files-list[data-v-1a9725ff] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-1a9725ff] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-1a9725ff] .files-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.files-list[data-v-1a9725ff] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-1a9725ff] td,.files-list[data-v-1a9725ff] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-1a9725ff] td span,.files-list[data-v-1a9725ff] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-1a9725ff] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-1a9725ff] .files-list__row-checkbox{justify-content:center}.files-list[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-1a9725ff] .files-list__row:hover,.files-list[data-v-1a9725ff] .files-list__row:focus,.files-list[data-v-1a9725ff] .files-list__row:active,.files-list[data-v-1a9725ff] .files-list__row--active,.files-list[data-v-1a9725ff] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-1a9725ff] .files-list__row:hover>*,.files-list[data-v-1a9725ff] .files-list__row:focus>*,.files-list[data-v-1a9725ff] .files-list__row:active>*,.files-list[data-v-1a9725ff] .files-list__row--active>*,.files-list[data-v-1a9725ff] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-1a9725ff] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-1a9725ff] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-1a9725ff] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-1a9725ff] .files-list__row-icon *{cursor:pointer}.files-list[data-v-1a9725ff] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-1a9725ff] .files-list__row-icon>span:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-1a9725ff] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-1a9725ff] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-1a9725ff] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-1a9725ff] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-1a9725ff] .files-list__row-icon-favorite,.files-list[data-v-1a9725ff] .files-list__row-icon-recently-created{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.6);max-width:calc(var(--icon-preview-size)*.6);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-1a9725ff] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-1a9725ff] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-1a9725ff] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-1a9725ff] .files-list__row-rename input:invalid{border-color:var(--color-border-error);color:var(--color-text-error)}.files-list[data-v-1a9725ff] .files-list__row-actions{width:auto}.files-list[data-v-1a9725ff] .files-list__row-actions~td,.files-list[data-v-1a9725ff] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-1a9725ff] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-1a9725ff] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-1a9725ff] .files-list__row-mime,.files-list[data-v-1a9725ff] .files-list__row-mtime,.files-list[data-v-1a9725ff] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-1a9725ff] .files-list__row-size{width:calc(var(--row-height)*2);justify-content:flex-end}.files-list[data-v-1a9725ff] .files-list__row-mtime{width:calc(var(--row-height)*2.5)}.files-list[data-v-1a9725ff] .files-list__row-mime{width:calc(var(--row-height)*3.5)}.files-list[data-v-1a9725ff] .files-list__row-column-custom{width:calc(var(--row-height)*2.5)}@media screen and (max-width: 512px){.files-list[data-v-1a9725ff] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 44px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: var(--default-clickable-area);\\n\\t--icon-preview-size: 24px;\\n\\n\\t--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&:has(&__filters:empty) {\\n\\t\\t--fixed-block-start-position: 0px;\\n\\t}\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__selected {\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tfont-variant-numeric: tabular-nums;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-block-start: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Visually hide the table when there are no files\\n\\t\\t\\t&--hidden {\\n\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t\\topacity: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__filters {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t// Pinned on top when scrolling above table header\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// ensure there is a background to hide the file list on scroll\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\t// fixed the size\\n\\t\\t\\tpadding-inline: var(--row-height) var(--default-grid-baseline, 4px);\\n\\t\\t\\theight: var(--fixed-block-start-position);\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:not(:empty) {\\n\\t\\t\\t\\tpadding-block: calc(var(--default-grid-baseline, 4px) / 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-inline-start: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tflex: 0 0 var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__thead {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t}\\n\\n\\t\\t// Empty content\\n\\t\\t.files-list__empty {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: start;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-inline-end: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview-container {\\n\\t\\t\\t\\tposition: relative; // Needed for the blurshash to be positioned correctly\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-blurhash {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tinset-block-start: 0;\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite,\\n\\t\\t\\t&-recently-created {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tinset-inline-end: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-block-start: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\tbutton.files-list__row-name-link {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\ttext-align: start;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: var(--border-width-input-focused) solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\\n\\t\\t\\t\\tpadding-inline-start: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-border-error);\\n\\t\\t\\t\\t\\tcolor: var(--color-text-error);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-inline-end: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime,\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime {\\n\\t\\t\\twidth: calc(var(--row-height) * 3.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\t}\\n}\\n\\n@media screen and (max-width: 512px) {\\n\\t.files-list :deep(.files-list__filters) {\\n\\t\\t// Reduce padding on mobile\\n\\t\\tpadding-inline: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list--grid tbody.files-list__tbody{--item-padding: 16px;--icon-preview-size: 166px;--name-height: var(--default-clickable-area);--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}.files-list--grid tbody.files-list__tbody tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}.files-list--grid tbody.files-list__tbody .files-list__row-icon-favorite,.files-list--grid tbody.files-list__tbody .files-list__row-icon-recently-created{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}.files-list--grid tbody.files-list__tbody .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}.files-list--grid tbody.files-list__tbody .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list--grid tbody.files-list__tbody .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}.files-list--grid tbody.files-list__tbody .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:var(--font-size-small)}.files-list--grid tbody.files-list__tbody .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--clickable-area)/4);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}@media screen and (max-width: 768px){.files-list--grid tbody.files-list__tbody{--mtime-height: 0px}.files-list--grid tbody.files-list__tbody .files-list__row-actions{inset-block-end:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-name-text{padding-inline-end:var(--clickable-area) !important}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,0CACC,oBAAA,CACA,0BAAA,CACA,4CAAA,CACA,2EAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,6CACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,oEACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,2GACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,0JAEC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,gEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,0FACC,8BAAA,CACA,+BAAA,CAGD,2FACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,iEACC,8BAAA,CACA,0BAAA,CACA,gCAAA,CAGD,mEACC,iBAAA,CACA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA,CAIF,qCAEC,0CACC,mBAAA,CAGA,mEACC,mCAAA,CAID,qEACC,mDAAA,CAAA\",\"sourcesContent\":[\"\\n// Grid mode\\n.files-list--grid tbody.files-list__tbody {\\n\\t--item-padding: 16px;\\n\\t--icon-preview-size: 166px;\\n\\t--name-height: var(--default-clickable-area);\\n\\t--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));\\n\\t--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);\\n\\t--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);\\n\\t--checkbox-padding: 0px;\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: var(--row-height);\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: var(--item-padding);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: calc(var(--item-padding) / 2);\\n\\t\\tinset-inline-start: calc(var(--item-padding) / 2);\\n\\t\\toverflow: hidden;\\n\\t\\t--checkbox-container-size: 44px;\\n\\t\\twidth: var(--checkbox-container-size);\\n\\t\\theight: var(--checkbox-container-size);\\n\\n\\t\\t// Add a background to the checkbox so we do not see the image through it.\\n\\t\\t.checkbox-radio-switch__content::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon in the top right\\n\\t.files-list__row-icon-favorite,\\n\\t.files-list__row-icon-recently-created {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tinset-inline-end: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: calc(var(--icon-preview-size) + var(--name-height));\\n\\t\\t// Ensure that the name outline is visible.\\n\\t\\toverflow: visible;\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\t// Ensure that the outline is not too close to the text.\\n\\t\\t\\tmargin-inline-start: -4px;\\n\\t\\t\\tpadding: 0px 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-mtime {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--mtime-height);\\n\\t\\tfont-size: var(--font-size-small);\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: calc(var(--clickable-area) / 4);\\n\\t\\tinset-block-end: calc(var(--mtime-height) / 2);\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\\n@media screen and (max-width: 768px) {\\n\\t// there is no mtime\\n\\t.files-list--grid tbody.files-list__tbody {\\n\\t\\t--mtime-height: 0px;\\n\\n\\t\\t// so we move the action to the name\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\tinset-block-end: var(--item-padding);\\n\\t\\t}\\n\\n\\t\\t// and we need to keep space on the name for the actions\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tpadding-inline-end: var(--clickable-area) !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota[data-v-062ef4b2]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-062ef4b2] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-062ef4b2]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\\n\\n\\t&--not-unlimited :deep(.app-navigation-entry__name) {\\n\\t\\tline-height: 1;\\n\\t\\tmargin-top: var(--app-navigation-quota-margin);\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: var(--app-navigation-quota-margin);\\n\\t\\tmargin-inline-start: var(--default-clickable-area);\\n\\t\\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-ed23df10]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-ed23df10]{display:flex;gap:var(--default-grid-baseline);align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-ed23df10]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-ed23df10]{flex:0 0}.files-list__header-actions[data-v-ed23df10]{min-width:fit-content !important}.files-list__header-upload-button--narrow[data-v-ed23df10]{position:fixed;inset-block-end:calc(1.5*var(--default-grid-baseline));inset-inline-end:calc(1.5*var(--default-grid-baseline))}.files-list__before[data-v-ed23df10]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*2);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding))}.files-list__empty-view-wrapper[data-v-ed23df10]{display:flex;height:100%}.files-list__refresh-icon[data-v-ed23df10]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-ed23df10]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,gCAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,2HAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,6CACC,gCAAA,CAIF,2DAEC,cAAA,CACA,sDAAA,CACA,uDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CACA,mFAAA,CAGD,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n:global(.toast-loading-icon) {\\n\\t// Reduce start margin (it was made for text but this is an icon)\\n\\tmargin-inline-start: -4px;\\n\\t// 16px icon + 5px on both sides\\n\\tmin-width: 26px;\\n}\\n\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\tposition: relative !important;\\n}\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\tmax-width: 100%;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin-block: var(--app-navigation-padding, 4px);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px);\\n\\n\\t\\t&--public {\\n\\t\\t\\t// There is no navigation toggle on public shares\\n\\t\\t\\tmargin-inline: 0 var(--app-navigation-padding, 4px);\\n\\t\\t}\\n\\n\\t\\t>* {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\n\\t\\t&-actions {\\n\\t\\t\\tmin-width: fit-content !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header-upload-button--narrow {\\n\\t\\t// this is teleported to body on narrow screens\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-end: calc(1.5 * var(--default-grid-baseline));\\n\\t\\tinset-inline-end: calc(1.5 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__before {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 2);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding));\\n\\t}\\n\\n\\t&__empty-view-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 var(--default-clickable-area);\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-clickable-area);\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-b3d7fbf2] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-b3d7fbf2]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-b3d7fbf2]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation[data-v-b3d7fbf2] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,sFACC,2BAAA\",\"sourcesContent\":[\"\\n.app-navigation {\\n\\t:deep(.app-navigation-entry.active .button-vue.icon-collapse:not(:hover)) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t}\\n\\n\\t> ul.app-navigation__list {\\n\\t\\t// Use flex gap value for more elegant spacing\\n\\t\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\\n.files-navigation {\\n\\t:deep(.app-navigation__content > ul.app-navigation__list) {\\n\\t\\twill-change: scroll-position;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--has-preview[data-v-f91af60e] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/plain\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/markdown\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-f91af60e]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}.app-sidebar[data-v-f91af60e] .app-sidebar-header__description{margin:0 16px 4px 16px !important}.app-sidebar .svg-icon[data-v-f91af60e] svg{width:20px;height:20px;fill:currentColor}.sidebar__description[data-v-f91af60e]{display:flex;flex-direction:column;width:100%;gap:8px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesSidebar.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA,CAIA,+DACC,iCAAA,CAKD,4CACC,UAAA,CACA,WAAA,CACA,iBAAA,CAKH,uCACE,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t&--has-preview:deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.app-sidebar-header__description {\\n\\t\\t\\tmargin: 0 16px 4px 16px !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.svg-icon {\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n}\\n\\n.sidebar__description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t\\tgap: 8px 0;\\n\\t}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._fileListFilterChips_yBylg {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterChips.vue\"],\"names\":[],\"mappings\":\";AAwCA;CACA,aAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\t