You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

core-login.js.map 903KB

1
  1. {"version":3,"file":"core-login.js?v=d10d599e950827d6f4e1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/paths/dist/index.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcPasswordField.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.esm.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/node_modules/decode-uri-component/index.js","webpack:///nextcloud/node_modules/split-on-first/index.js","webpack:///nextcloud/node_modules/query-string/node_modules/filter-obj/index.js","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/node_modules/query-string/index.js","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","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?b703","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a91a","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=script&lang=js&","webpack://nextcloud/./node_modules/vue-material-design-icons/Information.vue?8a14","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=template&id=030dae94&","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","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=043c34a0&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?15c8","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?f718","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?4361","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?e744","webpack://nextcloud/./core/src/views/Login.vue?3468","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=3fa8511b&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=11c76644&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=6636f1b2&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=359b835b&prod&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/underscore/modules/_setup.js","webpack:///nextcloud/node_modules/underscore/modules/restArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isObject.js","webpack:///nextcloud/node_modules/underscore/modules/isNull.js","webpack:///nextcloud/node_modules/underscore/modules/isUndefined.js","webpack:///nextcloud/node_modules/underscore/modules/isBoolean.js","webpack:///nextcloud/node_modules/underscore/modules/isElement.js","webpack:///nextcloud/node_modules/underscore/modules/_tagTester.js","webpack:///nextcloud/node_modules/underscore/modules/isString.js","webpack:///nextcloud/node_modules/underscore/modules/isNumber.js","webpack:///nextcloud/node_modules/underscore/modules/isDate.js","webpack:///nextcloud/node_modules/underscore/modules/isRegExp.js","webpack:///nextcloud/node_modules/underscore/modules/isError.js","webpack:///nextcloud/node_modules/underscore/modules/isSymbol.js","webpack:///nextcloud/node_modules/underscore/modules/isArrayBuffer.js","webpack:///nextcloud/node_modules/underscore/modules/isFunction.js","webpack:///nextcloud/node_modules/underscore/modules/_hasObjectTag.js","webpack:///nextcloud/node_modules/underscore/modules/_stringTagBug.js","webpack:///nextcloud/node_modules/underscore/modules/isDataView.js","webpack:///nextcloud/node_modules/underscore/modules/isArray.js","webpack:///nextcloud/node_modules/underscore/modules/_has.js","webpack:///nextcloud/node_modules/underscore/modules/isArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isFinite.js","webpack:///nextcloud/node_modules/underscore/modules/isNaN.js","webpack:///nextcloud/node_modules/underscore/modules/constant.js","webpack:///nextcloud/node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///nextcloud/node_modules/underscore/modules/_shallowProperty.js","webpack:///nextcloud/node_modules/underscore/modules/_getByteLength.js","webpack:///nextcloud/node_modules/underscore/modules/_isBufferLike.js","webpack:///nextcloud/node_modules/underscore/modules/isTypedArray.js","webpack:///nextcloud/node_modules/underscore/modules/_getLength.js","webpack:///nextcloud/node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///nextcloud/node_modules/underscore/modules/keys.js","webpack:///nextcloud/node_modules/underscore/modules/isEmpty.js","webpack:///nextcloud/node_modules/underscore/modules/isMatch.js","webpack:///nextcloud/node_modules/underscore/modules/underscore.js","webpack:///nextcloud/node_modules/underscore/modules/_toBufferView.js","webpack:///nextcloud/node_modules/underscore/modules/isEqual.js","webpack:///nextcloud/node_modules/underscore/modules/allKeys.js","webpack:///nextcloud/node_modules/underscore/modules/_methodFingerprint.js","webpack:///nextcloud/node_modules/underscore/modules/isMap.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakMap.js","webpack:///nextcloud/node_modules/underscore/modules/isSet.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakSet.js","webpack:///nextcloud/node_modules/underscore/modules/values.js","webpack:///nextcloud/node_modules/underscore/modules/pairs.js","webpack:///nextcloud/node_modules/underscore/modules/invert.js","webpack:///nextcloud/node_modules/underscore/modules/functions.js","webpack:///nextcloud/node_modules/underscore/modules/_createAssigner.js","webpack:///nextcloud/node_modules/underscore/modules/extend.js","webpack:///nextcloud/node_modules/underscore/modules/extendOwn.js","webpack:///nextcloud/node_modules/underscore/modules/defaults.js","webpack:///nextcloud/node_modules/underscore/modules/_baseCreate.js","webpack:///nextcloud/node_modules/underscore/modules/create.js","webpack:///nextcloud/node_modules/underscore/modules/clone.js","webpack:///nextcloud/node_modules/underscore/modules/tap.js","webpack:///nextcloud/node_modules/underscore/modules/toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_deepGet.js","webpack:///nextcloud/node_modules/underscore/modules/get.js","webpack:///nextcloud/node_modules/underscore/modules/has.js","webpack:///nextcloud/node_modules/underscore/modules/identity.js","webpack:///nextcloud/node_modules/underscore/modules/matcher.js","webpack:///nextcloud/node_modules/underscore/modules/property.js","webpack:///nextcloud/node_modules/underscore/modules/_optimizeCb.js","webpack:///nextcloud/node_modules/underscore/modules/_baseIteratee.js","webpack:///nextcloud/node_modules/underscore/modules/iteratee.js","webpack:///nextcloud/node_modules/underscore/modules/_cb.js","webpack:///nextcloud/node_modules/underscore/modules/mapObject.js","webpack:///nextcloud/node_modules/underscore/modules/noop.js","webpack:///nextcloud/node_modules/underscore/modules/propertyOf.js","webpack:///nextcloud/node_modules/underscore/modules/times.js","webpack:///nextcloud/node_modules/underscore/modules/random.js","webpack:///nextcloud/node_modules/underscore/modules/now.js","webpack:///nextcloud/node_modules/underscore/modules/_createEscaper.js","webpack:///nextcloud/node_modules/underscore/modules/_escapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/escape.js","webpack:///nextcloud/node_modules/underscore/modules/unescape.js","webpack:///nextcloud/node_modules/underscore/modules/_unescapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/templateSettings.js","webpack:///nextcloud/node_modules/underscore/modules/template.js","webpack:///nextcloud/node_modules/underscore/modules/result.js","webpack:///nextcloud/node_modules/underscore/modules/uniqueId.js","webpack:///nextcloud/node_modules/underscore/modules/chain.js","webpack:///nextcloud/node_modules/underscore/modules/_executeBound.js","webpack:///nextcloud/node_modules/underscore/modules/partial.js","webpack:///nextcloud/node_modules/underscore/modules/bind.js","webpack:///nextcloud/node_modules/underscore/modules/_isArrayLike.js","webpack:///nextcloud/node_modules/underscore/modules/_flatten.js","webpack:///nextcloud/node_modules/underscore/modules/bindAll.js","webpack:///nextcloud/node_modules/underscore/modules/memoize.js","webpack:///nextcloud/node_modules/underscore/modules/delay.js","webpack:///nextcloud/node_modules/underscore/modules/defer.js","webpack:///nextcloud/node_modules/underscore/modules/throttle.js","webpack:///nextcloud/node_modules/underscore/modules/debounce.js","webpack:///nextcloud/node_modules/underscore/modules/wrap.js","webpack:///nextcloud/node_modules/underscore/modules/negate.js","webpack:///nextcloud/node_modules/underscore/modules/compose.js","webpack:///nextcloud/node_modules/underscore/modules/after.js","webpack:///nextcloud/node_modules/underscore/modules/before.js","webpack:///nextcloud/node_modules/underscore/modules/once.js","webpack:///nextcloud/node_modules/underscore/modules/findKey.js","webpack:///nextcloud/node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/findIndex.js","webpack:///nextcloud/node_modules/underscore/modules/findLastIndex.js","webpack:///nextcloud/node_modules/underscore/modules/sortedIndex.js","webpack:///nextcloud/node_modules/underscore/modules/_createIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/indexOf.js","webpack:///nextcloud/node_modules/underscore/modules/lastIndexOf.js","webpack:///nextcloud/node_modules/underscore/modules/find.js","webpack:///nextcloud/node_modules/underscore/modules/findWhere.js","webpack:///nextcloud/node_modules/underscore/modules/each.js","webpack:///nextcloud/node_modules/underscore/modules/map.js","webpack:///nextcloud/node_modules/underscore/modules/_createReduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduceRight.js","webpack:///nextcloud/node_modules/underscore/modules/filter.js","webpack:///nextcloud/node_modules/underscore/modules/reject.js","webpack:///nextcloud/node_modules/underscore/modules/every.js","webpack:///nextcloud/node_modules/underscore/modules/some.js","webpack:///nextcloud/node_modules/underscore/modules/contains.js","webpack:///nextcloud/node_modules/underscore/modules/invoke.js","webpack:///nextcloud/node_modules/underscore/modules/pluck.js","webpack:///nextcloud/node_modules/underscore/modules/where.js","webpack:///nextcloud/node_modules/underscore/modules/max.js","webpack:///nextcloud/node_modules/underscore/modules/min.js","webpack:///nextcloud/node_modules/underscore/modules/toArray.js","webpack:///nextcloud/node_modules/underscore/modules/sample.js","webpack:///nextcloud/node_modules/underscore/modules/shuffle.js","webpack:///nextcloud/node_modules/underscore/modules/sortBy.js","webpack:///nextcloud/node_modules/underscore/modules/_group.js","webpack:///nextcloud/node_modules/underscore/modules/groupBy.js","webpack:///nextcloud/node_modules/underscore/modules/indexBy.js","webpack:///nextcloud/node_modules/underscore/modules/countBy.js","webpack:///nextcloud/node_modules/underscore/modules/partition.js","webpack:///nextcloud/node_modules/underscore/modules/size.js","webpack:///nextcloud/node_modules/underscore/modules/_keyInObj.js","webpack:///nextcloud/node_modules/underscore/modules/pick.js","webpack:///nextcloud/node_modules/underscore/modules/omit.js","webpack:///nextcloud/node_modules/underscore/modules/initial.js","webpack:///nextcloud/node_modules/underscore/modules/first.js","webpack:///nextcloud/node_modules/underscore/modules/rest.js","webpack:///nextcloud/node_modules/underscore/modules/last.js","webpack:///nextcloud/node_modules/underscore/modules/compact.js","webpack:///nextcloud/node_modules/underscore/modules/flatten.js","webpack:///nextcloud/node_modules/underscore/modules/difference.js","webpack:///nextcloud/node_modules/underscore/modules/without.js","webpack:///nextcloud/node_modules/underscore/modules/uniq.js","webpack:///nextcloud/node_modules/underscore/modules/union.js","webpack:///nextcloud/node_modules/underscore/modules/intersection.js","webpack:///nextcloud/node_modules/underscore/modules/unzip.js","webpack:///nextcloud/node_modules/underscore/modules/zip.js","webpack:///nextcloud/node_modules/underscore/modules/object.js","webpack:///nextcloud/node_modules/underscore/modules/range.js","webpack:///nextcloud/node_modules/underscore/modules/chunk.js","webpack:///nextcloud/node_modules/underscore/modules/_chainResult.js","webpack:///nextcloud/node_modules/underscore/modules/mixin.js","webpack:///nextcloud/node_modules/underscore/modules/underscore-array-methods.js","webpack:///nextcloud/node_modules/underscore/modules/index-default.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((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\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encodePath = encodePath;\nexports.basename = basename;\nexports.dirname = dirname;\nexports.joinPaths = joinPaths;\nexports.isSamePath = isSamePath;\n\nrequire(\"core-js/modules/es.array.map.js\");\n\nrequire(\"core-js/modules/es.regexp.exec.js\");\n\nrequire(\"core-js/modules/es.string.split.js\");\n\nrequire(\"core-js/modules/es.string.replace.js\");\n\nrequire(\"core-js/modules/es.array.filter.js\");\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nrequire(\"core-js/modules/es.array.concat.js\");\n\n/**\n * URI-Encodes a file path but keep the path slashes.\n */\nfunction encodePath(path) {\n if (!path) {\n return path;\n }\n\n return path.split('/').map(encodeURIComponent).join('/');\n}\n/**\n * Returns the base name of the given path.\n * For example for \"/abc/somefile.txt\" it will return \"somefile.txt\"\n */\n\n\nfunction basename(path) {\n return path.replace(/\\\\/g, '/').replace(/.*\\//, '');\n}\n/**\n * Returns the dir name of the given path.\n * For example for \"/abc/somefile.txt\" it will return \"/abc\"\n */\n\n\nfunction dirname(path) {\n return path.replace(/\\\\/g, '/').replace(/\\/[^\\/]*$/, '');\n}\n/**\n * Join path sections\n */\n\n\nfunction joinPaths() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (arguments.length < 1) {\n return '';\n } // discard empty arguments\n\n\n var nonEmptyArgs = args.filter(function (arg) {\n return arg.length > 0;\n });\n\n if (nonEmptyArgs.length < 1) {\n return '';\n }\n\n var lastArg = nonEmptyArgs[nonEmptyArgs.length - 1];\n var leadingSlash = nonEmptyArgs[0].charAt(0) === '/';\n var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/';\n var sections = nonEmptyArgs.reduce(function (acc, section) {\n return acc.concat(section.split('/'));\n }, []);\n var first = !leadingSlash;\n var path = sections.reduce(function (acc, section) {\n if (section === '') {\n return acc;\n }\n\n if (first) {\n first = false;\n return acc + section;\n }\n\n return acc + '/' + section;\n }, '');\n\n if (trailingSlash) {\n // add it back\n return path + '/';\n }\n\n return path;\n}\n/**\n * Returns whether the given paths are the same, without\n * leading, trailing or doubled slashes and also removing\n * the dot sections.\n */\n\n\nfunction isSamePath(path1, path2) {\n var pathSections1 = (path1 || '').split('/').filter(function (p) {\n return p !== '.';\n });\n var pathSections2 = (path2 || '').split('/').filter(function (p) {\n return p !== '.';\n });\n path1 = joinPaths.apply(undefined, pathSections1);\n path2 = joinPaths.apply(undefined, pathSections2);\n return path1 === path2;\n}\n//# sourceMappingURL=index.js.map","/*! For license information please see NcPasswordField.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcPasswordField\"]=t())}(self,(()=>(()=>{var e={9456:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>c});var o=a(9104),i=a(1205),r=a(5512),n=a.n(r),s=a(6915),l=a.n(s);const c={name:\"NcInputField\",components:{NcButton:o.default,AlertCircle:n(),Check:l()},inheritAttrs:!1,props:{value:{type:String,required:!0},type:{type:String,default:\"text\",validator:function(e){return[\"text\",\"password\",\"email\",\"tel\",\"url\",\"search\",\"number\"].includes(e)}},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},labelVisible:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:\"\"},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:\"\"},disabled:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:\"\"}},emits:[\"update:value\",\"trailing-button-click\"],computed:{computedId:function(){return this.$attrs.id&&\"\"!==this.$attrs.id?this.$attrs.id:this.inputName},inputName:function(){return\"input\"+(0,i.Z)()},hasLeadingIcon:function(){return this.$slots.default},hasTrailingIcon:function(){return this.success},hasPlaceholder:function(){return\"\"!==this.placeholder&&void 0!==this.placeholder},computedPlaceholder:function(){return this.labelVisible?this.hasPlaceholder?this.placeholder:\"\":this.hasPlaceholder?this.placeholder:this.label},isValidLabel:function(){var e=this.label||this.labelOutside;return e||console.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\"),e}},methods:{handleInput:function(e){this.$emit(\"update:value\",e.target.value)},handleTrailingButtonClick:function(e){this.$emit(\"trailing-button-click\",e)}}}},1039:(e,t,a)=>{\"use strict\";a.d(t,{s:()=>o,x:()=>i});var o=function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"input-field\"},[!e.labelOutside&&e.isValidLabel?t(\"label\",{staticClass:\"input-field__label\",class:{\"input-field__label--hidden\":!e.labelVisible},attrs:{for:e.computedId}},[e._v(\"\\n\\t\\t\"+e._s(e.label)+\"\\n\\t\")]):e._e(),e._v(\" \"),t(\"div\",{staticClass:\"input-field__main-wrapper\"},[t(\"input\",e._g(e._b({ref:\"input\",staticClass:\"input-field__input\",class:[e.inputClass,{\"input-field__input--trailing-icon\":e.showTrailingButton||e.hasTrailingIcon,\"input-field__input--leading-icon\":e.hasLeadingIcon,\"input-field__input--success\":e.success,\"input-field__input--error\":e.error}],attrs:{id:e.computedId,type:e.type,disabled:e.disabled,placeholder:e.computedPlaceholder,\"aria-describedby\":e.helperText.length>0?\"\".concat(e.inputName,\"-helper-text\"):\"\",\"aria-live\":\"polite\"},domProps:{value:e.value},on:{input:e.handleInput}},\"input\",e.$attrs,!1),e.$listeners)),e._v(\" \"),t(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.hasLeadingIcon,expression:\"hasLeadingIcon\"}],staticClass:\"input-field__icon input-field__icon--leading\"},[e._t(\"default\")],2),e._v(\" \"),e.showTrailingButton?t(\"NcButton\",{staticClass:\"input-field__clear-button\",attrs:{type:\"tertiary-no-background\",\"aria-label\":e.trailingButtonLabel,disabled:e.disabled},on:{click:e.handleTrailingButtonClick},scopedSlots:e._u([{key:\"icon\",fn:function(){return[e._t(\"trailing-button-icon\")]},proxy:!0}],null,!0)}):e.success||e.error?t(\"div\",{staticClass:\"input-field__icon input-field__icon--trailing\"},[e.success?t(\"Check\",{attrs:{size:18}}):e.error?t(\"AlertCircle\",{attrs:{size:18}}):e._e()],1):e._e()],1),e._v(\" \"),e.helperText.length>0?t(\"p\",{staticClass:\"input-field__helper-text-message\",class:{\"input-field__helper-text-message--error\":e.error,\"input-field__helper-text-message--success\":e.success},attrs:{id:\"\".concat(e.inputName,\"-helper-text\")}},[e.success?t(\"Check\",{staticClass:\"input-field__helper-text-message__icon\",attrs:{size:18}}):e.error?t(\"AlertCircle\",{staticClass:\"input-field__helper-text-message__icon\",attrs:{size:18}}):e._e(),e._v(\"\\n\\t\\t\"+e._s(e.helperText)+\"\\n\\t\")],1):e._e()])},i=[]},9104:(e,t,a)=>{\"use strict\";function o(e){return o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},o(e)}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function n(e,t,a){return(t=function(e){var t=function(e,t){if(\"object\"!==o(e)||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var i=a.call(e,t||\"default\");if(\"object\"!==o(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,{default:()=>x});const s={name:\"NcButton\",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:function(e){return-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e)},default:\"secondary\"},nativeType:{type:String,validator:function(e){return-1!==[\"submit\",\"reset\",\"button\"].indexOf(e)},default:\"button\"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render:function(e){var t,a,o,i,s,l=this,c=null===(t=this.$slots.default)||void 0===t||null===(a=t[0])||void 0===a||null===(o=a.text)||void 0===o||null===(i=o.trim)||void 0===i?void 0:i.call(o),u=!!c,d=null===(s=this.$slots)||void 0===s?void 0:s.icon;c||this.ariaLabel||console.warn(\"You need to fill either the text or the ariaLabel props in the button component.\",{text:c,ariaLabel:this.ariaLabel},this);var m=function(){var t,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=a.navigate,i=a.isActive,s=a.isExactActive;return e(l.to||!l.href?\"button\":\"a\",{class:[\"button-vue\",(t={\"button-vue--icon-only\":d&&!u,\"button-vue--text-only\":u&&!d,\"button-vue--icon-and-text\":d&&u},n(t,\"button-vue--vue-\".concat(l.type),l.type),n(t,\"button-vue--wide\",l.wide),n(t,\"active\",i),n(t,\"router-link-exact-active\",s),t)],attrs:r({\"aria-label\":l.ariaLabel,disabled:l.disabled,type:l.href?null:l.nativeType,role:l.href?\"button\":null,href:!l.to&&l.href?l.href:null},l.$attrs),on:r(r({},l.$listeners),{},{click:function(e){var t,a;null===(t=l.$listeners)||void 0===t||null===(a=t.click)||void 0===a||a.call(t,e),null==o||o(e)}})},[e(\"span\",{class:\"button-vue__wrapper\"},[d?e(\"span\",{class:\"button-vue__icon\",attrs:{\"aria-hidden\":l.ariaHidden}},[l.$slots.icon]):null,u?e(\"span\",{class:\"button-vue__text\"},[c]):null])])};return this.to?e(\"router-link\",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:m}}):m()}};var l=a(3379),c=a.n(l),u=a(7795),d=a.n(u),m=a(569),p=a.n(m),g=a(3565),h=a.n(g),v=a(9216),b=a.n(v),A=a(4589),f=a.n(A),y=a(1898),C={};C.styleTagTransform=f(),C.setAttributes=h(),C.insert=p().bind(null,\"head\"),C.domAPI=d(),C.insertStyleElement=b();c()(y.Z,C);y.Z&&y.Z.locals&&y.Z.locals;var k=a(1900),S=a(2102),w=a.n(S),j=(0,k.Z)(s,undefined,undefined,!1,null,\"2e49be1e\",null);\"function\"==typeof w()&&w()(j);const x=j.exports},932:(e,t,a)=>{\"use strict\";a.d(t,{t:()=>n});var o=a(7931),i=(0,o.getGettextBuilder)().detectLocale();[{locale:\"ar\",translations:{\"{tag} (invisible)\":\"{tag} (غير مرئي)\",\"{tag} (restricted)\":\"{tag} (مقيد)\",Actions:\"الإجراءات\",Activities:\"النشاطات\",\"Animals & Nature\":\"الحيوانات والطبيعة\",\"Anything shared with the same group of people will show up here\":\"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا\",\"Avatar of {displayName}\":\"صورة {displayName} الرمزية\",\"Avatar of {displayName}, {status}\":\"صورة {displayName} الرمزية، {status}\",\"Cancel changes\":\"إلغاء التغييرات\",\"Change title\":\"تغيير العنوان\",Choose:\"إختيار\",\"Clear text\":\"مسح النص\",Close:\"أغلق\",\"Close modal\":\"قفل الشرط\",\"Close navigation\":\"إغلاق المتصفح\",\"Close sidebar\":\"قفل الشريط الجانبي\",\"Confirm changes\":\"تأكيد التغييرات\",Custom:\"مخصص\",\"Edit item\":\"تعديل عنصر\",\"Error getting related resources\":\"خطأ في تحصيل مصادر ذات صلة\",\"External documentation for {title}\":\"الوثائق الخارجية لـ{title}\",Favorite:\"مفضلة\",Flags:\"الأعلام\",\"Food & Drink\":\"الطعام والشراب\",\"Frequently used\":\"كثيرا ما تستخدم\",Global:\"عالمي\",\"Go back to the list\":\"العودة إلى القائمة\",\"Hide password\":\"إخفاء كلمة السر\",\"Message limit of {count} characters reached\":\"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف\",\"More items …\":\"عناصر أخرى ...\",Next:\"التالي\",\"No emoji found\":\"لم يتم العثور على أي رمز تعبيري\",\"No results\":\"ليس هناك أية نتيجة\",Objects:\"الأشياء\",Open:\"فتح\",'Open link to \"{resourceTitle}\"':'فتح رابط إلى \"{resourceTitle}\"',\"Open navigation\":\"فتح المتصفح\",\"Password is secure\":\"كلمة السر مُؤمّنة\",\"Pause slideshow\":\"إيقاف العرض مؤقتًا\",\"People & Body\":\"الناس والجسم\",\"Pick an emoji\":\"اختر رمزًا تعبيريًا\",\"Please select a time zone:\":\"الرجاء تحديد المنطقة الزمنية:\",Previous:\"السابق\",\"Related resources\":\"مصادر ذات صلة\",Search:\"بحث\",\"Search results\":\"نتائج البحث\",\"Select a tag\":\"اختر علامة\",Settings:\"الإعدادات\",\"Settings navigation\":\"إعدادات المتصفح\",\"Show password\":\"أعرض كلمة السر\",\"Smileys & Emotion\":\"الوجوه و الرموز التعبيرية\",\"Start slideshow\":\"بدء العرض\",Submit:\"إرسال\",Symbols:\"الرموز\",\"Travel & Places\":\"السفر والأماكن\",\"Type to search time zone\":\"اكتب للبحث عن منطقة زمنية\",\"Unable to search the group\":\"تعذر البحث في المجموعة\",\"Undo changes\":\"التراجع عن التغييرات\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ...\"}},{locale:\"br\",translations:{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",Actions:\"Oberioù\",Activities:\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",Choose:\"Dibab\",Close:\"Serriñ\",Custom:\"Personelañ\",Flags:\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",Next:\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",Objects:\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",Previous:\"A-raok\",Search:\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",Settings:\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",Symbols:\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{locale:\"ca\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",Actions:\"Accions\",Activities:\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Anything shared with the same group of people will show up here\":\"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancel·la els canvis\",\"Change title\":\"Canviar títol\",Choose:\"Tria\",\"Clear text\":\"Netejar text\",Close:\"Tanca\",\"Close modal\":\"Tancar el mode\",\"Close navigation\":\"Tanca la navegació\",\"Close sidebar\":\"Tancar la barra lateral\",\"Confirm changes\":\"Confirmeu els canvis\",Custom:\"Personalitzat\",\"Edit item\":\"Edita l'element\",\"Error getting related resources\":\"Error obtenint els recursos relacionats\",\"Error parsing svg\":\"Error en l'anàlisi del svg\",\"External documentation for {title}\":\"Documentació externa per a {title}\",Favorite:\"Preferit\",Flags:\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",Global:\"Global\",\"Go back to the list\":\"Torna a la llista\",\"Hide password\":\"Amagar contrasenya\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"More items …\":\"Més artícles...\",Next:\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",Objects:\"Objectes\",Open:\"Obrir\",'Open link to \"{resourceTitle}\"':'Obrir enllaç a \"{resourceTitle}\"',\"Open navigation\":\"Obre la navegació\",\"Password is secure\":\"Contrasenya segura<br>\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Please select a time zone:\":\"Seleccioneu una zona horària:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionats\",Search:\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Seleccioneu una etiqueta\",Settings:\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Show password\":\"Mostrar contrasenya\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",Submit:\"Envia\",Symbols:\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Type to search time zone\":\"Escriviu per cercar la zona horària\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Undo changes\":\"Desfés els canvis\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escriu missatge, fes servir \"@\" per esmentar algú, fes servir \":\" per autocompletar emojis...'}},{locale:\"cs_CZ\",translations:{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",Actions:\"Akce\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Anything shared with the same group of people will show up here\":\"Cokoli nasdíleného stejné skupině lidí se zobrazí zde\",\"Avatar of {displayName}\":\"Zástupný obrázek uživatele {displayName}\",\"Avatar of {displayName}, {status}\":\"Zástupný obrázek uživatele {displayName}, {status}\",\"Cancel changes\":\"Zrušit změny\",\"Change title\":\"Změnit nadpis\",Choose:\"Zvolit\",\"Clear text\":\"Čitelný text\",Close:\"Zavřít\",\"Close modal\":\"Zavřít dialogové okno\",\"Close navigation\":\"Zavřít navigaci\",\"Close sidebar\":\"Zavřít postranní panel\",\"Confirm changes\":\"Potvrdit změny\",Custom:\"Uživatelsky určené\",\"Edit item\":\"Upravit položku\",\"Error getting related resources\":\"Chyba při získávání souvisejících prostředků\",\"Error parsing svg\":\"Chyba při zpracovávání svg\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",Favorite:\"Oblíbené\",Flags:\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",Global:\"Globální\",\"Go back to the list\":\"Jít zpět na seznam\",\"Hide password\":\"Skrýt heslo\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"More items …\":\"Další položky…\",Next:\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",Objects:\"Objekty\",Open:\"Otevřít\",'Open link to \"{resourceTitle}\"':\"Otevřít odkaz na „{resourceTitle}“\",\"Open navigation\":\"Otevřít navigaci\",\"Password is secure\":\"Heslo je bezpečné\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Please select a time zone:\":\"Vyberte časovou zónu:\",Previous:\"Předchozí\",\"Related resources\":\"Související prostředky\",Search:\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",Settings:\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Show password\":\"Zobrazit heslo\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",Submit:\"Odeslat\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Type to search time zone\":\"Psaním vyhledejte časovou zónu\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Undo changes\":\"Vzít změny zpět\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…\"}},{locale:\"da\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Anything shared with the same group of people will show up here\":\"Alt der deles med samme gruppe af personer vil vises her\",\"Avatar of {displayName}\":\"Avatar af {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar af {displayName}, {status}\",\"Cancel changes\":\"Annuller ændringer\",\"Change title\":\"Ret titel\",Choose:\"Vælg\",\"Clear text\":\"Ryd tekst\",Close:\"Luk\",\"Close modal\":\"Luk vindue\",\"Close navigation\":\"Luk navigation\",\"Close sidebar\":\"Luk sidepanel\",\"Confirm changes\":\"Bekræft ændringer\",Custom:\"Brugerdefineret\",\"Edit item\":\"Rediger emne\",\"Error getting related resources\":\"Kunne ikke hente tilknyttede data\",\"Error parsing svg\":\"Fejl ved analysering af svg\",\"External documentation for {title}\":\"Ekstern dokumentation for {title}\",Favorite:\"Favorit\",Flags:\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",Global:\"Global\",\"Go back to the list\":\"Tilbage til listen\",\"Hide password\":\"Skjul kodeord\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"More items …\":\"Mere ...\",Next:\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åbn\",'Open link to \"{resourceTitle}\"':'Åbn link til \"{resourceTitle}\"',\"Open navigation\":\"Åbn navigation\",\"Password is secure\":\"Kodeordet er sikkert\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Please select a time zone:\":\"Vælg venligst en tidszone:\",Previous:\"Forrige\",\"Related resources\":\"Relaterede emner\",Search:\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",Settings:\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Show password\":\"Vis kodeord\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Type to search time zone\":\"Indtast for at søge efter tidszone\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Undo changes\":\"Fortryd ændringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv besked, brug \"@\" for at nævne nogen, brug \":\" til emoji-autofuldførelse ...'}},{locale:\"de\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Gegenstände\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte wählen Sie eine Zeitzone:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"de_DE\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Objekte\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte eine Zeitzone auswählen:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um eine Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"el\",translations:{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",Actions:\"Ενέργειες\",Activities:\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Anything shared with the same group of people will show up here\":\"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ\",\"Avatar of {displayName}\":\"Άβαταρ του {displayName}\",\"Avatar of {displayName}, {status}\":\"Άβαταρ του {displayName}, {status}\",\"Cancel changes\":\"Ακύρωση αλλαγών\",\"Change title\":\"Αλλαγή τίτλου\",Choose:\"Επιλογή\",\"Clear text\":\"Εκκαθάριση κειμένου\",Close:\"Κλείσιμο\",\"Close modal\":\"Βοηθητικό κλείσιμο\",\"Close navigation\":\"Κλείσιμο πλοήγησης\",\"Close sidebar\":\"Κλείσιμο πλευρικής μπάρας\",\"Confirm changes\":\"Επιβεβαίωση αλλαγών\",Custom:\"Προσαρμογή\",\"Edit item\":\"Επεξεργασία\",\"Error getting related resources\":\"Σφάλμα λήψης σχετικών πόρων\",\"Error parsing svg\":\"Σφάλμα ανάλυσης svg\",\"External documentation for {title}\":\"Εξωτερική τεκμηρίωση για {title}\",Favorite:\"Αγαπημένα\",Flags:\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",Global:\"Καθολικό\",\"Go back to the list\":\"Επιστροφή στην αρχική λίστα \",\"Hide password\":\"Απόκρυψη κωδικού πρόσβασης\",\"Message limit of {count} characters reached\":\"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος\",\"More items …\":\"Περισσότερα στοιχεία …\",Next:\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",Objects:\"Αντικείμενα\",Open:\"Άνοιγμα\",'Open link to \"{resourceTitle}\"':'Άνοιγμα συνδέσμου στο \"{resourceTitle}\"',\"Open navigation\":\"Άνοιγμα πλοήγησης\",\"Password is secure\":\"Ο κωδικός πρόσβασης είναι ασφαλής\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Please select a time zone:\":\"Παρακαλούμε επιλέξτε μια ζώνη ώρας:\",Previous:\"Προηγούμενο\",\"Related resources\":\"Σχετικοί πόροι\",Search:\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",Settings:\"Ρυθμίσεις\",\"Settings navigation\":\"Πλοήγηση ρυθμίσεων\",\"Show password\":\"Εμφάνιση κωδικού πρόσβασης\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",Submit:\"Υποβολή\",Symbols:\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Type to search time zone\":\"Πληκτρολογήστε για αναζήτηση ζώνης ώρας\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\",\"Undo changes\":\"Αναίρεση Αλλαγών\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε \"@\" για να αναφέρετε κάποιον, χρησιμοποιείστε \":\" για αυτόματη συμπλήρωση emoji …'}},{locale:\"en_GB\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",Actions:\"Actions\",Activities:\"Activities\",\"Animals & Nature\":\"Animals & Nature\",\"Anything shared with the same group of people will show up here\":\"Anything shared with the same group of people will show up here\",\"Avatar of {displayName}\":\"Avatar of {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar of {displayName}, {status}\",\"Cancel changes\":\"Cancel changes\",\"Change title\":\"Change title\",Choose:\"Choose\",\"Clear text\":\"Clear text\",Close:\"Close\",\"Close modal\":\"Close modal\",\"Close navigation\":\"Close navigation\",\"Close sidebar\":\"Close sidebar\",\"Confirm changes\":\"Confirm changes\",Custom:\"Custom\",\"Edit item\":\"Edit item\",\"Error getting related resources\":\"Error getting related resources\",\"Error parsing svg\":\"Error parsing svg\",\"External documentation for {title}\":\"External documentation for {title}\",Favorite:\"Favourite\",Flags:\"Flags\",\"Food & Drink\":\"Food & Drink\",\"Frequently used\":\"Frequently used\",Global:\"Global\",\"Go back to the list\":\"Go back to the list\",\"Hide password\":\"Hide password\",\"Message limit of {count} characters reached\":\"Message limit of {count} characters reached\",\"More items …\":\"More items …\",Next:\"Next\",\"No emoji found\":\"No emoji found\",\"No results\":\"No results\",Objects:\"Objects\",Open:\"Open\",'Open link to \"{resourceTitle}\"':'Open link to \"{resourceTitle}\"',\"Open navigation\":\"Open navigation\",\"Password is secure\":\"Password is secure\",\"Pause slideshow\":\"Pause slideshow\",\"People & Body\":\"People & Body\",\"Pick an emoji\":\"Pick an emoji\",\"Please select a time zone:\":\"Please select a time zone:\",Previous:\"Previous\",\"Related resources\":\"Related resources\",Search:\"Search\",\"Search results\":\"Search results\",\"Select a tag\":\"Select a tag\",Settings:\"Settings\",\"Settings navigation\":\"Settings navigation\",\"Show password\":\"Show password\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start slideshow\",Submit:\"Submit\",Symbols:\"Symbols\",\"Travel & Places\":\"Travel & Places\",\"Type to search time zone\":\"Type to search time zone\",\"Unable to search the group\":\"Unable to search the group\",\"Undo changes\":\"Undo changes\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …'}},{locale:\"eo\",translations:{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",Actions:\"Agoj\",Activities:\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",Choose:\"Elektu\",Close:\"Fermu\",Custom:\"Propra\",Flags:\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",Next:\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",Objects:\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",Previous:\"Antaŭa\",Search:\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",Settings:\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",Symbols:\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{locale:\"es\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",Actions:\"Acciones\",Activities:\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Anything shared with the same group of people will show up here\":\"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar cambios\",\"Change title\":\"Cambiar título\",Choose:\"Elegir\",\"Clear text\":\"Limpiar texto\",Close:\"Cerrar\",\"Close modal\":\"Cerrar modal\",\"Close navigation\":\"Cerrar navegación\",\"Close sidebar\":\"Cerrar barra lateral\",\"Confirm changes\":\"Confirmar cambios\",Custom:\"Personalizado\",\"Edit item\":\"Editar elemento\",\"Error getting related resources\":\"Se encontró un error al obtener los recursos relacionados\",\"Error parsing svg\":\"Error procesando svg\",\"External documentation for {title}\":\"Documentacion externa de {title}\",Favorite:\"Favorito\",Flags:\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",Global:\"Global\",\"Go back to the list\":\"Volver a la lista\",\"Hide password\":\"Ocultar contraseña\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"More items …\":\"Más ítems...\",Next:\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",Objects:\"Objetos\",Open:\"Abrir\",'Open link to \"{resourceTitle}\"':'Abrir enlace a \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegación\",\"Password is secure\":\"La contraseña es segura\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Please select a time zone:\":\"Por favor elige un huso de horario:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",Settings:\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Show password\":\"Mostrar contraseña\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Type to search time zone\":\"Escribe para buscar un huso de horario\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Undo changes\":\"Deshacer cambios\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escribir mensaje, utilice \"@\" para mencionar a alguien, utilice \":\" para autocompletado de emojis ...'}},{locale:\"eu\",translations:{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",Actions:\"Ekintzak\",Activities:\"Jarduerak\",\"Animals & Nature\":\"Animaliak eta Natura\",\"Anything shared with the same group of people will show up here\":\"Pertsona-talde berarekin partekatutako edozer agertuko da hemen\",\"Avatar of {displayName}\":\"{displayName}-(e)n irudia\",\"Avatar of {displayName}, {status}\":\"{displayName} -(e)n irudia, {status}\",\"Cancel changes\":\"Ezeztatu aldaketak\",\"Change title\":\"Aldatu titulua\",Choose:\"Aukeratu\",\"Clear text\":\"Garbitu testua\",Close:\"Itxi\",\"Close modal\":\"Itxi modala\",\"Close navigation\":\"Itxi nabigazioa\",\"Close sidebar\":\"Itxi albo-barra\",\"Confirm changes\":\"Baieztatu aldaketak\",Custom:\"Pertsonalizatua\",\"Edit item\":\"Editatu elementua\",\"Error getting related resources\":\"Errorea erlazionatutako baliabideak lortzerakoan\",\"Error parsing svg\":\"Errore bat gertatu da svg-a analizatzean\",\"External documentation for {title}\":\"Kanpoko dokumentazioa {title}(r)entzat\",Favorite:\"Gogokoa\",Flags:\"Banderak\",\"Food & Drink\":\"Janaria eta edariak\",\"Frequently used\":\"Askotan erabilia\",Global:\"Globala\",\"Go back to the list\":\"Bueltatu zerrendara\",\"Hide password\":\"Ezkutatu pasahitza\",\"Message limit of {count} characters reached\":\"Mezuaren {count} karaketere-limitera heldu zara\",\"More items …\":\"Elementu gehiago …\",Next:\"Hurrengoa\",\"No emoji found\":\"Ez da emojirik aurkitu\",\"No results\":\"Emaitzarik ez\",Objects:\"Objektuak\",Open:\"Ireki\",'Open link to \"{resourceTitle}\"':'Ireki esteka: \"{resourceTitle}\"',\"Open navigation\":\"Ireki nabigazioa\",\"Password is secure\":\"Pasahitza segurua da\",\"Pause slideshow\":\"Pausatu diaporama\",\"People & Body\":\"Jendea eta gorputza\",\"Pick an emoji\":\"Hautatu emoji bat\",\"Please select a time zone:\":\"Mesedez hautatu ordu-zona bat:\",Previous:\"Aurrekoa\",\"Related resources\":\"Erlazionatutako baliabideak\",Search:\"Bilatu\",\"Search results\":\"Bilaketa emaitzak\",\"Select a tag\":\"Hautatu etiketa bat\",Settings:\"Ezarpenak\",\"Settings navigation\":\"Nabigazio ezarpenak\",\"Show password\":\"Erakutsi pasahitza\",\"Smileys & Emotion\":\"Smileyak eta emozioa\",\"Start slideshow\":\"Hasi diaporama\",Submit:\"Bidali\",Symbols:\"Sinboloak\",\"Travel & Places\":\"Bidaiak eta lekuak\",\"Type to search time zone\":\"Idatzi ordu-zona bat bilatzeko\",\"Unable to search the group\":\"Ezin izan da taldea bilatu\",\"Undo changes\":\"Aldaketak desegin\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Idatzi mezua, erabili \"@\" norbait aipatzeko, erabili \":\" emojiak automatikoki osatzeko...'}},{locale:\"fi_FI\",translations:{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",Actions:\"Toiminnot\",Activities:\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Avatar of {displayName}\":\"Käyttäjän {displayName} avatar\",\"Avatar of {displayName}, {status}\":\"Käyttäjän {displayName} avatar, {status}\",\"Cancel changes\":\"Peruuta muutokset\",Choose:\"Valitse\",Close:\"Sulje\",\"Close navigation\":\"Sulje navigaatio\",\"Confirm changes\":\"Vahvista muutokset\",Custom:\"Mukautettu\",\"Edit item\":\"Muokkaa kohdetta\",\"External documentation for {title}\":\"Ulkoinen dokumentaatio kohteelle {title}\",Flags:\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",Global:\"Yleinen\",\"Go back to the list\":\"Siirry takaisin listaan\",\"Message limit of {count} characters reached\":\"Viestin merkken enimmäisimäärä {count} täynnä \",Next:\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",Objects:\"Esineet & asiat\",\"Open navigation\":\"Avaa navigaatio\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Please select a time zone:\":\"Valitse aikavyöhyke:\",Previous:\"Edellinen\",Search:\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",Settings:\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",Submit:\"Lähetä\",Symbols:\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Type to search time zone\":\"Kirjoita etsiäksesi aikavyöhyke\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Undo changes\":\"Kumoa muutokset\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…\"}},{locale:\"fr\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",Actions:\"Actions\",Activities:\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Anything shared with the same group of people will show up here\":\"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Annuler les modifications\",\"Change title\":\"Modifier le titre\",Choose:\"Choisir\",\"Clear text\":\"Effacer le texte\",Close:\"Fermer\",\"Close modal\":\"Fermer la fenêtre\",\"Close navigation\":\"Fermer la navigation\",\"Close sidebar\":\"Fermer la barre latérale\",\"Confirm changes\":\"Confirmer les modifications\",Custom:\"Personnalisé\",\"Edit item\":\"Éditer l'élément\",\"Error getting related resources\":\"Erreur à la récupération des ressources liées\",\"Error parsing svg\":\"Erreur d'analyse SVG\",\"External documentation for {title}\":\"Documentation externe pour {title}\",Favorite:\"Favori\",Flags:\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",Global:\"Global\",\"Go back to the list\":\"Retourner à la liste\",\"Hide password\":\"Cacher le mot de passe\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"More items …\":\"Plus d'éléments...\",Next:\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",Objects:\"Objets\",Open:\"Ouvrir\",'Open link to \"{resourceTitle}\"':'Ouvrir le lien vers \"{resourceTitle}\"',\"Open navigation\":\"Ouvrir la navigation\",\"Password is secure\":\"Le mot de passe est sécurisé\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Please select a time zone:\":\"Sélectionnez un fuseau horaire : \",Previous:\"Précédent\",\"Related resources\":\"Ressources liées\",Search:\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",Settings:\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Show password\":\"Afficher le mot de passe\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",Submit:\"Valider\",Symbols:\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Type to search time zone\":\"Saisissez les premiers lettres pour rechercher un fuseau horaire\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Undo changes\":\"Annuler les changements\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Écrire un message, utiliser \"@\" pour mentionner une personne, \":\" pour l\\'autocomplétion des émojis...'}},{locale:\"gl\",translations:{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",Actions:\"Accións\",Activities:\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Cancel changes\":\"Cancelar os cambios\",Choose:\"Escoller\",Close:\"Pechar\",\"Confirm changes\":\"Confirma os cambios\",Custom:\"Personalizado\",\"External documentation for {title}\":\"Documentación externa para {title}\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",Next:\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",Objects:\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",Previous:\"Anterir\",Search:\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",Settings:\"Axustes\",\"Settings navigation\":\"Navegación polos axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{locale:\"he\",translations:{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",Actions:\"פעולות\",Activities:\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",Choose:\"בחירה\",Close:\"סגירה\",Custom:\"בהתאמה אישית\",Flags:\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",Next:\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",Objects:\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",Previous:\"הקודם\",Search:\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",Settings:\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",Symbols:\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{locale:\"hu_HU\",translations:{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",Actions:\"Műveletek\",Activities:\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Anything shared with the same group of people will show up here\":\"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni\",\"Avatar of {displayName}\":\"{displayName} profilképe\",\"Avatar of {displayName}, {status}\":\"{displayName} profilképe, {status}\",\"Cancel changes\":\"Változtatások elvetése\",\"Change title\":\"Cím megváltoztatása\",Choose:\"Válassszon\",\"Clear text\":\"Szöveg törlése\",Close:\"Bezárás\",\"Close modal\":\"Ablak bezárása\",\"Close navigation\":\"Navigáció bezárása\",\"Close sidebar\":\"Oldalsáv bezárása\",\"Confirm changes\":\"Változtatások megerősítése\",Custom:\"Egyéni\",\"Edit item\":\"Elem szerkesztése\",\"Error getting related resources\":\"Hiba a kapcsolódó erőforrások lekérésekor\",\"Error parsing svg\":\"Hiba az SVG feldolgozásakor\",\"External documentation for {title}\":\"Külső dokumentáció ehhez: {title}\",Favorite:\"Kedvenc\",Flags:\"Zászlók\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",Global:\"Globális\",\"Go back to the list\":\"Ugrás vissza a listához\",\"Hide password\":\"Jelszó elrejtése\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"More items …\":\"További elemek...\",Next:\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",Objects:\"Tárgyak\",Open:\"Megnyitás\",'Open link to \"{resourceTitle}\"':\"A(z) „{resourceTitle}” hivatkozásának megnyitása\",\"Open navigation\":\"Navigáció megnyitása\",\"Password is secure\":\"A jelszó biztonságos\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Please select a time zone:\":\"Válasszon időzónát:\",Previous:\"Előző\",\"Related resources\":\"Kapcsolódó erőforrások\",Search:\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",Settings:\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Show password\":\"Jelszó megjelenítése\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",Submit:\"Beküldés\",Symbols:\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Type to search time zone\":\"Gépeljen az időzóna kereséséhez\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Undo changes\":\"Változtatások visszavonása\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…\"}},{locale:\"is\",translations:{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",Actions:\"Aðgerðir\",Activities:\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",Choose:\"Velja\",Close:\"Loka\",Custom:\"Sérsniðið\",Flags:\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",Next:\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",Objects:\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",Previous:\"Fyrri\",Search:\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",Settings:\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",Symbols:\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{locale:\"it\",translations:{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",Actions:\"Azioni\",Activities:\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Anything shared with the same group of people will show up here\":\"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui\",\"Avatar of {displayName}\":\"Avatar di {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar di {displayName}, {status}\",\"Cancel changes\":\"Annulla modifiche\",\"Change title\":\"Modifica il titolo\",Choose:\"Scegli\",\"Clear text\":\"Cancella il testo\",Close:\"Chiudi\",\"Close modal\":\"Chiudi il messaggio modale\",\"Close navigation\":\"Chiudi la navigazione\",\"Close sidebar\":\"Chiudi la barra laterale\",\"Confirm changes\":\"Conferma modifiche\",Custom:\"Personalizzato\",\"Edit item\":\"Modifica l'elemento\",\"Error getting related resources\":\"Errore nell'ottenere risorse correlate\",\"Error parsing svg\":\"Errore nell'analizzare l'svg\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",Favorite:\"Preferito\",Flags:\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",Global:\"Globale\",\"Go back to the list\":\"Torna all'elenco\",\"Hide password\":\"Nascondi la password\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"More items …\":\"Più elementi ...\",Next:\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",Objects:\"Oggetti\",Open:\"Apri\",'Open link to \"{resourceTitle}\"':'Apri il link a \"{resourceTitle}\"',\"Open navigation\":\"Apri la navigazione\",\"Password is secure\":\"La password è sicura\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Please select a time zone:\":\"Si prega di selezionare un fuso orario:\",Previous:\"Precedente\",\"Related resources\":\"Risorse correlate\",Search:\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",Settings:\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Show password\":\"Mostra la password\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",Submit:\"Invia\",Symbols:\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Type to search time zone\":\"Digita per cercare un fuso orario\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Undo changes\":\"Cancella i cambiamenti\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrivi un messaggio, \"@\" per menzionare qualcuno, \":\" per il completamento automatico delle emoji ...'}},{locale:\"ja_JP\",translations:{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",Actions:\"操作\",Activities:\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Anything shared with the same group of people will show up here\":\"同じグループで共有しているものは、全てここに表示されます\",\"Avatar of {displayName}\":\"{displayName} のアバター\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} のアバター\",\"Cancel changes\":\"変更をキャンセル\",\"Change title\":\"タイトルを変更\",Choose:\"選択\",\"Clear text\":\"テキストをクリア\",Close:\"閉じる\",\"Close modal\":\"モーダルを閉じる\",\"Close navigation\":\"ナビゲーションを閉じる\",\"Close sidebar\":\"サイドバーを閉じる\",\"Confirm changes\":\"変更を承認\",Custom:\"カスタム\",\"Edit item\":\"編集\",\"Error getting related resources\":\"関連リソースの取得エラー\",\"Error parsing svg\":\"svgの解析エラー\",\"External documentation for {title}\":\"{title} のための添付文書\",Favorite:\"お気に入り\",Flags:\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",Global:\"全体\",\"Go back to the list\":\"リストに戻る\",\"Hide password\":\"パスワードを非表示\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"More items …\":\"他のアイテム\",Next:\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",Objects:\"物\",Open:\"開く\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\"のリンクを開く',\"Open navigation\":\"ナビゲーションを開く\",\"Password is secure\":\"パスワードは保護されています\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Please select a time zone:\":\"タイムゾーンを選んで下さい:\",Previous:\"前\",\"Related resources\":\"関連リソース\",Search:\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",Settings:\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Show password\":\"パスワードを表示\",\"Smileys & Emotion\":\"感情表現\",\"Start slideshow\":\"スライドショーを開始\",Submit:\"提出\",Symbols:\"記号\",\"Travel & Places\":\"旅行と場所\",\"Type to search time zone\":\"タイムゾーン検索のため入力してください\",\"Unable to search the group\":\"グループを検索できません\",\"Undo changes\":\"変更を取り消し\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'メッセージを記入、\"@\"でメンション、\":\"で絵文字の自動補完 ...'}},{locale:\"lt_LT\",translations:{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",Actions:\"Veiksmai\",Activities:\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",Choose:\"Pasirinkti\",Close:\"Užverti\",Custom:\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",Flags:\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",Next:\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",Objects:\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",Previous:\"Ankstesnis\",Search:\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",Settings:\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",Submit:\"Pateikti\",Symbols:\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{locale:\"lv\",translations:{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",Choose:\"Izvēlēties\",Close:\"Aizvērt\",Next:\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",Previous:\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",Settings:\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{locale:\"mk\",translations:{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",Actions:\"Акции\",Activities:\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Avatar of {displayName}\":\"Аватар на {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар на {displayName}, {status}\",\"Cancel changes\":\"Откажи ги промените\",\"Change title\":\"Промени наслов\",Choose:\"Избери\",Close:\"Затвори\",\"Close modal\":\"Затвори модал\",\"Close navigation\":\"Затвори навигација\",\"Confirm changes\":\"Потврди ги промените\",Custom:\"Прилагодени\",\"Edit item\":\"Уреди\",\"External documentation for {title}\":\"Надворешна документација за {title}\",Favorite:\"Фаворити\",Flags:\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",Global:\"Глобално\",\"Go back to the list\":\"Врати се на листата\",items:\"ставки\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"More {dashboardItemType} …\":\"Повеќе {dashboardItemType} …\",Next:\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",Objects:\"Објекти\",Open:\"Отвори\",\"Open navigation\":\"Отвори навигација\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Please select a time zone:\":\"Изберете временска зона:\",Previous:\"Предходно\",Search:\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",Settings:\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",Submit:\"Испрати\",Symbols:\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Type to search time zone\":\"Напишете за да пребарате временска зона\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Undo changes\":\"Врати ги промените\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ...\"}},{locale:\"my\",translations:{\"{tag} (invisible)\":\"{tag} (ကွယ်ဝှက်ထား)\",\"{tag} (restricted)\":\"{tag} (ကန့်သတ်)\",Actions:\"လုပ်ဆောင်ချက်များ\",Activities:\"ပြုလုပ်ဆောင်တာများ\",\"Animals & Nature\":\"တိရစ္ဆာန်များနှင့် သဘာဝ\",\"Avatar of {displayName}\":\"{displayName} ၏ ကိုယ်ပွား\",\"Cancel changes\":\"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်\",Choose:\"ရွေးချယ်ရန်\",Close:\"ပိတ်ရန်\",\"Confirm changes\":\"ပြောင်းလဲမှုများ အတည်ပြုရန်\",Custom:\"အလိုကျချိန်ညှိမှု\",\"External documentation for {title}\":\"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း\",Flags:\"အလံများ\",\"Food & Drink\":\"အစားအသောက်\",\"Frequently used\":\"မကြာခဏအသုံးပြုသော\",Global:\"ကမ္ဘာလုံးဆိုင်ရာ\",\"Message limit of {count} characters reached\":\"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ\",Next:\"နောက်သို့ဆက်ရန်\",\"No emoji found\":\"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ\",\"No results\":\"ရလဒ်မရှိပါ\",Objects:\"အရာဝတ္ထုများ\",\"Pause slideshow\":\"စလိုက်ရှိုး ခေတ္တရပ်ရန်\",\"People & Body\":\"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်\",\"Pick an emoji\":\"အီမိုဂျီရွေးရန်\",\"Please select a time zone:\":\"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ\",Previous:\"ယခင်\",Search:\"ရှာဖွေရန်\",\"Search results\":\"ရှာဖွေမှု ရလဒ်များ\",\"Select a tag\":\"tag ရွေးချယ်ရန်\",Settings:\"ချိန်ညှိချက်များ\",\"Settings navigation\":\"ချိန်ညှိချက်အညွှန်း\",\"Smileys & Emotion\":\"စမိုင်လီများနှင့် အီမိုရှင်း\",\"Start slideshow\":\"စလိုက်ရှိုးအား စတင်ရန်\",Submit:\"တင်သွင်းရန်\",Symbols:\"သင်္ကေတများ\",\"Travel & Places\":\"ခရီးသွားလာခြင်းနှင့် နေရာများ\",\"Type to search time zone\":\"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ\",\"Unable to search the group\":\"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ\",\"Write message, @ to mention someone …\":\"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်...\"}},{locale:\"nb_NO\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Anything shared with the same group of people will show up here\":\"Alt som er delt med den samme gruppen vil vises her\",\"Avatar of {displayName}\":\"Avataren til {displayName}\",\"Avatar of {displayName}, {status}\":\"{displayName}'s avatar, {status}\",\"Cancel changes\":\"Avbryt endringer\",\"Change title\":\"Endre tittel\",Choose:\"Velg\",\"Clear text\":\"Fjern tekst\",Close:\"Lukk\",\"Close modal\":\"Lukk modal\",\"Close navigation\":\"Lukk navigasjon\",\"Close sidebar\":\"Lukk sidepanel\",\"Confirm changes\":\"Bekreft endringer\",Custom:\"Tilpasset\",\"Edit item\":\"Rediger\",\"Error getting related resources\":\"Feil ved henting av relaterte ressurser\",\"Error parsing svg\":\"Feil ved parsing av svg\",\"External documentation for {title}\":\"Ekstern dokumentasjon for {title}\",Favorite:\"Favoritt\",Flags:\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",Global:\"Global\",\"Go back to the list\":\"Gå tilbake til listen\",\"Hide password\":\"Skjul passord\",\"Message limit of {count} characters reached\":\"Karakter begrensing {count} nådd i melding\",\"More items …\":\"Flere gjenstander...\",Next:\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åpne\",'Open link to \"{resourceTitle}\"':'Åpne link til \"{resourceTitle}\"',\"Open navigation\":\"Åpne navigasjon\",\"Password is secure\":\"Passordet er sikkert\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Please select a time zone:\":\"Vennligst velg tidssone\",Previous:\"Forrige\",\"Related resources\":\"Relaterte ressurser\",Search:\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",Settings:\"Innstillinger\",\"Settings navigation\":\"Navigasjonsinstillinger\",\"Show password\":\"Vis passord\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Type to search time zone\":\"Tast for å søke etter tidssone\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\",\"Undo changes\":\"Tilbakestill endringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv melding, bruk \"@\" for å nevne noen, bruk \":\" for autofullføring av emoji...'}},{locale:\"nl\",translations:{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",Actions:\"Acties\",Activities:\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Avatar of {displayName}\":\"Avatar van {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar van {displayName}, {status}\",\"Cancel changes\":\"Wijzigingen annuleren\",Choose:\"Kies\",Close:\"Sluiten\",\"Close navigation\":\"Navigatie sluiten\",\"Confirm changes\":\"Wijzigingen bevestigen\",Custom:\"Aangepast\",\"Edit item\":\"Item bewerken\",\"External documentation for {title}\":\"Externe documentatie voor {title}\",Flags:\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",Global:\"Globaal\",\"Go back to the list\":\"Ga terug naar de lijst\",\"Message limit of {count} characters reached\":\"Berichtlimiet van {count} karakters bereikt\",Next:\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",Objects:\"Objecten\",\"Open navigation\":\"Navigatie openen\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Please select a time zone:\":\"Selecteer een tijdzone:\",Previous:\"Vorige\",Search:\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",Settings:\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",Submit:\"Verwerken\",Symbols:\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Type to search time zone\":\"Type om de tijdzone te zoeken\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Undo changes\":\"Wijzigingen ongedaan maken\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ...\"}},{locale:\"oc\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",Actions:\"Accions\",Choose:\"Causir\",Close:\"Tampar\",Next:\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",Previous:\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",Settings:\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{locale:\"pl\",translations:{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",Actions:\"Działania\",Activities:\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Anything shared with the same group of people will show up here\":\"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób\",\"Avatar of {displayName}\":\"Awatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Awatar {displayName}, {status}\",\"Cancel changes\":\"Anuluj zmiany\",\"Change title\":\"Zmień tytuł\",Choose:\"Wybierz\",\"Clear text\":\"Wyczyść tekst\",Close:\"Zamknij\",\"Close modal\":\"Zamknij modal\",\"Close navigation\":\"Zamknij nawigację\",\"Close sidebar\":\"Zamknij pasek boczny\",\"Confirm changes\":\"Potwierdź zmiany\",Custom:\"Zwyczajne\",\"Edit item\":\"Edytuj element\",\"Error getting related resources\":\"Błąd podczas pobierania powiązanych zasobów\",\"Error parsing svg\":\"Błąd podczas analizowania svg\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",Favorite:\"Ulubiony\",Flags:\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",Global:\"Globalnie\",\"Go back to the list\":\"Powrót do listy\",\"Hide password\":\"Ukryj hasło\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"More items …\":\"Więcej pozycji…\",Next:\"Następny\",\"No emoji found\":\"Nie znaleziono emoji\",\"No results\":\"Brak wyników\",Objects:\"Obiekty\",Open:\"Otwórz\",'Open link to \"{resourceTitle}\"':'Otwórz link do \"{resourceTitle}\"',\"Open navigation\":\"Otwórz nawigację\",\"Password is secure\":\"Hasło jest bezpieczne\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Please select a time zone:\":\"Wybierz strefę czasową:\",Previous:\"Poprzedni\",\"Related resources\":\"Powiązane zasoby\",Search:\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",Settings:\"Ustawienia\",\"Settings navigation\":\"Ustawienia nawigacji\",\"Show password\":\"Pokaż hasło\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",Submit:\"Wyślij\",Symbols:\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Type to search time zone\":\"Wpisz, aby wyszukać strefę czasową\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Undo changes\":\"Cofnij zmiany\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Napisz wiadomość, \"@\" aby o kimś wspomnieć, \":\" dla autouzupełniania emoji…'}},{locale:\"pt_BR\",translations:{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",Actions:\"Ações\",Activities:\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Anything shared with the same group of people will show up here\":\"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar alterações\",\"Change title\":\"Alterar título\",Choose:\"Escolher\",\"Clear text\":\"Limpar texto\",Close:\"Fechar\",\"Close modal\":\"Fechar modal\",\"Close navigation\":\"Fechar navegação\",\"Close sidebar\":\"Fechar barra lateral\",\"Confirm changes\":\"Confirmar alterações\",Custom:\"Personalizado\",\"Edit item\":\"Editar item\",\"Error getting related resources\":\"Erro ao obter recursos relacionados\",\"Error parsing svg\":\"Erro ao analisar svg\",\"External documentation for {title}\":\"Documentação externa para {title}\",Favorite:\"Favorito\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",Global:\"Global\",\"Go back to the list\":\"Volte para a lista\",\"Hide password\":\"Ocultar a senha\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"More items …\":\"Mais itens …\",Next:\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",Objects:\"Objetos\",Open:\"Aberto\",'Open link to \"{resourceTitle}\"':'Abrir link para \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegação\",\"Password is secure\":\"A senha é segura\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Please select a time zone:\":\"Selecione um fuso horário: \",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",Settings:\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Show password\":\"Mostrar senha\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",Submit:\"Enviar\",Symbols:\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Type to search time zone\":\"Digite para pesquisar o fuso horário \",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Undo changes\":\"Desfazer modificações\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escreva mensagens, use \"@\" para mencionar algum, use \":\" for autocompletar emoji …'}},{locale:\"pt_PT\",translations:{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",Actions:\"Ações\",Choose:\"Escolher\",Close:\"Fechar\",Next:\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",Previous:\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",Settings:\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{locale:\"ro\",translations:{\"{tag} (invisible)\":\"{tag} (invizibil)\",\"{tag} (restricted)\":\"{tag} (restricționat)\",Actions:\"Acțiuni\",Activities:\"Activități\",\"Animals & Nature\":\"Animale și natură\",\"Anything shared with the same group of people will show up here\":\"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici\",\"Avatar of {displayName}\":\"Avatarul lui {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatarul lui {displayName}, {status}\",\"Cancel changes\":\"Anulează modificările\",\"Change title\":\"Modificați titlul\",Choose:\"Alegeți\",\"Clear text\":\"Șterge textul\",Close:\"Închideți\",\"Close modal\":\"Închideți modulul\",\"Close navigation\":\"Închideți navigarea\",\"Close sidebar\":\"Închide bara laterală\",\"Confirm changes\":\"Confirmați modificările\",Custom:\"Personalizat\",\"Edit item\":\"Editați elementul\",\"Error getting related resources\":\" Eroare la returnarea resurselor legate\",\"Error parsing svg\":\"Eroare de analizare a svg\",\"External documentation for {title}\":\"Documentație externă pentru {title}\",Favorite:\"Favorit\",Flags:\"Marcaje\",\"Food & Drink\":\"Alimente și băuturi\",\"Frequently used\":\"Utilizate frecvent\",Global:\"Global\",\"Go back to the list\":\"Întoarceți-vă la listă\",\"Hide password\":\"Ascunde parola\",\"Message limit of {count} characters reached\":\"Limita mesajului de {count} caractere a fost atinsă\",\"More items …\":\"Mai multe articole ...\",Next:\"Următorul\",\"No emoji found\":\"Nu s-a găsit niciun emoji\",\"No results\":\"Nu există rezultate\",Objects:\"Obiecte\",Open:\"Deschideți\",'Open link to \"{resourceTitle}\"':'Deschide legătura la \"{resourceTitle}\"',\"Open navigation\":\"Deschideți navigația\",\"Password is secure\":\"Parola este sigură\",\"Pause slideshow\":\"Pauză prezentare de diapozitive\",\"People & Body\":\"Oameni și corp\",\"Pick an emoji\":\"Alege un emoji\",\"Please select a time zone:\":\"Vă rugăm să selectați un fus orar:\",Previous:\"Anterior\",\"Related resources\":\"Resurse legate\",Search:\"Căutare\",\"Search results\":\"Rezultatele căutării\",\"Select a tag\":\"Selectați o etichetă\",Settings:\"Setări\",\"Settings navigation\":\"Navigare setări\",\"Show password\":\"Arată parola\",\"Smileys & Emotion\":\"Zâmbete și emoții\",\"Start slideshow\":\"Începeți prezentarea de diapozitive\",Submit:\"Trimiteți\",Symbols:\"Simboluri\",\"Travel & Places\":\"Călătorii și locuri\",\"Type to search time zone\":\"Tastați pentru a căuta fusul orar\",\"Unable to search the group\":\"Imposibilitatea de a căuta în grup\",\"Undo changes\":\"Anularea modificărilor\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrie un mesaj, folosește \"@\" pentru a menționa pe cineva, folosește \":\" pentru autocompletarea cu emoji ...'}},{locale:\"ru\",translations:{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",Actions:\"Действия \",Activities:\"События\",\"Animals & Nature\":\"Животные и природа \",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Фотография {displayName}, {status}\",\"Cancel changes\":\"Отменить изменения\",Choose:\"Выберите\",Close:\"Закрыть\",\"Close modal\":\"Закрыть модальное окно\",\"Close navigation\":\"Закрыть навигацию\",\"Confirm changes\":\"Подтвердить изменения\",Custom:\"Пользовательское\",\"Edit item\":\"Изменить элемент\",\"External documentation for {title}\":\"Внешняя документация для {title}\",Flags:\"Флаги\",\"Food & Drink\":\"Еда, напиток\",\"Frequently used\":\"Часто используемый\",Global:\"Глобальный\",\"Go back to the list\":\"Вернуться к списку\",items:\"элементов\",\"Message limit of {count} characters reached\":\"Достигнуто ограничение на количество символов в {count}\",\"More {dashboardItemType} …\":\"Больше {dashboardItemType} …\",Next:\"Следующее\",\"No emoji found\":\"Эмодзи не найдено\",\"No results\":\"Результаты отсуствуют\",Objects:\"Объекты\",Open:\"Открыть\",\"Open navigation\":\"Открыть навигацию\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"People & Body\":\"Люди и тело\",\"Pick an emoji\":\"Выберите эмодзи\",\"Please select a time zone:\":\"Пожалуйста, выберите часовой пояс:\",Previous:\"Предыдущее\",Search:\"Поиск\",\"Search results\":\"Результаты поиска\",\"Select a tag\":\"Выберите метку\",Settings:\"Параметры\",\"Settings navigation\":\"Навигация по настройкам\",\"Smileys & Emotion\":\"Смайлики и эмоции\",\"Start slideshow\":\"Начать показ слайдов\",Submit:\"Утвердить\",Symbols:\"Символы\",\"Travel & Places\":\"Путешествия и места\",\"Type to search time zone\":\"Введите для поиска часового пояса\",\"Unable to search the group\":\"Невозможно найти группу\",\"Undo changes\":\"Отменить изменения\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …\"}},{locale:\"sk_SK\",translations:{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",Actions:\"Akcie\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Avatar of {displayName}\":\"Avatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar {displayName}, {status}\",\"Cancel changes\":\"Zrušiť zmeny\",Choose:\"Vybrať\",Close:\"Zatvoriť\",\"Close navigation\":\"Zavrieť navigáciu\",\"Confirm changes\":\"Potvrdiť zmeny\",Custom:\"Zvyk\",\"Edit item\":\"Upraviť položku\",\"External documentation for {title}\":\"Externá dokumentácia pre {title}\",Flags:\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",Global:\"Globálne\",\"Go back to the list\":\"Naspäť na zoznam\",\"Message limit of {count} characters reached\":\"Limit správy na {count} znakov dosiahnutý\",Next:\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",Objects:\"Objekty\",\"Open navigation\":\"Otvoriť navigáciu\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Please select a time zone:\":\"Prosím vyberte časovú zónu:\",Previous:\"Predchádzajúci\",Search:\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",Settings:\"Nastavenia\",\"Settings navigation\":\"Navigácia v nastaveniach\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",Submit:\"Odoslať\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Type to search time zone\":\"Začníte písať pre vyhľadávanie časovej zóny\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\",\"Undo changes\":\"Vrátiť zmeny\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…\"}},{locale:\"sl\",translations:{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",Actions:\"Dejanja\",Activities:\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Avatar of {displayName}\":\"Podoba {displayName}\",\"Avatar of {displayName}, {status}\":\"Prikazna slika {displayName}, {status}\",\"Cancel changes\":\"Prekliči spremembe\",\"Change title\":\"Spremeni naziv\",Choose:\"Izbor\",\"Clear text\":\"Počisti besedilo\",Close:\"Zapri\",\"Close modal\":\"Zapri pojavno okno\",\"Close navigation\":\"Zapri krmarjenje\",\"Close sidebar\":\"Zapri stransko vrstico\",\"Confirm changes\":\"Potrdi spremembe\",Custom:\"Po meri\",\"Edit item\":\"Uredi predmet\",\"Error getting related resources\":\"Napaka pridobivanja povezanih virov\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",Favorite:\"Priljubljeno\",Flags:\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",Global:\"Splošno\",\"Go back to the list\":\"Vrni se na seznam\",\"Hide password\":\"Skrij geslo\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"More items …\":\"Več predmetov ...\",Next:\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",Objects:\"Predmeti\",Open:\"Odpri\",'Open link to \"{resourceTitle}\"':\"Odpri povezavo do »{resourceTitle}«\",\"Open navigation\":\"Odpri krmarjenje\",\"Password is secure\":\"Geslo je varno\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick a date\":\"Izbor datuma\",\"Pick a date and a time\":\"Izbor datuma in časa\",\"Pick a month\":\"Izbor meseca\",\"Pick a time\":\"Izbor časa\",\"Pick a week\":\"Izbor tedna\",\"Pick a year\":\"Izbor leta\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Please select a time zone:\":\"Izbor časovnega pasu:\",Previous:\"Predhodni\",\"Related resources\":\"Povezani viri\",Search:\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",Settings:\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Show password\":\"Pokaži geslo\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",Submit:\"Pošlji\",Symbols:\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Type to search time zone\":\"Vpišite niz za iskanje časovnega pasu\",\"Unable to search the group\":\"Ni mogoče iskati po skupini\",\"Undo changes\":\"Razveljavi spremembe\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …\"}},{locale:\"sr\",translations:{\"{tag} (invisible)\":\"{tag} (nevidljivo)\",\"{tag} (restricted)\":\"{tag} (ograničeno)\",Actions:\"Radnje\",Activities:\"Aktivnosti\",\"Animals & Nature\":\"Životinje i Priroda\",\"Avatar of {displayName}\":\"Avatar za {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar za {displayName}, {status}\",\"Cancel changes\":\"Otkaži izmene\",\"Change title\":\"Izmeni naziv\",Choose:\"Изаберите\",Close:\"Затвори\",\"Close modal\":\"Zatvori modal\",\"Close navigation\":\"Zatvori navigaciju\",\"Close sidebar\":\"Zatvori bočnu traku\",\"Confirm changes\":\"Potvrdite promene\",Custom:\"Po meri\",\"Edit item\":\"Uredi stavku\",\"External documentation for {title}\":\"Eksterna dokumentacija za {title}\",Favorite:\"Omiljeni\",Flags:\"Zastave\",\"Food & Drink\":\"Hrana i Piće\",\"Frequently used\":\"Često korišćeno\",Global:\"Globalno\",\"Go back to the list\":\"Natrag na listu\",items:\"stavke\",\"Message limit of {count} characters reached\":\"Dostignuto je ograničenje za poruke od {count} znakova\",\"More {dashboardItemType} …\":\"Više {dashboardItemType} …\",Next:\"Следеће\",\"No emoji found\":\"Nije pronađen nijedan emodži\",\"No results\":\"Нема резултата\",Objects:\"Objekti\",Open:\"Otvori\",\"Open navigation\":\"Otvori navigaciju\",\"Pause slideshow\":\"Паузирај слајд шоу\",\"People & Body\":\"Ljudi i Telo\",\"Pick an emoji\":\"Izaberi emodži\",\"Please select a time zone:\":\"Molimo izaberite vremensku zonu:\",Previous:\"Претходно\",Search:\"Pretraži\",\"Search results\":\"Rezultati pretrage\",\"Select a tag\":\"Изаберите ознаку\",Settings:\"Поставке\",\"Settings navigation\":\"Navigacija u podešavanjima\",\"Smileys & Emotion\":\"Smajli i Emocije\",\"Start slideshow\":\"Покрени слајд шоу\",Submit:\"Prihvati\",Symbols:\"Simboli\",\"Travel & Places\":\"Putovanja i Mesta\",\"Type to search time zone\":\"Ukucaj da pretražiš vremenske zone\",\"Unable to search the group\":\"Nije moguće pretražiti grupu\",\"Undo changes\":\"Poništi promene\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…\"}},{locale:\"sv\",translations:{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",Actions:\"Åtgärder\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Anything shared with the same group of people will show up here\":\"Något som delats med samma grupp av personer kommer att visas här\",\"Avatar of {displayName}\":\"{displayName}s avatar\",\"Avatar of {displayName}, {status}\":\"{displayName}s avatar, {status}\",\"Cancel changes\":\"Avbryt ändringar\",\"Change title\":\"Ändra titel\",Choose:\"Välj\",\"Clear text\":\"Ta bort text\",Close:\"Stäng\",\"Close modal\":\"Stäng modal\",\"Close navigation\":\"Stäng navigering\",\"Close sidebar\":\"Stäng sidopanel\",\"Confirm changes\":\"Bekräfta ändringar\",Custom:\"Anpassad\",\"Edit item\":\"Ändra\",\"Error getting related resources\":\"Problem att hämta relaterade resurser\",\"Error parsing svg\":\"Fel vid inläsning av svg\",\"External documentation for {title}\":\"Extern dokumentation för {title}\",Favorite:\"Favorit\",Flags:\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",Global:\"Global\",\"Go back to the list\":\"Gå tillbaka till listan\",\"Hide password\":\"Göm lössenordet\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"More items …\":\"Fler objekt\",Next:\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",Objects:\"Objekt\",Open:\"Öppna\",'Open link to \"{resourceTitle}\"':'Öppna länk till \"{resourceTitle}\"',\"Open navigation\":\"Öppna navigering\",\"Password is secure\":\"Lössenordet är säkert\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Please select a time zone:\":\"Välj tidszon:\",Previous:\"Föregående\",\"Related resources\":\"Relaterade resurser\",Search:\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",Settings:\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Show password\":\"Visa lössenordet\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",Submit:\"Skicka\",Symbols:\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Type to search time zone\":\"Skriv för att välja tidszon\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Undo changes\":\"Ångra ändringar\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv meddelande, använd \"@\" för att nämna någon, använd \":\" för automatiska emojiförslag ...'}},{locale:\"tr\",translations:{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",Actions:\"İşlemler\",Activities:\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Anything shared with the same group of people will show up here\":\"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir\",\"Avatar of {displayName}\":\"{displayName} avatarı\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} avatarı\",\"Cancel changes\":\"Değişiklikleri iptal et\",\"Change title\":\"Başlığı değiştir\",Choose:\"Seçin\",\"Clear text\":\"Metni temizle\",Close:\"Kapat\",\"Close modal\":\"Üste açılan pencereyi kapat\",\"Close navigation\":\"Gezinmeyi kapat\",\"Close sidebar\":\"Yan çubuğu kapat\",\"Confirm changes\":\"Değişiklikleri onayla\",Custom:\"Özel\",\"Edit item\":\"Ögeyi düzenle\",\"Error getting related resources\":\"İlgili kaynaklar alınırken sorun çıktı\",\"Error parsing svg\":\"svg işlenirken sorun çıktı\",\"External documentation for {title}\":\"{title} için dış belgeler\",Favorite:\"Sık kullanılanlara ekle\",Flags:\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",Global:\"Evrensel\",\"Go back to the list\":\"Listeye dön\",\"Hide password\":\"Parolayı gizle\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"More items …\":\"Diğer ögeler…\",Next:\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",Objects:\"Nesneler\",Open:\"Aç\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\" bağlantısını aç',\"Open navigation\":\"Gezinmeyi aç\",\"Password is secure\":\"Parola güvenli\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Please select a time zone:\":\"Lütfen bir saat dilimi seçin:\",Previous:\"Önceki\",\"Related resources\":\"İlgili kaynaklar\",Search:\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",Settings:\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Show password\":\"Parolayı görüntüle\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",Submit:\"Gönder\",Symbols:\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Type to search time zone\":\"Saat dilimi aramak için yazmaya başlayın\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Undo changes\":\"Değişiklikleri geri al\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için \":\" kullanın…'}},{locale:\"uk\",translations:{\"{tag} (invisible)\":\"{tag} (невидимий)\",\"{tag} (restricted)\":\"{tag} (обмежений)\",Actions:\"Дії\",Activities:\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар {displayName}, {status}\",\"Cancel changes\":\"Скасувати зміни\",\"Change title\":\"Змінити назву\",Choose:\"ВиберітьВиберіть\",\"Clear text\":\"Очистити текст\",Close:\"Закрити\",\"Close modal\":\"Закрити модаль\",\"Close navigation\":\"Закрити навігацію\",\"Close sidebar\":\"Закрити бічну панель\",\"Confirm changes\":\"Підтвердити зміни\",Custom:\"Власне\",\"Edit item\":\"Редагувати елемент\",\"External documentation for {title}\":\"Зовнішня документація для {title}\",Favorite:\"Улюблений\",Flags:\"Прапори\",\"Food & Drink\":\"Їжа та напої\",\"Frequently used\":\"Найчастіші\",Global:\"Глобальний\",\"Go back to the list\":\"Повернутися до списку\",\"Hide password\":\"Приховати пароль\",items:\"елементи\",\"Message limit of {count} characters reached\":\"Вичерпано ліміт у {count} символів для повідомлення\",\"More {dashboardItemType} …\":\"Більше {dashboardItemType}…\",Next:\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",Objects:\"Об'єкти\",Open:\"Відкрити\",\"Open navigation\":\"Відкрити навігацію\",\"Password is secure\":\"Пароль безпечний\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Please select a time zone:\":\"Виберіть часовий пояс:\",Previous:\"Назад\",Search:\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",Settings:\"Налаштування\",\"Settings navigation\":\"Навігація у налаштуваннях\",\"Show password\":\"Показати пароль\",\"Smileys & Emotion\":\"Смайли та емоції\",\"Start slideshow\":\"Почати показ слайдів\",Submit:\"Надіслати\",Symbols:\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Type to search time zone\":\"Введіть для пошуку часовий пояс\",\"Unable to search the group\":\"Неможливо шукати в групі\",\"Undo changes\":\"Скасувати зміни\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…\"}},{locale:\"zh_CN\",translations:{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"行为\",Activities:\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Anything shared with the same group of people will show up here\":\"与同组用户分享的所有内容都会显示于此\",\"Avatar of {displayName}\":\"{displayName}的头像\",\"Avatar of {displayName}, {status}\":\"{displayName}的头像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改标题\",Choose:\"选择\",\"Clear text\":\"清除文本\",Close:\"关闭\",\"Close modal\":\"关闭窗口\",\"Close navigation\":\"关闭导航\",\"Close sidebar\":\"关闭侧边栏\",\"Confirm changes\":\"确认更改\",Custom:\"自定义\",\"Edit item\":\"编辑项目\",\"Error getting related resources\":\"获取相关资源时出错\",\"Error parsing svg\":\"解析 svg 时出错\",\"External documentation for {title}\":\"{title}的外部文档\",Favorite:\"喜爱\",Flags:\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",Global:\"全局\",\"Go back to the list\":\"返回至列表\",\"Hide password\":\"隐藏密码\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"More items …\":\"更多项目…\",Next:\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",Objects:\"物体\",Open:\"打开\",'Open link to \"{resourceTitle}\"':'打开\"{resourceTitle}\"的连接',\"Open navigation\":\"开启导航\",\"Password is secure\":\"密码安全\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Please select a time zone:\":\"请选择一个时区:\",Previous:\"上一个\",\"Related resources\":\"相关资源\",Search:\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",Settings:\"设置\",\"Settings navigation\":\"设置向导\",\"Show password\":\"显示密码\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",Submit:\"提交\",Symbols:\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Type to search time zone\":\"打字以搜索时区\",\"Unable to search the group\":\"无法搜索分组\",\"Undo changes\":\"撤销更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'写信息,使用\"@\"来提及某人,使用\":\"进行表情符号自动完成 ...'}},{locale:\"zh_HK\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",\"Anything shared with the same group of people will show up here\":\"與同一組人共享的任何內容都會顯示在此處\",\"Avatar of {displayName}\":\"{displayName} 的頭像\",\"Avatar of {displayName}, {status}\":\"{displayName} 的頭像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改標題\",Choose:\"選擇\",\"Clear text\":\"清除文本\",Close:\"關閉\",\"Close modal\":\"關閉模態\",\"Close navigation\":\"關閉導航\",\"Close sidebar\":\"關閉側邊欄\",\"Confirm changes\":\"確認更改\",Custom:\"自定義\",\"Edit item\":\"編輯項目\",\"Error getting related resources\":\"獲取相關資源出錯\",\"Error parsing svg\":\"解析 svg 時出錯\",\"External documentation for {title}\":\"{title} 的外部文檔\",Favorite:\"喜愛\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",Global:\"全球的\",\"Go back to the list\":\"返回清單\",\"Hide password\":\"隱藏密碼\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"More items …\":\"更多項目 …\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",Open:\"打開\",'Open link to \"{resourceTitle}\"':\"打開指向 “{resourceTitle}” 的鏈結\",\"Open navigation\":\"開啟導航\",\"Password is secure\":\"密碼是安全的\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Please select a time zone:\":\"請選擇時區:\",Previous:\"上一個\",\"Related resources\":\"相關資源\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Show password\":\"顯示密碼\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Submit:\"提交\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Type to search time zone\":\"鍵入以搜索時區\",\"Unable to search the group\":\"無法搜尋群組\",\"Undo changes\":\"取消更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'寫訊息,使用 \"@\" 來指代某人,使用 \":\" 用於表情符號自動填充 ...'}},{locale:\"zh_TW\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",Choose:\"選擇\",Close:\"關閉\",Custom:\"自定義\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",Previous:\"上一個\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach((function(e){var t={};for(var a in e.translations)e.translations[a].pluralId?t[a]={msgid:a,msgid_plural:e.translations[a].pluralId,msgstr:e.translations[a].msgstr}:t[a]={msgid:a,msgstr:[e.translations[a]]};i.addTranslation(e.locale,{translations:{\"\":t}})}));var r=i.build(),n=(r.ngettext.bind(r),r.gettext.bind(r))},1205:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=function(e){return Math.random().toString(36).replace(/[^a-z]+/g,\"\").slice(0,e||5)}},6115:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=(0,require(\"@nextcloud/logger\").getLoggerBuilder)().detectUser().setApp(\"@nextcloud/vue\").build()},1898:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),r=a(3645),n=a.n(r)()(i());n.push([e.id,\".material-design-icon[data-v-2e49be1e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-2e49be1e]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-2e49be1e],.button-vue span[data-v-2e49be1e]{cursor:pointer}.button-vue[data-v-2e49be1e]:focus{outline:none}.button-vue[data-v-2e49be1e]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-2e49be1e]{cursor:default}.button-vue[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-2e49be1e]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-2e49be1e]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-2e49be1e]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-2e49be1e]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-2e49be1e]{width:44px !important}.button-vue--text-only[data-v-2e49be1e]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-2e49be1e]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-2e49be1e]{padding:0 16px 0 4px}.button-vue--wide[data-v-2e49be1e]{width:100%}.button-vue[data-v-2e49be1e]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-2e49be1e]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-2e49be1e]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-2e49be1e]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-2e49be1e]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-2e49be1e]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-2e49be1e]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-2e49be1e]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-2e49be1e]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-2e49be1e]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-2e49be1e]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-2e49be1e]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-2e49be1e]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-2e49be1e]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-2e49be1e]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-2e49be1e]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-2e49be1e]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-2e49be1e]:active{background-color:var(--color-error)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"70f0364\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& *,\\n\\tspan {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition-property: color, border-color, background-color;\\n\\ttransition-duration: 0.1s;\\n\\ttransition-timing-function: linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tcolor: var(--color-primary-element-light-text);\\n\\tbackground-color: var(--color-primary-element-light);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\toutline: 2px solid var(--color-primary-element-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\tbackground-color: transparent;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=n},847:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),r=a(3645),n=a.n(r)()(i());n.push([e.id,\".material-design-icon[data-v-f50b337c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-f50b337c]{position:relative;width:100%;border-radius:var(--border-radius-large)}.input-field__main-wrapper[data-v-f50b337c]{height:36px;position:relative}.input-field__input[data-v-f50b337c]{margin:0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px !important;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer;width:100%;-webkit-appearance:textfield !important;-moz-appearance:textfield !important}.input-field__input[data-v-f50b337c]:active:not([disabled]),.input-field__input[data-v-f50b337c]:hover:not([disabled]),.input-field__input[data-v-f50b337c]:focus:not([disabled]){border-color:var(--color-primary-element)}.input-field__input[data-v-f50b337c]:focus{cursor:text}.input-field__input[data-v-f50b337c]:focus-visible{box-shadow:unset !important}.input-field__input--success[data-v-f50b337c]{border-color:var(--color-success) !important}.input-field__input--success[data-v-f50b337c]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--error[data-v-f50b337c]{border-color:var(--color-error) !important}.input-field__input--error[data-v-f50b337c]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--leading-icon[data-v-f50b337c]{padding-left:28px}.input-field__input--trailing-icon[data-v-f50b337c]{padding-right:28px}.input-field__label[data-v-f50b337c]{padding:4px 0;display:block}.input-field__label--hidden[data-v-f50b337c]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.input-field__icon[data-v-f50b337c]{position:absolute;height:32px;width:32px;display:flex;align-items:center;justify-content:center;opacity:.7}.input-field__icon--leading[data-v-f50b337c]{bottom:2px;left:2px}.input-field__icon--trailing[data-v-f50b337c]{bottom:2px;right:2px}.input-field__clear-button.button-vue[data-v-f50b337c]{position:absolute;top:2px;right:1px;min-width:unset;min-height:unset;height:32px;width:32px !important;border-radius:var(--border-radius-large)}.input-field__helper-text-message[data-v-f50b337c]{padding:4px 0;display:flex;align-items:center}.input-field__helper-text-message__icon[data-v-f50b337c]{margin-right:8px;align-self:start;margin-top:4px}.input-field__helper-text-message--error[data-v-f50b337c]{color:var(--color-error)}.input-field__helper-text-message--success[data-v-f50b337c]{color:var(--color-success)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcInputField/NcInputField.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,8BACC,iBAAA,CACA,UAAA,CACA,wCAAA,CAEA,4CACC,WAAA,CACA,iBAAA,CAGD,qCACC,QAAA,CACA,cAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,gDAAA,CACA,sBAAA,CACA,wCAAA,CACA,sBAAA,CACA,cAAA,CACA,UAAA,CACA,uCAAA,CACA,oCAAA,CAEA,kLAGC,yCAAA,CAGD,2CACC,WAAA,CAGD,mDACC,2BAAA,CAGD,8CACC,4CAAA,CACA,4DACC,+GAAA,CAIF,4CACC,0CAAA,CACA,0DACC,+GAAA,CAIF,mDACC,iBAAA,CAGD,oDACC,kBAAA,CAIF,qCACC,aAAA,CACA,aAAA,CAEA,6CACC,iBAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CAIF,oCACC,iBAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,6CACC,UAAA,CACA,QAAA,CAGD,8CACC,UAAA,CACA,SAAA,CAIF,uDACC,iBAAA,CACA,OAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,WAAA,CACA,qBAAA,CACA,wCAAA,CAGD,mDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,yDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,0DACC,wBAAA,CAGD,4DACC,0BAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"70f0364\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.input-field {\\n\\tposition: relative;\\n\\twidth: 100%;\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t&__main-wrapper {\\n\\t\\theight: 36px;\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__input {\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0 12px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\theight: 36px !important;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcursor: pointer;\\n\\t\\twidth: 100%;\\n\\t\\t-webkit-appearance: textfield !important;\\n\\t\\t-moz-appearance: textfield !important;\\n\\n\\t\\t&:active:not([disabled]),\\n\\t\\t&:hover:not([disabled]),\\n\\t\\t&:focus:not([disabled]) {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&:focus {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tbox-shadow: unset !important; // Override server rules\\n\\t\\t}\\n\\n\\t\\t&--success {\\n\\t\\t\\tborder-color: var(--color-success) !important; //Override hover border color\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tborder-color: var(--color-error) !important; //Override hover border color\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--leading-icon {\\n\\t\\t\\tpadding-left: 28px;\\n\\t\\t}\\n\\n\\t\\t&--trailing-icon {\\n\\t\\t\\tpadding-right: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__label {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: block;\\n\\n\\t\\t&--hidden {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: -10000px;\\n\\t\\t\\ttop: auto;\\n\\t\\t\\twidth: 1px;\\n\\t\\t\\theight: 1px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: absolute;\\n\\t\\theight: 32px;\\n\\t\\twidth: 32px;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\topacity: 0.7;\\n\\t\\t&--leading {\\n\\t\\t\\tbottom: 2px;\\n\\t\\t\\tleft: 2px;\\n\\t\\t}\\n\\n\\t\\t&--trailing {\\n\\t\\t\\tbottom: 2px;\\n\\t\\t\\tright: 2px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__clear-button.button-vue {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 2px;\\n\\t\\tright: 1px;\\n\\t\\tmin-width: unset;\\n\\t\\tmin-height: unset;\\n\\t\\theight: 32px;\\n\\t\\twidth: 32px !important;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t&--success {\\n\\t\\t\\tcolor: var(--color-success);\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],sourceRoot:\"\"}]);const s=n},3645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=\"\",o=void 0!==t[5];return t[4]&&(a+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(a+=\"@media \".concat(t[2],\" {\")),o&&(a+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),a+=e(t),o&&(a+=\"}\"),t[2]&&(a+=\"}\"),t[4]&&(a+=\"}\"),a})).join(\"\")},t.i=function(e,a,o,i,r){\"string\"==typeof e&&(e=[[null,e,void 0]]);var n={};if(o)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(n[l]=!0)}for(var c=0;c<e.length;c++){var u=[].concat(e[c]);o&&n[u[0]]||(void 0!==r&&(void 0===u[5]||(u[1]=\"@layer\".concat(u[5].length>0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=r),a&&(u[2]?(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\"),u[2]=a):u[2]=a),i&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=i):u[4]=\"\".concat(i)),t.push(u))}},t}},7537:e=>{\"use strict\";e.exports=function(e){var t=e[1],a=e[3];if(!a)return t;if(\"function\"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),i=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(o),r=\"/*# \".concat(i,\" */\");return[t].concat([r]).join(\"\\n\")}return[t].join(\"\\n\")}},5664:(e,t,a)=>{\"use strict\";var o=a(3379),i=a.n(o),r=a(7795),n=a.n(r),s=a(569),l=a.n(s),c=a(3565),u=a.n(c),d=a(9216),m=a.n(d),p=a(4589),g=a.n(p),h=a(847),v={};v.styleTagTransform=g(),v.setAttributes=u(),v.insert=l().bind(null,\"head\"),v.domAPI=n(),v.insertStyleElement=m();i()(h.Z,v),h.Z&&h.Z.locals&&h.Z.locals},3379:e=>{\"use strict\";var t=[];function a(e){for(var a=-1,o=0;o<t.length;o++)if(t[o].identifier===e){a=o;break}return a}function o(e,o){for(var r={},n=[],s=0;s<e.length;s++){var l=e[s],c=o.base?l[0]+o.base:l[0],u=r[c]||0,d=\"\".concat(c,\" \").concat(u);r[c]=u+1;var m=a(d),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==m)t[m].references++,t[m].updater(p);else{var g=i(p,o);o.byIndex=s,t.splice(s,0,{identifier:d,updater:g,references:1})}n.push(d)}return n}function i(e,t){var a=t.domAPI(t);a.update(e);return function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;a.update(e=t)}else a.remove()}}e.exports=function(e,i){var r=o(e=e||[],i=i||{});return function(e){e=e||[];for(var n=0;n<r.length;n++){var s=a(r[n]);t[s].references--}for(var l=o(e,i),c=0;c<r.length;c++){var u=a(r[c]);0===t[u].references&&(t[u].updater(),t.splice(u,1))}r=l}}},569:e=>{\"use strict\";var t={};e.exports=function(e,a){var o=function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(e){a=null}t[e]=a}return t[e]}(e);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");o.appendChild(a)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,a)=>{\"use strict\";e.exports=function(e){var t=a.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(a){!function(e,t,a){var o=\"\";a.supports&&(o+=\"@supports (\".concat(a.supports,\") {\")),a.media&&(o+=\"@media \".concat(a.media,\" {\"));var i=void 0!==a.layer;i&&(o+=\"@layer\".concat(a.layer.length>0?\" \".concat(a.layer):\"\",\" {\")),o+=a.css,i&&(o+=\"}\"),a.media&&(o+=\"}\"),a.supports&&(o+=\"}\");var r=a.sourceMap;r&&\"undefined\"!=typeof btoa&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r)))),\" */\")),t.styleTagTransform(o,e,t.options)}(t,e,a)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},9563:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>c});var o=a(1039),i=a(5495),r=(a(9521),a(1900)),n=a(4348),s=a.n(n),l=(0,r.Z)(i.Z,o.s,o.x,!1,null,\"f50b337c\",null);\"function\"==typeof s()&&s()(l);const c=l.exports},5495:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=a(9456).Z},9521:(e,t,a)=>{\"use strict\";a(5664)},2102:()=>{},4348:()=>{},6239:()=>{},1900:(e,t,a)=>{\"use strict\";function o(e,t,a,o,i,r,n,s){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=a,c._compiled=!0),o&&(c.functional=!0),r&&(c._scopeId=\"data-v-\"+r),n?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(n)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var d=c.beforeCreate;c.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:c}}a.d(t,{Z:()=>o})},768:e=>{\"use strict\";e.exports=require(\"@nextcloud/axios\")},733:e=>{\"use strict\";e.exports=require(\"@nextcloud/initial-state\")},7931:e=>{\"use strict\";e.exports=require(\"@nextcloud/l10n/gettext\")},4262:e=>{\"use strict\";e.exports=require(\"@nextcloud/router\")},3465:e=>{\"use strict\";e.exports=require(\"debounce\")},5512:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/AlertCircleOutline.vue\")},6915:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/Check.vue\")}},t={};function a(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.nc=void 0;var o={};return(()=>{\"use strict\";function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e(t)}function t(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function i(e){for(var a=1;a<arguments.length;a++){var o=null!=arguments[a]?arguments[a]:{};a%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(t,a,o){return(a=function(t){var a=function(t,a){if(\"object\"!==e(t)||null===t)return t;var o=t[Symbol.toPrimitive];if(void 0!==o){var i=o.call(t,a||\"default\");if(\"object\"!==e(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===a?String:Number)(t)}(t,\"string\");return\"symbol\"===e(a)?a:String(a)}(a))in t?Object.defineProperty(t,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[a]=o,t}a.r(o),a.d(o,{default:()=>E});const n=require(\"vue-material-design-icons/Eye.vue\");var s=a.n(n);const l=require(\"vue-material-design-icons/EyeOff.vue\");var c=a.n(l),u=a(9563),d=a(3465),m=a.n(d),p=a(768),g=a.n(p),h=a(733),v=a(4262),b=a(932),A=a(6115);function f(e){return f=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},f(e)}function y(){y=function(){return e};var e={},t=Object.prototype,a=t.hasOwnProperty,o=Object.defineProperty||function(e,t,a){e[t]=a.value},i=\"function\"==typeof Symbol?Symbol:{},r=i.iterator||\"@@iterator\",n=i.asyncIterator||\"@@asyncIterator\",s=i.toStringTag||\"@@toStringTag\";function l(e,t,a){return Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},\"\")}catch(e){l=function(e,t,a){return e[t]=a}}function c(e,t,a,i){var r=t&&t.prototype instanceof m?t:m,n=Object.create(r.prototype),s=new P(i||[]);return o(n,\"_invoke\",{value:S(e,a,s)}),n}function u(e,t,a){try{return{type:\"normal\",arg:e.call(t,a)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var d={};function m(){}function p(){}function g(){}var h={};l(h,r,(function(){return this}));var v=Object.getPrototypeOf,b=v&&v(v(z([])));b&&b!==t&&a.call(b,r)&&(h=b);var A=g.prototype=m.prototype=Object.create(h);function C(e){[\"next\",\"throw\",\"return\"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function i(o,r,n,s){var l=u(e[o],e,r);if(\"throw\"!==l.type){var c=l.arg,d=c.value;return d&&\"object\"==f(d)&&a.call(d,\"__await\")?t.resolve(d.__await).then((function(e){i(\"next\",e,n,s)}),(function(e){i(\"throw\",e,n,s)})):t.resolve(d).then((function(e){c.value=e,n(c)}),(function(e){return i(\"throw\",e,n,s)}))}s(l.arg)}var r;o(this,\"_invoke\",{value:function(e,a){function o(){return new t((function(t,o){i(e,a,t,o)}))}return r=r?r.then(o,o):o()}})}function S(e,t,a){var o=\"suspendedStart\";return function(i,r){if(\"executing\"===o)throw new Error(\"Generator is already running\");if(\"completed\"===o){if(\"throw\"===i)throw r;return N()}for(a.method=i,a.arg=r;;){var n=a.delegate;if(n){var s=w(n,a);if(s){if(s===d)continue;return s}}if(\"next\"===a.method)a.sent=a._sent=a.arg;else if(\"throw\"===a.method){if(\"suspendedStart\"===o)throw o=\"completed\",a.arg;a.dispatchException(a.arg)}else\"return\"===a.method&&a.abrupt(\"return\",a.arg);o=\"executing\";var l=u(e,t,a);if(\"normal\"===l.type){if(o=a.done?\"completed\":\"suspendedYield\",l.arg===d)continue;return{value:l.arg,done:a.done}}\"throw\"===l.type&&(o=\"completed\",a.method=\"throw\",a.arg=l.arg)}}}function w(e,t){var a=t.method,o=e.iterator[a];if(void 0===o)return t.delegate=null,\"throw\"===a&&e.iterator.return&&(t.method=\"return\",t.arg=void 0,w(e,t),\"throw\"===t.method)||\"return\"!==a&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+a+\"' method\")),d;var i=u(o,e.iterator,t.arg);if(\"throw\"===i.type)return t.method=\"throw\",t.arg=i.arg,t.delegate=null,d;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,d):r:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,d)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(j,this),this.reset(!0)}function z(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function t(){for(;++o<e.length;)if(a.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=g,o(A,\"constructor\",{value:g,configurable:!0}),o(g,\"constructor\",{value:p,configurable:!0}),p.displayName=l(g,s,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===p||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,l(e,s,\"GeneratorFunction\")),e.prototype=Object.create(A),e},e.awrap=function(e){return{__await:e}},C(k.prototype),l(k.prototype,n,(function(){return this})),e.AsyncIterator=k,e.async=function(t,a,o,i,r){void 0===r&&(r=Promise);var n=new k(c(t,a,o,i),r);return e.isGeneratorFunction(a)?n:n.next().then((function(e){return e.done?e.value:n.next()}))},C(A),l(A,s,\"Generator\"),l(A,r,(function(){return this})),l(A,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=Object(e),a=[];for(var o in t)a.push(o);return a.reverse(),function e(){for(;a.length;){var o=a.pop();if(o in t)return e.value=o,e.done=!1,e}return e.done=!0,e}},e.values=z,P.prototype={constructor:P,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=void 0,this.tryEntries.forEach(x),!e)for(var t in this)\"t\"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function o(a,o){return n.type=\"throw\",n.arg=e,t.next=a,o&&(t.method=\"next\",t.arg=void 0),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],n=r.completion;if(\"root\"===r.tryLoc)return o(\"end\");if(r.tryLoc<=this.prev){var s=a.call(r,\"catchLoc\"),l=a.call(r,\"finallyLoc\");if(s&&l){if(this.prev<r.catchLoc)return o(r.catchLoc,!0);if(this.prev<r.finallyLoc)return o(r.finallyLoc)}else if(s){if(this.prev<r.catchLoc)return o(r.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<r.finallyLoc)return o(r.finallyLoc)}}}},abrupt:function(e,t){for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o];if(i.tryLoc<=this.prev&&a.call(i,\"finallyLoc\")&&this.prev<i.finallyLoc){var r=i;break}}r&&(\"break\"===e||\"continue\"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var n=r?r.completion:{};return n.type=e,n.arg=t,r?(this.method=\"next\",this.next=r.finallyLoc,d):this.complete(n)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var a=this.tryEntries[t];if(a.finallyLoc===e)return this.complete(a.completion,a.afterLoc),x(a),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var a=this.tryEntries[t];if(a.tryLoc===e){var o=a.completion;if(\"throw\"===o.type){var i=o.arg;x(a)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:z(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=void 0),d}},e}function C(e,t,a,o,i,r,n){try{var s=e[r](n),l=s.value}catch(e){return void a(e)}s.done?t(l):Promise.resolve(l).then(o,i)}function k(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function S(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?k(Object(a),!0).forEach((function(t){w(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):k(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function w(e,t,a){return(t=function(e){var t=function(e,t){if(\"object\"!==f(e)||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var o=a.call(e,t||\"default\");if(\"object\"!==f(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===f(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const j={name:\"NcPasswordField\",components:{NcInputField:u.Z,Eye:s(),EyeOff:c()},inheritAttrs:!1,props:S(S({},u.Z.props),{},{helperText:{type:String,default:\"\"},checkPasswordStrength:{type:Boolean,default:!1},minlength:{type:Number,default:0},maxlength:{type:Number,default:null},showTrailingButton:{type:Boolean,default:!0}}),emits:[\"valid\",\"invalid\",\"update:value\"],data:function(){return{isPasswordHidden:!0,internalHelpMessage:\"\",passwordPolicy:(0,h.loadState)(\"core\",\"capabilities\",{}).password_policy||null,isValid:null}},computed:{computedError:function(){return this.error||!1===this.isValid},computedSuccess:function(){return this.success||!0===this.isValid},computedHelperText:function(){return this.helperText.length>0?this.helperText:this.internalHelpMessage},rules:function(){var e=this.minlength,t=this.passwordPolicy;return{minlength:null!=e?e:null==t?void 0:t.minLength}},trailingButtonLabelPassword:function(){return this.isPasswordHidden?(0,b.t)(\"Show password\"):(0,b.t)(\"Hide password\")}},watch:{value:function(e){if(this.checkPasswordStrength){if(null===this.passwordPolicy)return;this.passwordPolicy&&this.checkPassword(e)}}},methods:{handleInput:function(e){this.$emit(\"update:value\",e.target.value)},togglePasswordVisibility:function(){this.isPasswordHidden=!this.isPasswordHidden},checkPassword:m()(function(){var e,t=(e=y().mark((function e(t){var a,o;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g().post((0,v.generateOcsUrl)(\"apps/password_policy/api/v1/validate\"),{password:t});case 3:if(a=e.sent,o=a.data,this.isValid=o.ocs.data.passed,!o.ocs.data.passed){e.next=10;break}return this.internalHelpMessage=(0,b.t)(\"Password is secure\"),this.$emit(\"valid\"),e.abrupt(\"return\");case 10:this.internalHelpMessage=o.ocs.data.reason,this.$emit(\"invalid\"),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),A.Z.error(\"Password policy returned an error\",e.t0);case 17:case\"end\":return e.stop()}}),e,this,[[0,14]])})),function(){var t=this,a=arguments;return new Promise((function(o,i){var r=e.apply(t,a);function n(e){C(r,o,i,n,s,\"next\",e)}function s(e){C(r,o,i,n,s,\"throw\",e)}n(void 0)}))});return function(e){return t.apply(this,arguments)}}(),500)}};var x=a(1900),P=a(6239),z=a.n(P),N=(0,x.Z)(j,(function(){var e=this,t=e._self._c;return t(\"NcInputField\",e._g(e._b({ref:\"inputField\",attrs:{type:e.isPasswordHidden?\"password\":\"text\",\"show-trailing-button\":e.showTrailingButton&&!0,\"trailing-button-label\":e.trailingButtonLabelPassword,\"helper-text\":e.computedHelperText,error:e.computedError,success:e.computedSuccess,minlength:e.rules.minlength},on:{\"trailing-button-click\":e.togglePasswordVisibility,input:e.handleInput},scopedSlots:e._u([{key:\"trailing-button-icon\",fn:function(){return[e.isPasswordHidden?t(\"Eye\",{attrs:{size:18}}):t(\"EyeOff\",{attrs:{size:18}})]},proxy:!0}])},\"NcInputField\",i(i({},e.$attrs),e.$props),!1),e.$listeners),[e._t(\"default\")],2)}),[],!1,null,null,null);\"function\"==typeof z()&&z()(N);const E=N.exports})(),o})()));\n//# sourceMappingURL=NcPasswordField.js.map","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.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 * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index.js'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\n\t\tconst fullName = this.get('fullName')\n\t\tif (this.get('avatar') && fullName) {\n\t\t\tthis.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName }))\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/** @type {string} */\n\ttagName: 'ul',\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {string} */\n\ttagName: 'li',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search.js'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport OCA from '../OCA/index.js'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', '.crumb', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tif (showHiddenInput?.value !== \"1\") {\n\t\t\tfiles = files.filter(function (file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append('<nav></nav>')\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<li data-dir=\"{dir}\" tabindex=\"0\"><a class=\"{classList}\">{name}</a></li>').addClass('crumb')\n\t\tvar $breadcrumbs = $('<ul class=\"breadcrumb\"></ul>')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t$breadcrumbs.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t\tclassList: 'icon-home'\n\t\t}, { escapeFunction: null }).addClass('crumb svg crumbhome').prependTo($breadcrumbs)\n\n\n\t\tthis.$dirTree.find('> nav').prepend($breadcrumbs)\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.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 const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index.js'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index.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=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * Validate Node construct data\n */\nconst validateData = (data) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data);\n this._data = data;\n this._attributes = data.attributes || {};\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n return dirname(this.source.split(this.root).pop() || '/');\n }\n return dirname(this.source);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n return this._data.permissions || Permission.READ;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return this.source.match(this._knownDavService) !== null;\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the file id if defined in attributes\n */\n get fileid() {\n return this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n this._data.source = destination;\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/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\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.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 ContactsMenu from './contactsmenu.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.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\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","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',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional login-passwordless\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"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\",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\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\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\tlet match = multiMatcher.exec(input);\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","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/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\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\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\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\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\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\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 keyValueSep = 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\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\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\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\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\taccumulator[key] = [...accumulator[key], 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\taccumulator[key] = [...accumulator[key], 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 isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? 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: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\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\taccumulator[key] = [...accumulator[key], ...arrayValue];\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\taccumulator[key] = [...[accumulator[key]].flat(), 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 parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\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\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\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : 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\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\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\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\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 = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\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\tconst value = object[key];\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\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\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: url_?.split('?')?.[0] ?? '',\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 = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\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\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"},domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","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.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=3fa8511b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=3fa8511b&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=3fa8511b&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=3fa8511b&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 \"3fa8511b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=5bd351bc&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd351bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Log in with a device')))]),_vm._v(\" \"),_c('fieldset',[_c('NcTextField',{attrs:{\"required\":\"\",\"value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label-visible\":true,\"label\":_vm.t('core', 'Username or email'),\"placeholder\":_vm.t('core', 'Username 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.hasPublicKeyCredential)?_c('div',{staticClass:\"update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon information-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9H11V7H13M13,17H11V11H13M12,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\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"InformationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Information.vue?vue&type=template&id=030dae94&\"\nimport script from \"./Information.vue?vue&type=script&lang=js&\"\nexport * from \"./Information.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 information-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 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9H11V7H13M13,17H11V11H13M12,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!./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&\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon lock-open-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path 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\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LockOpenIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=043c34a0&\"\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,\"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 }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<h2>{{ t('core', 'Log in with a device') }}</h2>\n\t\t<fieldset>\n\t\t\t<NcTextField required\n\t\t\t\t:value=\"user\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t:error=\"!validCredentials\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:label=\"t('core', 'Username or email')\"\n\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t:helper-text=\"!validCredentials ? t('core', 'Your account is not setup for passwordless login.') : ''\"\n\t\t\t\t@update:value=\"changeUsername\" />\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService.js'\nimport LoginButton from './LoginButton.vue'\nimport InformationIcon from 'vue-material-design-icons/Information.vue'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\t// check required fields\n\t\t\tif (!this.$refs.loginForm.checkValidity()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tchangeUsername(username) {\n\t\t\tthis.user = username\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tfieldset {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 0.5rem;\n\n\t\t:deep(label) {\n\t\t\ttext-align: initial;\n\t\t}\n\t}\n\n\t.update {\n\t\tmargin: 0 auto;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=11c76644&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=11c76644&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=11c76644&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=11c76644&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 \"11c76644\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', '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 account name, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', '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 account name, check your spam/junk folders or ask your local administration for help.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=6636f1b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=6636f1b2&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=6636f1b2&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=6636f1b2&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 \"6636f1b2\",\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 - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dc21d74\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<template v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional login-passwordless\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t\t:aria-label=\"t('core', 'Back to login form')\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\t@click=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</template>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n// Same look like a dashboard panel\n.login-box.guest-box, footer {\n\tcolor: var(--color-main-text);\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n}\n\nfooter {\n\t// Usually the same size as the login box, but allow longer texts\n\tmin-width: 320px;\n\tbox-sizing: border-box;\n\t// align with login box\n\tbox-shadow: 0 0 10px var(--color-box-shadow);\n\t// set border to pill style and adjust padding for it\n\tborder-radius: var(--border-radius-pill);\n\tpadding: 6px 24px;\n\t// always show above bottom\n\tmargin-bottom: 1rem;\n\tmin-height: unset;\n\n\t// reset margin to reduce height of pill\n\tp.info {\n\t\tmargin: auto 0px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=359b835b&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=359b835b&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=359b835b&\"\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=359b835b&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.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 * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.4.1\n\n// (c) 2010-2022 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.4.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 attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\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 this.trigger('changeId', this, prevId, options);\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) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\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 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 });\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._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) return false;\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 false;\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 });\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 // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (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 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-3fa8511b]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"fieldset[data-v-11c76644]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-11c76644] label{text-align:initial}.update[data-v-11c76644]{margin:0 auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\n\\t:deep(label) {\\n\\t\\ttext-align: initial;\\n\\t}\\n}\\n\\n.update {\\n\\tmargin: 0 auto;\\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-6636f1b2]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-6636f1b2]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-6636f1b2]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.login-box.guest-box,footer{color:var(--color-main-text);background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur)}footer{min-width:320px;box-sizing:border-box;box-shadow:0 0 10px var(--color-box-shadow);border-radius:var(--border-radius-pill);padding:6px 24px;margin-bottom:1rem;min-height:unset}footer p.info{margin:auto 0px}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAKF,4BACC,4BAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CAGD,OAEC,eAAA,CACA,qBAAA,CAEA,2CAAA,CAEA,uCAAA,CACA,gBAAA,CAEA,kBAAA,CACA,gBAAA,CAGA,cACC,eAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n\\n// Same look like a dashboard panel\\n.login-box.guest-box, footer {\\n\\tcolor: var(--color-main-text);\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n}\\n\\nfooter {\\n\\t// Usually the same size as the login box, but allow longer texts\\n\\tmin-width: 320px;\\n\\tbox-sizing: border-box;\\n\\t// align with login box\\n\\tbox-shadow: 0 0 10px var(--color-box-shadow);\\n\\t// set border to pill style and adjust padding for it\\n\\tborder-radius: var(--border-radius-pill);\\n\\tpadding: 6px 24px;\\n\\t// always show above bottom\\n\\tmargin-bottom: 1rem;\\n\\tmin-height: unset;\\n\\n\\t// reset margin to reduce height of pill\\n\\tp.info {\\n\\t\\tmargin: auto 0px;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n.login-passwordless {\\n\\t.button-vue {\\n\\t\\tmargin-top: 0.5rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nif (typeof dav === 'undefined') { dav = {}; };\n\ndav._XML_CHAR_MAP = {\n '<': '&lt;',\n '>': '&gt;',\n '&': '&amp;',\n '\"': '&quot;',\n \"'\": '&apos;'\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 '<?xml version=\"1.0\"?>\\n' +\n '<d:propfind ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' +\n ' <d:prop>\\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+=' <x:' + property.name + ' xmlns:x=\"' + property.namespace + '\" />\\n';\n }\n\n }\n body+=' </d:prop>\\n';\n body+='</d:propfind>';\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.<String,String>} properties\n * @return {String} XML \"<d:set>\" block\n */\n _renderPropSet: function(properties) {\n var body = ' <d:set>\\n' +\n ' <d:prop>\\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 +=' </d:prop>\\n';\n body +=' </d:set>\\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.<String,String>} 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 '<?xml version=\"1.0\"?>\\n' +\n '<d:propertyupdate ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body += '</d:propertyupdate>';\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.<String,String>} [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 '<?xml version=\"1.0\"?>\\n' +\n '<d:mkcol';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body +='</d:mkcol>';\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\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// Current version.\nexport var VERSION = '1.13.6';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar 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};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((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\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(57469)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","joinPaths","_len","arguments","length","args","Array","_key","nonEmptyArgs","filter","arg","lastArg","leadingSlash","charAt","trailingSlash","sections","reduce","acc","section","concat","split","first","path","exports","map","encodeURIComponent","join","replace","path1","path2","pathSections1","p","pathSections2","apply","undefined","e","t","module","self","a","d","Z","c","o","i","r","n","s","l","name","components","NcButton","default","AlertCircle","Check","inheritAttrs","props","value","type","String","required","validator","includes","label","labelOutside","Boolean","labelVisible","placeholder","showTrailingButton","trailingButtonLabel","success","error","helperText","disabled","inputClass","Object","emits","computed","computedId","this","$attrs","id","inputName","hasLeadingIcon","$slots","hasTrailingIcon","hasPlaceholder","computedPlaceholder","isValidLabel","console","warn","methods","handleInput","$emit","target","handleTrailingButtonClick","x","_self","_c","staticClass","class","attrs","for","_v","_s","_e","_g","_b","ref","domProps","on","input","$listeners","directives","rawName","expression","_t","click","scopedSlots","_u","key","fn","proxy","size","Symbol","iterator","constructor","prototype","keys","getOwnPropertySymbols","getOwnPropertyDescriptor","enumerable","push","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","toPrimitive","call","TypeError","configurable","writable","indexOf","nativeType","wide","ariaLabel","href","to","exact","ariaHidden","render","text","trim","u","icon","m","navigate","isActive","isExactActive","role","custom","g","h","v","b","A","f","y","C","styleTagTransform","setAttributes","insert","bind","domAPI","insertStyleElement","locals","k","S","w","j","getGettextBuilder","detectLocale","locale","translations","Actions","Activities","Choose","Close","Custom","Favorite","Flags","Global","Next","Objects","Open","Previous","Search","Settings","Submit","Symbols","items","pluralId","msgid","msgid_plural","msgstr","addTranslation","build","ngettext","gettext","Math","random","toString","slice","detectUser","setApp","version","sources","names","mappings","sourcesContent","sourceRoot","btoa","unescape","JSON","stringify","identifier","base","css","media","sourceMap","supports","layer","references","updater","byIndex","splice","update","remove","document","querySelector","window","HTMLIFrameElement","contentDocument","head","Error","appendChild","createElement","attributes","options","nc","setAttribute","parentNode","removeChild","styleSheet","cssText","firstChild","createTextNode","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","__esModule","get","hasOwnProperty","toStringTag","E","asyncIterator","create","P","wrap","getPrototypeOf","z","_invoke","resolve","__await","then","done","method","delegate","sent","_sent","dispatchException","abrupt","return","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","reset","isNaN","N","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","reverse","pop","values","prev","stop","rval","complete","finish","catch","delegateYield","NcInputField","Eye","EyeOff","checkPasswordStrength","minlength","Number","maxlength","data","isPasswordHidden","internalHelpMessage","passwordPolicy","loadState","password_policy","isValid","computedError","computedSuccess","computedHelperText","rules","minLength","trailingButtonLabelPassword","watch","checkPassword","togglePasswordVisibility","post","generateOcsUrl","password","ocs","passed","reason","t0","$props","updatableNotification","getDefaultNotificationFunction","setDefault","callback","hide","$row","_","each","$","toastify","hideToast","showHtml","html","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","ajaxConnectionLostHandler","Notification","trailing","endpoint","OC","toUpperCase","url","appConfig","oc_appconfig","AppConfig","getValue","app","defaultValue","setValue","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","patch","delete","read","parsePropFindResult","result","davProperties","subResult","propStat","status","properties","propKey","parseIdFromLocation","queryPos","substr","parts","isSuccessStatus","callPropPatch","client","model","headers","propPatch","changedProp","convertModelAttributesToDavProperties","changed","toJSON","Backbone","VendorBackbone","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","urlError","processData","textStatus","errorThrown","context","trigger","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","set","ContactCollection","ContactsListView","View","_collection","_subViews","tagName","$el","contact","item","ContactsListItemView","append","_onChildActionMenuToggle","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","term","rawUid","getElementsByTagName","getAttribute","currentUser","isA11yActivation","event","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","attr","buttonlist","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","_options$target","_options","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","tooltip","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","match","isFileNameValid","file","escape","placement","addClass","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","removeClass","$originalDiv","$replacementDiv","mtime","lastModified","directory","urlSpec","etag","forceIcon","previewpath","Files","generatePreviewUrl","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","$breadcrumbs","paths","classList","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","lastMenu","slideUp","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","patterns","querySelectorAll","pattern","ii","fill","stroke","removeAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","humanList","humanListBinary","user","FileType","Permission","setUid","uid","chunkify","tz","History","humanFileSize","skipSmallSizes","binaryPrefixes","order","log","readableFormat","relativeSize","toFixed","parseFloat","toLocaleString","computerFileSize","string","bytes","matches","isFinite","kb","mb","gb","tb","pb","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","w1","offsetWidth","w2","clientWidth","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","appswebroots","dialogs","getCurrentUser","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","seconds","setInterval","clearInterval","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","Util","filePath","generateFilePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","singleMatcher","RegExp","multiMatcher","decodeComponents","right","decode","tokens","splitOnFirst","separator","separatorIndex","includeKeys","object","predicate","isArray","descriptor","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","charCodeAt","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","strict","encodedURI","replaceMap","exec","entries","customDecodeURIComponent","keysSorter","removeHash","hashStart","parseValue","parseNumbers","parseBooleans","extract","queryStart","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","test","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","getHash","urlObjectForFragmentEncode","pick","exclude","ArrowRight","valueLoading","invertedColors","_vm","$event","LoginButton","NcPasswordField","NcTextField","NcNoteCard","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","_Intl$DateTimeFormat","_Intl$DateTimeFormat$","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","getTimezoneOffset","headline","productName","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","internalException","loadingIcon","loginActionUrl","mounted","$refs","inputField","updateUsername","_l","staticStyle","shake","fillColor","NoValidCredentials","InformationIcon","LockOpenIcon","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","loginForm","checkValidity","getAuthenticationData","publicKey","sign","completeAuthentication","changeUsername","base64urlDecode","pad","atob","loginName","Axios","resp","startAuthentication","challenge","Uint8Array","from","allowCredentials","arrayToBase64String","fromCharCode","credentials","rawId","authenticatorData","clientDataJSON","signature","userHandle","finishAuthentication","_ref","defaultRedirectUrl","resetPasswordLink","axios","resetPasswordTarget","encrypted","proceed","encryption","composing","_i","$$a","$$el","$$c","checked","$$i","warning","clear","localStorage","sessionStorage","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","PublicKeyCredential","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","Nextcloud","LoginView","$mount","root","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","opts","_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","all","triggerEvents","ev","a1","a2","a3","listener","unbind","extend","preinitialize","cid","cidPrefix","validationError","idAttribute","sync","has","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","serverAttrs","wrapError","save","wait","validate","isNew","destroy","models","_reset","setOptions","merge","addOptions","array","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","findWhere","isFunction","sortBy","pluck","callbackOpts","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","kind","_kind","_index","viewOptions","_ensureElement","delegateEventSplitter","_removeElement","setElement","undelegateEvents","_setElement","eventName","undelegate","_createElement","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","foldl","inject","reduceRight","foldr","detect","select","every","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","mixin","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","optional","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getPath","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","factory","___CSS_LOADER_EXPORT___","_XML_CHAR_MAP","_escapeXml","ch","Client","userName","namespace","property","parseClarkNotation","_renderPropSet","propName","propValue","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","node","nodeType","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","subString","scheme","propertyName","container","depth0","helpers","partials","stack1","lookupProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","Function","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","func","startIndex","isNull","isUndefined","isBoolean","isElement","tagTester","tag","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","baseIteratee","Infinity","mapObject","currentKey","propertyOf","times","accum","now","getTime","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","settings","oldSettings","offset","argument","variable","fallback","idCounter","prefix","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","callArgs","flatten","output","len","memoize","hasher","cache","address","throttle","later","leading","throttled","_now","clearTimeout","debounce","immediate","debounced","_args","wrapper","negate","compose","after","before","findKey","createPredicateIndexFinder","sortedIndex","low","high","mid","createIndexFinder","predicateFind","createReduce","reducer","fromIndex","guard","contextPath","lastComputed","reStrSymbol","rand","temp","criteria","group","behavior","pass","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","step","chunk","chainResult","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","getter","definition","globalThis","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}