diff --git a/build/frontend-legacy/package-lock.json b/build/frontend-legacy/package-lock.json index 4d3c63b219f00..1d80f55f833ae 100644 --- a/build/frontend-legacy/package-lock.json +++ b/build/frontend-legacy/package-lock.json @@ -30,7 +30,7 @@ "@nextcloud/sharing": "^0.4.0", "@nextcloud/upload": "^1.11.1", "@nextcloud/vue": "^8.39.0", - "@simplewebauthn/browser": "^13.2.2", + "@simplewebauthn/browser": "^13.3.0", "@vue/web-component-wrapper": "^1.3.0", "@vueuse/components": "^11.3.0", "@vueuse/core": "^11.3.0", @@ -5328,9 +5328,9 @@ ] }, "node_modules/@simplewebauthn/browser": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.2.2.tgz", - "integrity": "sha512-FNW1oLQpTJyqG5kkDg5ZsotvWgmBaC6jCHR7Ej0qUNep36Wl9tj2eZu7J5rP+uhXgHaLk+QQ3lqcw2vS5MX1IA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.3.0.tgz", + "integrity": "sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==", "license": "MIT" }, "node_modules/@standard-schema/spec": { diff --git a/build/frontend-legacy/package.json b/build/frontend-legacy/package.json index f1210e27b5fd5..7c512271c37af 100644 --- a/build/frontend-legacy/package.json +++ b/build/frontend-legacy/package.json @@ -49,7 +49,7 @@ "@nextcloud/sharing": "^0.4.0", "@nextcloud/upload": "^1.11.1", "@nextcloud/vue": "^8.39.0", - "@simplewebauthn/browser": "^13.2.2", + "@simplewebauthn/browser": "^13.3.0", "@vue/web-component-wrapper": "^1.3.0", "@vueuse/components": "^11.3.0", "@vueuse/core": "^11.3.0", diff --git a/dist/core-login.js b/dist/core-login.js index 63203760560b5..00c8ed368cfae 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,2 +1,2 @@ -(()=>{var e,n,r,o={70789(e,n,r){"use strict";var o={};r.r(o),r.d(o,{clearIconCache:()=>Jt,getIconUrl:()=>Kt});var s={};r.r(s),r.d(s,{VERSION:()=>oe,after:()=>Lr,all:()=>Xr,allKeys:()=>mn,any:()=>to,assign:()=>Ln,before:()=>Br,bind:()=>Ar,bindAll:()=>jr,chain:()=>vr,chunk:()=>Uo,clone:()=>Un,collect:()=>Kr,compact:()=>ko,compose:()=>Nr,constant:()=>Ze,contains:()=>eo,countBy:()=>go,create:()=>Rn,debounce:()=>Pr,default:()=>Fo,defaults:()=>Bn,defer:()=>Sr,delay:()=>kr,detect:()=>$r,difference:()=>To,drop:()=>jo,each:()=>Vr,escape:()=>sr,every:()=>Xr,extend:()=>Nn,extendOwn:()=>Ln,filter:()=>Gr,find:()=>$r,findIndex:()=>Mr,findKey:()=>Rr,findLastIndex:()=>Dr,findWhere:()=>Yr,first:()=>Co,flatten:()=>So,foldl:()=>Jr,foldr:()=>Qr,forEach:()=>Vr,functions:()=>En,get:()=>qn,groupBy:()=>ho,has:()=>Hn,head:()=>Co,identity:()=>$n,include:()=>eo,includes:()=>eo,indexBy:()=>mo,indexOf:()=>qr,initial:()=>_o,inject:()=>Jr,intersection:()=>No,invert:()=>Pn,invoke:()=>no,isArguments:()=>Je,isArray:()=>Ve,isArrayBuffer:()=>Ue,isBoolean:()=>Te,isDataView:()=>Ye,isDate:()=>Le,isElement:()=>Pe,isEmpty:()=>cn,isEqual:()=>hn,isError:()=>Ie,isFinite:()=>Qe,isFunction:()=>Fe,isMap:()=>Cn,isMatch:()=>un,isNaN:()=>Ge,isNull:()=>ke,isNumber:()=>Ne,isObject:()=>xe,isRegExp:()=>Be,isSet:()=>xn,isString:()=>Oe,isSymbol:()=>Re,isTypedArray:()=>on,isUndefined:()=>Se,isWeakMap:()=>jn,isWeakSet:()=>kn,iteratee:()=>Jn,keys:()=>ln,last:()=>xo,lastIndexOf:()=>Hr,map:()=>Kr,mapObject:()=>Gn,matcher:()=>Yn,matches:()=>Yn,max:()=>so,memoize:()=>xr,methods:()=>En,min:()=>ao,mixin:()=>Do,negate:()=>Or,noop:()=>Zn,now:()=>nr,object:()=>Io,omit:()=>Ao,once:()=>Ir,pairs:()=>Tn,partial:()=>wr,partition:()=>vo,pick:()=>wo,pluck:()=>ro,property:()=>Vn,propertyOf:()=>Xn,random:()=>er,range:()=>Ro,reduce:()=>Jr,reduceRight:()=>Qr,reject:()=>Zr,rest:()=>jo,restArguments:()=>je,result:()=>hr,sample:()=>co,select:()=>Gr,shuffle:()=>uo,size:()=>yo,some:()=>to,sortBy:()=>fo,sortedIndex:()=>Fr,tail:()=>jo,take:()=>Co,tap:()=>Mn,template:()=>pr,templateSettings:()=>ir,throttle:()=>Tr,times:()=>tr,toArray:()=>lo,toPath:()=>Dn,transpose:()=>Lo,unescape:()=>ar,union:()=>Oo,uniq:()=>Eo,unique:()=>Eo,uniqueId:()=>gr,unzip:()=>Lo,values:()=>Sn,where:()=>oo,without:()=>Po,wrap:()=>Er,zip:()=>Bo});var a=r(85471),i=r(81222),l=r(63814),c=r(82490),u=r(74095),d=r(371),f=r(53334),p=r(46855),h=r(32073),m=r(16044),g=r(82182);const v={name:"LoginButton",components:{ArrowRight:r(71164).A,NcButton:u.A},props:{value:{type:String,default:(0,f.Tl)("core","Log in")},valueLoading:{type:String,default:(0,f.Tl)("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var y=r(85072),b=r.n(y),w=r(97825),A=r.n(w),_=r(77659),C=r.n(_),j=r(55056),x=r.n(j),k=r(10540),S=r.n(k),T=r(41113),P=r.n(T),E=r(14430),O={};O.styleTagTransform=P(),O.setAttributes=x(),O.insert=C().bind(null,"head"),O.domAPI=A(),O.insertStyleElement=S(),b()(E.A,O),E.A&&E.A.locals&&E.A.locals;var N=r(14486);const L=(0,N.A)(v,function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{variant:"primary",type:"submit",wide:!0,disabled:t.loading},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])},[],!1,null,"bbf83d00",null).exports,B={computed:{userNameInputLengthIs255(){return this.user.length>=255},userInputHelperText(){if(this.userNameInputLengthIs255)return t("core","Email length is at max (255)")}}},I={name:"LoginForm",components:{LoginButton:L,NcCheckboxRadioSwitch:h.A,NcPasswordField:m.A,NcTextField:g.A,NcNoteCard:d.A},mixins:[B],props:{username:{type:String,default:""},redirectUrl:{type:[Boolean,String],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},remembermeAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1},emailStates:{type:Array,default:()=>[]}},setup:()=>({t:f.Tl,headlineText:(0,f.Tl)("core","Log in to {productName}",{productName:OC.theme.name},void 0,{sanitize:!1,escape:!1}),loginTimeout:(0,i.C)("core","loginTimeout",300),requestToken:window.OC.requestToken,timezone:(new Intl.DateTimeFormat)?.resolvedOptions()?.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60}),data:t=>({loading:!1,user:t.username,password:"",rememberme:["1"],visible:!1}),computed:{resetFormTimeout(){return this.loginTimeout<=0?()=>{}:(0,p.A)(this.handleResetForm,1e3*this.loginTimeout)},isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?(0,f.Tl)("core","Wrong login or password."):this.userDisabled?(0,f.Tl)("core","This account is disabled"):this.throttleDelay>5e3?(0,f.Tl)("core","Too many incorrect login attempts. Please try again in 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},csrfCheckFailed(){return-1!==this.errors.indexOf("csrfCheckFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,l.d0)("core","loading-dark.gif"),loginActionUrl:()=>(0,l.Jv)("login"),emailEnabled(){return this.emailStates.every(t=>"1"===t)},loginText(){return this.emailEnabled?(0,f.Tl)("core","Account name or email"):(0,f.Tl)("core","Account name")}},watch:{password(){this.resetFormTimeout()}},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():this.$refs.password.$refs.inputField.$refs.input.focus()},methods:{handleResetForm(){this.password=""},updateUsername(){this.$emit("update:username",this.user)},submit(t){this.visible=!1,this.loading?t.preventDefault():(this.loading=!0,this.$emit("submit"))}}};var R=r(44098),U={};U.styleTagTransform=P(),U.setAttributes=x(),U.insert=C().bind(null,"head"),U.domAPI=A(),U.insertStyleElement=S(),b()(R.A,U),R.A&&R.A.locals&&R.A.locals;const M=(0,N.A)(I,function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.csrfCheckFailed?e("NcNoteCard",{attrs:{heading:t.t("core","Session error"),type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","It appears your session token has expired, please refresh the page and try again."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,function(n,r){return e("div",{key:r},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])}),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""}},[t._v("\n\t\t\t"+t._s(t.headlineText)+"\n\t\t")]),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.loginText,name:"user",maxlength:255,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"",error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,"data-login-form-input-user":""},on:{change:t.updateUsername},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password",spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,visible:t.visible,"data-login-form-input-password":"",required:""},model:{value:t.password,callback:function(e){t.password=e},expression:"password"}}),t._v(" "),t.remembermeAllowed?e("NcCheckboxRadioSwitch",{ref:"rememberme",attrs:{id:"rememberme",name:"rememberme",value:"1","data-login-form-input-rememberme":""},model:{value:t.rememberme,callback:function(e){t.rememberme=e},expression:"rememberme"}},[t._v("\n\t\t\t"+t._s(t.t("core","Remember me"))+"\n\t\t")]):t._e(),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])},[],!1,null,"f91ba7fe",null).exports;class D extends Error{constructor({message:t,code:e,cause:n,name:r}){super(t,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=r??n.name,this.code=e}}const F=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}};function z(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function q(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,r=e.padEnd(e.length+n,"="),o=atob(r),s=new ArrayBuffer(o.length),a=new Uint8Array(s);for(let t=0;tt},Y=t=>t;function V(t){const{id:e}=t;return{...t,id:q(e),transports:t.transports}}const K=["cross-platform","platform"];function W(t){if(t&&!(K.indexOf(t)<0))return t}var J=r(42507),Q=r(36076);const G={name:"LockOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=(0,N.A)(G,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-open-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("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"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var X=r(21777),tt=r(35947);const et=null===(nt=(0,X.HW)())?(0,tt.YK)().setApp("core").build():(0,tt.YK)().setApp("core").setUid(nt.uid).build();var nt;(0,tt.YK)().setApp("unified-search").detectUser().build();var rt=r(44368);class ot extends Error{}const st=(0,a.pM)({name:"PasswordLessLoginForm",components:{LoginButton:L,InformationIcon:Q.A,LockOpenIcon:Z,NcEmptyContent:J.A,NcTextField:g.A},props:{username:{type:String,default:""},redirectUrl:{type:[Boolean,String],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({supportsWebauthn:H()}),data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{async authenticate(){if(this.$refs.loginForm.checkValidity()){et.debug("passwordless login initiated");try{const t=await async function(t){const e=(0,l.Jv)("/login/webauthn/start"),{data:n}=await rt.Ay.post(e,{loginName:t});if(!n.allowCredentials||0===n.allowCredentials.length)throw et.error("No valid credentials returned for webauthn"),new ot;return await async function(t){!t.optionsJSON&&t.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),t={optionsJSON:t});const{optionsJSON:e,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=t;if(!H())throw new Error("WebAuthn is not supported in this browser");let o;0!==e.allowCredentials?.length&&(o=e.allowCredentials?.map(V));const s={...e,challenge:q(e.challenge),allowCredentials:o},a={};if(n){if(!await function(){if(!H())return Y(new Promise(t=>t(!1)));const t=globalThis.PublicKeyCredential;return Y(void 0===t?.isConditionalMediationAvailable?new Promise(t=>t(!1)):t.isConditionalMediationAvailable())}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&r)throw Error('No with "webauthn" as the only or last value in its `autocomplete` attribute was detected');a.mediation="conditional",s.allowCredentials=[]}let i;a.publicKey=s,a.signal=F.createNewAbortSignal();try{i=await navigator.credentials.get(a)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new D({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new D({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=globalThis.location.hostname;if("localhost"!==(r=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(r))return new D({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new D({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new D({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var r;return t}({error:t,options:a})}if(!i)throw new Error("Authentication was not completed");const{id:l,rawId:c,response:u,type:d}=i;let f;return u.userHandle&&(f=z(u.userHandle)),{id:l,rawId:z(c),response:{authenticatorData:z(u.authenticatorData),clientDataJSON:z(u.clientDataJSON),signature:z(u.signature),userHandle:f},type:d,clientExtensionResults:i.getClientExtensionResults(),authenticatorAttachment:W(i.authenticatorAttachment)}}({optionsJSON:n})}(this.user);await this.completeAuthentication(t)}catch(t){if(t instanceof ot)return void(this.validCredentials=!1);et.debug(t)}}},changeUsername(t){this.user=t,this.$emit("update:username",this.user)},completeAuthentication(t){let e=this.redirectUrl;return async function(t){const e=(0,l.Jv)("/login/webauthn/finish"),{data:n}=await rt.Ay.post(e,{data:JSON.stringify(t)});return n}(t).then(({defaultRedirectUrl:t})=>{et.debug("Logged in redirecting"),e?("/"!==e.charAt(0)&&(e="/"+e),window.location.href=(0,l.$_)()+e):window.location.href=t}).catch(t=>{et.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!",{error:t})})},submit(){}}});var at=r(86524),it={};it.styleTagTransform=P(),it.setAttributes=x(),it.insert=C().bind(null,"head"),it.domAPI=A(),it.insertStyleElement=S(),b()(at.A,it),at.A&&at.A.locals&&at.A.locals;var lt=(0,N.A)(st,function(){var t=this,e=t._self._c;return t._self._setupProxy,(t.isHttps||t.isLocalhost)&&t.supportsWebauthn?e("form",{ref:"loginForm",staticClass:"password-less-login-form",attrs:{"aria-labelledby":"password-less-login-form-title",method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",{attrs:{id:"password-less-login-form-title"}},[t._v("\n\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t")]),t._v(" "),e("NcTextField",{attrs:{required:"","model-value":t.user,autocomplete:t.autoCompleteAllowed?"on":"off",error:!t.validCredentials,label:t.t("core","Login or email"),placeholder:t.t("core","Login or email"),"helper-text":t.validCredentials?"":t.t("core","Your account is not setup for passwordless login.")},on:{"update:value":t.changeUsername}}),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1):t.isHttps||t.isLocalhost?e("NcEmptyContent",{attrs:{name:t.t("core","Browser not supported"),description:t.t("core","Passwordless authentication is not supported in your browser.")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("InformationIcon")]},proxy:!0}])}):e("NcEmptyContent",{attrs:{name:t.t("core","Your connection is not secure"),description:t.t("core","Passwordless authentication is only available over a secure connection.")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("LockOpenIcon")]},proxy:!0}])})},[],!1,null,"25758ef3",null);const ct=lt.exports,ut=(0,a.pM)({name:"ResetPassword",components:{LoginButton:L,NcButton:u.A,NcNoteCard:d.A,NcTextField:g.A},mixins:[B],props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:"",user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},async submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,l.Jv)("/lostpassword/email");try{const{data:e}=await rt.Ay.post(t,{user:this.user});if("success"!==e.status)throw new Error(`got status ${e.status}`);this.message="send-success"}catch(t){et.error("could not send reset email request",{error:t}),this.error=!0,this.message="send-error"}finally{this.loading=!1}}}});var dt=r(99322),ft={};ft.styleTagTransform=P(),ft.setAttributes=x(),ft.insert=C().bind(null,"head"),ft.domAPI=A(),ft.insertStyleElement=S(),b()(dt.A,ft),dt.A&&dt.A.locals&&dt.A.locals;var pt=(0,N.A)(ut,function(){var t=this,e=t._self._c;return t._self._setupProxy,e("form",{staticClass:"reset-password-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("core","Reset password")))]),t._v(" "),e("NcTextField",{attrs:{id:"user",name:"user",maxlength:255,autocapitalize:"off",label:t.t("core","Login or email"),error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,required:""},on:{change:t.updateUsername},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password")}}),t._v(" "),e("NcButton",{attrs:{variant:"tertiary",wide:""},on:{click:function(e){return t.$emit("abort")}}},[t._v("\n\t\t"+t._s(t.t("core","Back to login"))+"\n\t")]),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t"+t._s(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 Login, check your spam/junk folders or ask your local administration for help."))+"\n\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t")]):t._e()],1)},[],!1,null,"759a0fdd",null);const ht=pt.exports,mt={name:"UpdatePassword",components:{LoginButton:L},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await rt.Ay.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var gt=r(81604),vt={};vt.styleTagTransform=P(),vt.setAttributes=x(),vt.insert=C().bind(null,"head"),vt.domAPI=A(),vt.insertStyleElement=S(),b()(gt.A,vt),gt.A&>.A.locals&>.A.locals;var yt=(0,N.A)(mt,function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",spellcheck:"false",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,r=e.target,o=!!r.checked;if(Array.isArray(n)){var s=t._i(n,null);r.checked?s<0&&(t.proceed=n.concat([null])):s>-1&&(t.proceed=n.slice(0,s).concat(n.slice(s+1)))}else t.proceed=o}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])},[],!1,null,"2c0ecaf9",null);const bt=yt.exports;const wt=c.A.parse(location.search);"1"===wt.clear&&async function(){try{window.localStorage.clear(),window.sessionStorage.clear();const t=await window.indexedDB.databases();for(const e of t)await window.indexedDB.deleteDatabase(e.name);et.debug("Browser storages cleared")}catch(t){et.error("Could not clear browser storages",{error:t})}}();const At={name:"Login",components:{LoginForm:M,PasswordLessLoginForm:ct,ResetPassword:ht,UpdatePassword:bt,NcButton:u.A,NcNoteCard:d.A},data:()=>({loading:!1,user:(0,i.C)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,i.C)("core","loginErrors",[]),messages:(0,i.C)("core","loginMessages",[]),redirectUrl:(0,i.C)("core","loginRedirectUrl",!1),throttleDelay:(0,i.C)("core","loginThrottleDelay",0),canResetPassword:(0,i.C)("core","loginCanResetPassword",!1),resetPasswordLink:(0,i.C)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,i.C)("core","loginAutocomplete",!0),remembermeAllowed:(0,i.C)("core","loginCanRememberme",!0),resetPasswordTarget:(0,i.C)("core","resetPasswordTarget",""),resetPasswordUser:(0,i.C)("core","resetPasswordUser",""),directLogin:"1"===wt.direct,hasPasswordless:(0,i.C)("core","webauthn-available",!1),countAlternativeLogins:(0,i.C)("core","countAlternativeLogins",!1),alternativeLogins:(0,i.C)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hideLoginForm:(0,i.C)("core","hideLoginForm",!1),emailStates:(0,i.C)("core","emailStates",[])}),methods:{passwordResetFinished(){window.location.href=(0,l.Jv)("login")+"?direct=1"}}};var _t=r(11999),Ct={};Ct.styleTagTransform=P(),Ct.setAttributes=x(),Ct.insert=C().bind(null,"head"),Ct.domAPI=A(),Ct.insertStyleElement=S(),b()(_t.A,Ct),_t.A&&_t.A.locals&&_t.A.locals;const jt=(0,N.A)(At,function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset-pw-less",staticClass:"login-additional login-box__wrapper"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("NcButton",{attrs:{variant:"tertiary","aria-label":t.t("core","Back to login form"),wide:!0},on:{click:function(e){t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset-can-reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",{staticClass:"login-box__wrapper"},[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed,"rememberme-allowed":t.remembermeAllowed,"email-states":t.emailStates},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.hasPasswordless?e("NcButton",{attrs:{variant:"tertiary",wide:""},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("NcButton",{attrs:{id:"lost-password",href:t.resetPasswordLink,variant:"tertiary-no-background",wide:""}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("NcButton",{attrs:{id:"lost-password",variant:"tertiary",wide:""},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e()],1)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"info",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","The Nextcloud login form is disabled. Use another login option if available or contact your administration."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"login-box__alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,function(n,r){return e("NcButton",{key:r,class:[n.class],attrs:{variant:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])}),1)],2)},[],!1,null,"518c0816",null).exports;var xt=r(61338),kt=r(71225);const St=!!window._oc_isadmin,Tt=window.oc_appconfig||{},Pt=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var Et=r(87485);const Ot=window._oc_config||{},Nt=document.getElementsByTagName("head")[0].getAttribute("data-user"),Lt=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Bt=void 0!==Nt&&Nt,It=window._oc_debug;var Rt=r(21363),Ut=r(85168),Mt=r(98469),Dt=r(43627);const Ft={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,r){this.message(t,e,"alert",Ft.OK_BUTTON,n,r)},info:function(t,e,n,r){this.message(t,e,"info",Ft.OK_BUTTON,n,r)},confirm:function(t,e,n,r){return this.message(t,e,"notice",Ft.YES_NO_BUTTONS,n,r)},confirmDestructive:function(t,e,n=Ft.OK_BUTTONS,r=()=>{}){return(new Ut.ik).setName(e).setText(t).setButtons(n===Ft.OK_BUTTONS?[{label:(0,f.t)("core","Yes"),variant:"error",callback:()=>{r.clicked=!0,r(!0)}}]:Ft._getLegacyButtons(n,r)).build().show().then(()=>{r.clicked||r(!1)})},confirmHtml:function(t,e,n){return(new Ut.ik).setName(e).setText("").setButtons([{label:(0,f.t)("core","No"),callback:()=>{}},{label:(0,f.t)("core","Yes"),variant:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then(()=>{n.clicked||n(!1)})},prompt:function(t,e,n,o,s,i){return new Promise(o=>{(0,Mt.S)((0,a.$V)(()=>Promise.all([r.e(4208),r.e(9553)]).then(r.bind(r,99553))),{text:t,name:e,callback:n,inputName:s,isPassword:!!i},(...t)=>{n(...t),o()})})},filepicker(t,e,n=!1,r=void 0,o=void 0,s=Ut.bh.Choose,a=void 0,i=void 0){const l=(t,e)=>{const r=t=>{const e=t?.root||"";let n=t?.path||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(r),e):n=>t(r(n[0]),e)},c=(0,Ut.a1)(t);s===this.FILEPICKER_TYPE_CUSTOM?(i.buttons||[]).forEach(t=>{c.addButton({callback:l(e,t.type),label:t.text,variant:t.defaultButton?"primary":"secondary"})}):c.setButtonFactory((t,n)=>{const r=[],[o]=t,a=o?.displayname||o?.basename||(0,Dt.basename)(n);return s===Ut.bh.Choose&&r.push({callback:l(e,Ut.bh.Choose),label:o&&!this.multiSelect?(0,f.t)("core","Choose {file}",{file:a}):(0,f.t)("core","Choose"),variant:"primary"}),s!==Ut.bh.CopyMove&&s!==Ut.bh.Copy||r.push({callback:l(e,Ut.bh.Copy),label:a?(0,f.t)("core","Copy to {target}",{target:a}):(0,f.t)("core","Copy"),variant:"primary",icon:Rt}),s!==Ut.bh.Move&&s!==Ut.bh.CopyMove||r.push({callback:l(e,Ut.bh.Move),label:a?(0,f.t)("core","Move to {target}",{target:a}):(0,f.t)("core","Move"),variant:s===Ut.bh.Move?"primary":"secondary",icon:''}),r}),r&&c.setMimeTypeFilter("string"==typeof r?[r]:r||[]),"function"==typeof i?.filter&&c.setFilter(t=>i.filter((t=>({id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:t.mtime?.getTime()||null,permissions:t.permissions,name:t.attributes?.displayName||t.basename,etag:t.attributes?.etag||null,hasPreview:t.attributes?.hasPreview||null,mountType:t.attributes?.mountType||null,quotaAvailableBytes:t.attributes?.quotaAvailableBytes||null,icon:null,sharePermissions:null}))(t))),c.allowDirectories(!0===i?.allowDirectoryChooser||r?.includes("httpd/unix-directory")||!1).setMultiSelect(n).startAt(a).build().pick()},message:function(t,e,n,r,o=()=>{},s,a){const i=(new Ut.ik).setName(e).setText(a?"":t).setButtons(Ft._getLegacyButtons(r,o));switch(n){case"alert":i.setSeverity("warning");break;case"notice":i.setSeverity("info")}const l=i.build();return a&&l.setHTML(t),l.show().then(()=>{o._clicked||o(!1)})},_getLegacyButtons(t,e){const n=[];switch("object"==typeof t?t.type:t){case Ft.YES_NO_BUTTONS:n.push({label:t?.cancel??(0,f.t)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),n.push({label:t?.confirm??(0,f.t)("core","Yes"),variant:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case Ft.OK_BUTTONS:n.push({label:t?.confirm??(0,f.t)("core","OK"),variant:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:et.error("Invalid call to OC.dialogs")}return n}},zt=Ft;function qt(){return document.head.dataset.requesttoken}function Ht(t,e){let n,r,o="";if(this.typelessListeners=[],this.closed=!1,e)for(n in e)o+=n+"="+encodeURIComponent(e[n])+"&";o+="requesttoken="+encodeURIComponent(qt()),r="&",-1===t.indexOf("?")&&(r="?"),this.source=new EventSource(t+r+o),this.source.onmessage=function(t){for(let e=0;et.cancel()),n.style.display="block")},finishedSaving(t,e){this.finishedAction(t,e)},finishedAction(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess(t,e){const n=document.querySelector(t);n&&n instanceof HTMLElement&&(n.textContent=e,n.classList.remove("error"),n.classList.add("success"),n.getAnimations?.().forEach(t=>t.cancel()),window.setTimeout(function(){if(!(n&&n instanceof HTMLElement))return;const t=n.animate?.([{opacity:1},{opacity:0}],{duration:900,fill:"forwards"});t?t.addEventListener("finish",()=>{n.style.display="none"}):window.setTimeout(()=>{n.style.display="none"},900)},3e3),n.style.display="block")},finishedError(t,e){const n=document.querySelector(t);n&&n instanceof HTMLElement&&(n.textContent=e,n.classList.remove("success"),n.classList.add("error"),n.style.display="block")}};var Gt=r(34300);const Zt={requiresPasswordConfirmation:()=>(0,Gt.oB)(),requirePasswordConfirmation(t,e,n){(0,Gt.C5)().then(t,n)}},Xt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const r=this.getPlugins(t);for(let t=0;t=0&&n<=Ce}}function tn(t){return function(e){return null==e?void 0:e[t]}}const en=tn("byteLength"),nn=Xe(en);var rn=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const on=pe?function(t){return ye?ye(t)&&!Ye(t):nn(t)&&rn.test(de.call(t))}:Ze(!1),sn=tn("length");function an(t,e){e=function(t){for(var e={},n=t.length,r=0;r=0))if(r.push(t),o.push(e),n.push(!0),l){if((d=t.length)!==e.length)return!1;for(;d--;)n.push({a:t[d],b:e[d]})}else{var f,p=ln(t);if(d=p.length,ln(e).length!==d)return!1;for(;d--;){if(!Ke(e,f=p[d]))return!1;n.push({a:t[f],b:e[f]})}}}else r.pop(),o.pop()}return!0}function mn(t){if(!xe(t))return[];var e=[];for(var n in t)e.push(n);return Ae&&an(t,e),e}function gn(t){var e=sn(t);return function(n){if(null==n)return!1;var r=mn(n);if(sn(r))return!1;for(var o=0;o":">",'"':""","'":"'","`":"`"},sr=rr(or),ar=rr(Pn(or)),ir=dn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var lr=/(.)^/,cr={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},ur=/\\|'|\r|\n|\u2028|\u2029/g;function dr(t){return"\\"+cr[t]}var fr=/^\s*(\w|\$)+\s*$/;function pr(t,e,n){!e&&n&&(e=n),e=Bn({},e,dn.templateSettings);var r=RegExp([(e.escape||lr).source,(e.interpolate||lr).source,(e.evaluate||lr).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(r,function(e,n,r,a,i){return s+=t.slice(o,i).replace(ur,dr),o=i+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":a&&(s+="';\n"+a+"\n__p+='"),e}),s+="';\n";var a,i=e.variable;if(i){if(!fr.test(i))throw new Error("variable is not a bare identifier: "+i)}else s="with(obj||{}){\n"+s+"}\n",i="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{a=new Function(i,"_",s)}catch(t){throw t.source=s,t}var l=function(t){return a.call(this,t,dn)};return l.source="function("+i+"){\n"+s+"}",l}function hr(t,e,n){var r=(e=Fn(e)).length;if(!r)return Fe(n)?n.call(t):n;for(var o=0;o=a){if(!i.length)break;var l=i.pop();s=l.i,t=l.v,a=sn(t)}else{var c=t[s++];i.length>=e?r[o++]=c:_r(c)&&(Ve(c)||Je(c))?(i.push({i:s,v:t}),s=0,a=sn(t=c)):n||(r[o++]=c)}return r}const jr=je(function(t,e){var n=(e=Cr(e,!1,!1)).length;if(n<1)throw new Error("bindAll must be passed function names");for(;n--;){var r=e[n];t[r]=Ar(t[r],t)}return t});function xr(t,e){var n=function(r){var o=n.cache,s=""+(e?e.apply(this,arguments):r);return Ke(o,s)||(o[s]=t.apply(this,arguments)),o[s]};return n.cache={},n}const kr=je(function(t,e,n){return setTimeout(function(){return t.apply(null,n)},e)}),Sr=wr(kr,dn,1);function Tr(t,e,n){var r,o,s,a,i=0;n||(n={});var l=function(){i=!1===n.leading?0:nr(),r=null,a=t.apply(o,s),r||(o=s=null)},c=function(){var c=nr();i||!1!==n.leading||(i=c);var u=e-(c-i);return o=this,s=arguments,u<=0||u>e?(r&&(clearTimeout(r),r=null),i=c,a=t.apply(o,s),r||(o=s=null)):r||!1===n.trailing||(r=setTimeout(l,u)),a};return c.cancel=function(){clearTimeout(r),i=0,r=o=s=null},c}function Pr(t,e,n){var r,o,s,a,i,l=function(){var c=nr()-o;e>c?r=setTimeout(l,e-c):(r=null,n||(a=t.apply(i,s)),r||(s=i=null))},c=je(function(c){return i=this,s=c,o=nr(),r||(r=setTimeout(l,e),n&&(a=t.apply(i,s))),a});return c.cancel=function(){clearTimeout(r),r=s=i=null},c}function Er(t,e){return wr(e,t)}function Or(t){return function(){return!t.apply(this,arguments)}}function Nr(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function Lr(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Br(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Ir=wr(Br,2);function Rr(t,e,n){e=Qn(e,n);for(var r,o=ln(t),s=0,a=o.length;s0?0:o-1;s>=0&&s0?a=s>=0?s:Math.max(s+i,a):i=s>=0?Math.min(s+1,i):s+i+1;else if(n&&s&&i)return r[s=n(r,o)]===o?s:-1;if(o!=o)return(s=e(ue.call(r,a,i),Ge))>=0?s+a:-1;for(s=t>0?a:i-1;s>=0&&s=3;return function(e,n,r,o){var s=!_r(e)&&ln(e),a=(s||e).length,i=t>0?0:a-1;for(o||(r=e[s?s[i]:i],i+=t);i>=0&&i=0}const no=je(function(t,e,n){var r,o;return Fe(e)?o=e:(e=Fn(e),r=e.slice(0,-1),e=e[e.length-1]),Kr(t,function(t){var s=o;if(!s){if(r&&r.length&&(t=zn(t,r)),null==t)return;s=t[e]}return null==s?s:s.apply(t,n)})});function ro(t,e){return Kr(t,Vn(e))}function oo(t,e){return Gr(t,Yn(e))}function so(t,e,n){var r,o,s=-1/0,a=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var i=0,l=(t=_r(t)?t:Sn(t)).length;is&&(s=r);else e=Qn(e,n),Vr(t,function(t,n,r){((o=e(t,n,r))>a||o===-1/0&&s===-1/0)&&(s=t,a=o)});return s}function ao(t,e,n){var r,o,s=1/0,a=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var i=0,l=(t=_r(t)?t:Sn(t)).length;ir||void 0===n)return 1;if(n1&&(r=Kn(r,e[1])),e=mn(t)):(r=bo,e=Cr(e,!1,!1),t=Object(t));for(var o=0,s=e.length;o1&&(n=e[1])):(e=Kr(Cr(e,!1,!1),String),r=function(t,n){return!eo(e,n)}),wo(t,r,n)});function _o(t,e,n){return ue.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function Co(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:_o(t,t.length-e)}function jo(t,e,n){return ue.call(t,null==e||n?1:e)}function xo(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:jo(t,Math.max(0,t.length-e))}function ko(t){return Gr(t,Boolean)}function So(t,e){return Cr(t,e,!1)}const To=je(function(t,e){return e=Cr(e,!0,!0),Gr(t,function(t){return!eo(e,t)})}),Po=je(function(t,e){return To(t,e)});function Eo(t,e,n,r){Te(e)||(r=n,n=e,e=!1),null!=n&&(n=Qn(n,r));for(var o=[],s=[],a=0,i=sn(t);a-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,r=t.length;n=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=Wo.parseQueryString(this._decodeQuery(t))),e=qo.extend(e||{},Wo.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,qo.isString(e)?e=Wo.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&n<="9";a!==s&&(o++,e[o]="",s=a),e[o]+=n,r++}return e}const Yo={History:Ho,humanFileSize:ee.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n;const r=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===r?null:(n=parseFloat(e),isFinite(n)?(r[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[r[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&Wo.debug&&et.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",re()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&Wo.debug&&et.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=re()().diff(re()(e));return n>=0&&n<45e3?t("core","seconds ago"):re()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let r=t.offsetWidth;return n===r&&(r=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-r,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const r=$o(t),o=$o(e);for(n=0;r[n]&&o[n];n++)if(r[n]!==o[n]){const t=Number(r[n]),e=Number(o[n]);return t==r[n]&&e==o[n]?t-e:r[n].localeCompare(o[n],Wo.getLanguage())}return r.length-o.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let r=0;r!$_",appConfig:Tt,appswebroots:Pt,config:Ot,currentUser:Bt,dialogs:zt,EventSource:$t,MimeType:o,getCurrentUser:function(){return{uid:Bt,displayName:Lt}},isUserAdmin:()=>St,L10N:Yt,registerXHRForErrorProcessing:()=>{},getCapabilities:function(){return OC.debug&&et.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,Et.F)()},basename:kt.P8,encodePath:kt.O0,dirname:kt.pD,isSamePath:kt.ys,joinPaths:kt.fj,getCanonicalLocale:f.lO,getLocale:f.JK,getLanguage:f.Z0,buildQueryString:function(t){return t?new URLSearchParams(t).toString():""},parseQueryString:function(t){const e=new URLSearchParams(t);return Object.fromEntries(e.entries())},msg:Qt,PasswordConfirmation:Zt,Plugins:Xt,theme:te,Util:Yo,debug:It,filePath:l.fg,generateUrl:l.Jv,getRootPath:l.aU,imagePath:l.d0,requestToken:qt(),linkTo:l.uM,linkToOCS:(t,e)=>(0,l.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:l.dC,linkToRemoteBase:function(t){return(0,l.aU)()+"/remote.php/"+t},webroot:Ko};(0,xt.B1)("csrf-token-update",t=>{OC.requestToken=t.token,et.info("OC.requestToken changed",{token:t.token})});const Jo={data:()=>({OC:Wo}),methods:{t:Yt.translate.bind(Yt),n:Yt.translatePlural.bind(Yt)}};a.Ay.mixin(Jo),(new(a.Ay.extend(jt))).$mount("#login")},14430(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".button-vue[data-v-bbf83d00]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const i=a},44098(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA",sourcesContent:["\n.login-form {\n\ttext-align: start;\n\tfont-size: 1rem;\n\tmargin: 0;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n\n\t// Only show the error state if the user interacted with the login box\n\t:deep(input:invalid:not(:user-invalid)) {\n\t\tborder-color: var(--color-border-maxcontrast) !important;\n\t}\n}\n"],sourceRoot:""}]);const i=a},86524(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".password-less-login-form[data-v-25758ef3]{display:flex;flex-direction:column;gap:.5rem;margin:0}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA",sourcesContent:["\n.password-less-login-form {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\tmargin: 0;\n}\n"],sourceRoot:""}]);const i=a},99322(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA",sourcesContent:["\n.reset-password-form {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: .5rem;\n\twidth: 100%;\n}\n"],sourceRoot:""}]);const i=a},11999(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA",sourcesContent:["\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__wrapper {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: calc(2 * var(--default-grid-baseline));\n\t}\n\n\t&__alternative-logins {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 0.75rem;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n"],sourceRoot:""}]);const i=a},81604(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,"\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=bbf83d00&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbf83d00\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"variant\":\"primary\",\"type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f91ba7fe&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f91ba7fe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Session error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'It appears your session token has expired, please refresh the page and try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"password\",\"name\":\"password\",\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"visible\":_vm.visible,\"data-login-form-input-password\":\"\",\"required\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),(_vm.remembermeAllowed)?_c('NcCheckboxRadioSwitch',{ref:\"rememberme\",attrs:{\"id\":\"rememberme\",\"name\":\"rememberme\",\"value\":\"1\",\"data-login-form-input-rememberme\":\"\"},model:{value:(_vm.rememberme),callback:function ($$v) {_vm.rememberme=$$v},expression:\"rememberme\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Remember me'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=d7513faa\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport logger from '../logger.js';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication({ optionsJSON: data });\n}\n/**\n * Verify webauthn authentication\n *\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex sourced from here:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=25758ef3&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25758ef3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",staticClass:\"password-less-login-form\",attrs:{\"aria-labelledby\":\"password-less-login-form-title\",\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',{attrs:{\"id\":\"password-less-login-form-title\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"required\":\"\",\"model-value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Your connection is not secure'),\"description\":_vm.t('core', 'Passwordless authentication is only available over a secure connection.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockOpenIcon')]},proxy:true}])}):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Browser not supported'),\"description\":_vm.t('core', 'Passwordless authentication is not supported in your browser.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InformationIcon')]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"reset-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Reset password')))]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"id\":\"user\",\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=759a0fdd&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"759a0fdd\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=2c0ecaf9&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0ecaf9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{ warning: _vm.error }},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\n\n/**\n * this class to ease the usage of dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tjoinChar = '&'\n\tif (src.indexOf('?') === -1) {\n\t\tjoinChar = '?'\n\t}\n\tthis.source = new EventSource(src + joinChar + dataStr)\n\tthis.source.onmessage = function(e) {\n\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t}\n\t}.bind(this)\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.prototype = {\n\ttypelessListeners: [],\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback('')\n\t\t\t\t\t}\n\t\t\t\t}, false)\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\tthis.source.close()\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n */\nexport default {\n /**\n * Displayes a \"Saving...\" message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n */\n startSaving(selector) {\n this.startAction(selector, t('core', 'Saving …'));\n },\n /**\n * Displayes a custom message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n * @param message - Plain text message to display (no HTML allowed)\n */\n startAction(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.remove('error');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n el.style.display = 'block';\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selectior for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status - is being used to decide whether the message is displayed as an error/success\n */\n finishedSaving(selector, response) {\n this.finishedAction(selector, response);\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status . Is being used to decide whether the message is displayed as an error/success\n */\n finishedAction(selector, response) {\n if (response.status === 'success') {\n this.finishedSuccess(selector, response.data.message);\n }\n else {\n this.finishedError(selector, response.data.message);\n }\n },\n /**\n * Displayes an success message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text success message to display (no HTML allowed)\n */\n finishedSuccess(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('error');\n el.classList.add('success');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n window.setTimeout(fadeOut, 3000);\n el.style.display = 'block';\n /**\n * Fades out the message element\n */\n function fadeOut() {\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n // eslint-disable-next-line @stylistic/exp-list-style\n const animation = el.animate?.([\n { opacity: 1 },\n { opacity: 0 },\n ], {\n duration: 900,\n fill: 'forwards',\n });\n if (animation) {\n animation.addEventListener('finish', () => {\n el.style.display = 'none';\n });\n }\n else {\n window.setTimeout(() => {\n el.style.display = 'none';\n }, 900);\n }\n }\n },\n /**\n * Displayes an error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text error message to display (no HTML allowed)\n */\n finishedError(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.add('error');\n el.style.display = 'block';\n },\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","// Current version.\nexport var VERSION = '1.13.8';\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`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || 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 { hasDataViewBug } 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`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : 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 { hasDataViewBug } 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// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n var todo = [{a: a, b: b}];\n // Initializing stacks of traversed objects for cycle detection.\n var aStack = [], bStack = [];\n\n while (todo.length) {\n var frame = todo.pop();\n if (frame === true) {\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n continue;\n }\n a = frame.a;\n b = frame.b;\n\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) {\n if (a !== 0 || 1 / a === 1 / b) continue;\n return false;\n }\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) {\n if (b !== b) continue;\n return false;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n\n// Internal recursive comparison function for `_.isEqual`.\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 (hasDataViewBug && 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 if ('' + a === '' + b) continue;\n return false;\n case '[object Number]':\n todo.push({a: +a, b: +b});\n continue;\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 if (+a === +b) continue;\n return false;\n case '[object Symbol]':\n if (SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b)) continue;\n return false;\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n todo.push({a: toBufferView(a), b: toBufferView(b)});\n continue;\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) continue;\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\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 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) {\n if (bStack[length] === b) break;\n return false;\n }\n }\n if (length >= 0) continue;\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n todo.push(true);\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 todo.push({a: a[length], b: b[length]});\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)) return false;\n todo.push({a: a[key], b: b[key]});\n }\n }\n }\n return true;\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 '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\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) {\n if (!depth && depth !== 0) depth = Infinity;\n var output = [], idx = 0, i = 0, length = getLength(input) || 0, stack = [];\n while (true) {\n if (i >= length) {\n if (!stack.length) break;\n var frame = stack.pop();\n i = frame.i;\n input = frame.v;\n length = getLength(input);\n continue;\n }\n var value = input[i++];\n if (stack.length >= depth) {\n output[idx++] = value;\n } else if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n stack.push({i: i, v: input});\n i = 0;\n input = value;\n length = getLength(input);\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","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\nimport moment from 'moment'\nimport logger from '../logger.js'\nimport OC from './index.js'\nimport History from './util-history.js'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tlet bytes\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x])\n\t\t\t\tconst bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here to include null == undefined\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoin,\n} from '@nextcloud/paths'\nimport {\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgenerateUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\nimport logger from '../logger.js'\nimport { isUserAdmin } from './admin.js'\nimport { appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport { getCapabilities } from './capabilities.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport { debug } from './debug.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport L10N from './l10n.js'\nimport * as MimeType from './mimeType.js'\nimport msg from './msg.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.ts'\nimport { getRequestToken } from './requesttoken.ts'\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\tappConfig,\n\tappswebroots,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\tMimeType,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * This is already handled by `interceptRequests` in `core/src/init.js`.\n\t *\n\t * @deprecated 33.0.0 - unused by Nextcloud and only a stub remains. Just remove usage.\n\t */\n\tregisterXHRForErrorProcessing: () => {},\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths: join,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t// Query string helpers\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\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 `WgenerateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', (e) => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tlogger.info('OC.requestToken changed', { token: e.token })\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport function getCapabilities() {\n\tif (OC.debug) {\n\t\tlogger.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\t}\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Parses a URL query string into a JS map\n *\n * @param queryString - Query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return Object containing key/values matching the URL parameters\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function parse(queryString) {\n const params = new URLSearchParams(queryString);\n return Object.fromEntries(params.entries());\n}\n/**\n * Builds a URL query from a JS map.\n *\n * @param params - Object containing key/values matching the URL parameters\n * @return String containing a URL query (without question) mark\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function build(params) {\n if (!params) {\n return '';\n }\n const search = new URLSearchParams(params);\n return search.toString();\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport function linkToRemoteBase(service) {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport OC from '../OC/index.js'\nimport L10n from '../OC/l10n.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-bbf83d00]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\tmargin: 0;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n\\n\\t// Only show the error state if the user interacted with the login box\\n\\t:deep(input:invalid:not(:user-invalid)) {\\n\\t\\tborder-color: var(--color-border-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.password-less-login-form[data-v-25758ef3]{display:flex;flex-direction:column;gap:.5rem;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.password-less-login-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\tmargin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.reset-password-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: .5rem;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA\",\"sourcesContent\":[\"\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(2 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__alternative-logins {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 0.75rem;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\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 = 35358;","// 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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"e426dffa0d609dfde185\",\"1526\":\"3880a727f208388a74a4\",\"4941\":\"593e2f3f0bbc38e064db\",\"6087\":\"182899a9233f9c1b33de\",\"6597\":\"bc290d3028e2b01e732b\",\"7859\":\"27dacd840f2038d8dc50\",\"9337\":\"b9644566d53e41d9f507\",\"9553\":\"02d301b651bbefe80bc1\"}[chunkId] + \"\";\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 = 1418;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(70789)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","login_LoginButtonvue_type_script_lang_js","name","components","ArrowRight","A","NcButton","props","value","type","String","default","t","valueLoading","loading","Boolean","required","invertedColors","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","LoginButtonvue_type_style_index_0_id_bbf83d00_prod_lang_scss_scoped_true","locals","LoginButton","componentNormalizer","_vm","this","_c","_self","attrs","variant","wide","disabled","on","click","$event","$emit","scopedSlots","_u","key","fn","staticClass","proxy","_v","_s","auth","computed","userNameInputLengthIs255","user","length","userInputHelperText","login_LoginFormvue_type_script_lang_js","NcCheckboxRadioSwitch","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","Array","messages","throttleDelay","Number","autoCompleteAllowed","remembermeAllowed","directLogin","emailStates","setup","l10n_dist","Tl","headlineText","productName","OC","theme","undefined","sanitize","escape","loginTimeout","loadState","requestToken","window","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","data","password","rememberme","visible","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","indexOf","csrfCheckFailed","internalException","loadingIcon","imagePath","loginActionUrl","generateUrl","emailEnabled","every","state","loginText","watch","mounted","$refs","inputField","input","focus","methods","updateUsername","submit","event","preventDefault","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true_options","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true","LoginForm","ref","method","action","title","_e","heading","_l","message","index","class","id","alt","src","staticStyle","clear","shake","label","maxlength","autocapitalize","spellchecking","autocomplete","error","change","model","callback","$$v","expression","domProps","WebAuthnError","Error","constructor","code","cause","super","Object","defineProperty","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","bufferToBase64URLString_bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","fromCharCode","btoa","replace","base64URLStringToBuffer_base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn_browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","globalThis","PublicKeyCredential","_browserSupportsWebAuthnAutofillInternals","toPublicKeyCredentialDescriptor_toPublicKeyCredentialDescriptor","descriptor","transports","attachments","toAuthenticatorAttachment_toAuthenticatorAttachment","attachment","vue_material_design_icons_LockOpenvue_type_script_lang_js","emits","fillColor","size","LockOpen","_b","role","$attrs","fill","width","height","viewBox","d","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","NoValidCredentials","login_PasswordLessLoginFormvue_type_script_lang_js","defineComponent","InformationIcon","InformationOutline","LockOpenIcon","NcEmptyContent","isHttps","isLocalhost","supportsWebauthn","browserSupportsWebAuthn","validCredentials","authenticate","loginForm","checkValidity","debug","params","async","loginName","url","Axios","post","allowCredentials","optionsJSON","challenge","console","warn","useBrowserAutofill","verifyBrowserAutofillInput","map","publicKey","getOptions","Promise","resolve","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","document","querySelectorAll","mediation","credential","navigator","credentials","get","err","AbortSignal","effectiveDomain","location","hostname","test","rpId","identifyAuthenticationError","rawId","response","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","JSON","stringify","finishAuthentication","then","defaultRedirectUrl","charAt","href","getBaseUrl","catch","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true_options","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true","PasswordLessLoginForm_component","_setupProxy","apply","arguments","placeholder","description","PasswordLessLoginForm","login_ResetPasswordvue_type_script_lang_ts","resetPasswordLink","axios","status","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true_options","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true","ResetPassword_component","ResetPassword","login_UpdatePasswordvue_type_script_lang_js","resetPasswordTarget","encrypted","proceed","encryption","msg","e","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css_options","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css","UpdatePassword_component","for","directives","rawName","spellcheck","target","composing","checked","isArray","_i","$$a","$$el","$$c","$$i","concat","slice","warning","UpdatePassword","query","queryString","parse","search","localStorage","sessionStorage","indexedDBList","indexedDB","databases","deleteDatabase","wipeBrowserStorages","views_Loginvue_type_script_lang_js","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","protocol","hideLoginForm","passwordResetFinished","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss_options","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss","Login","mode","done","alternativeLogin","isAdmin","_oc_isadmin","appConfig","oc_appconfig","OC_appswebroots","_oc_appswebroots","OC_config","_oc_config","rawUid","getElementsByTagName","getAttribute","displayName","currentUser","_oc_debug","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","text","modal","OK_BUTTON","info","confirm","confirmDestructive","buttons","DialogBuilder","setName","setText","setButtons","clicked","_getLegacyButtons","show","confirmHtml","setHTML","prompt","spawnDialog","defineAsyncComponent","all","__webpack_require__","inputName","isPassword","args","filepicker","multiselect","mimetype","_modal","FilePickerType","Choose","path","legacyCallback","getPath","node","root","startsWith","nodes","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","displayname","basename","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","attributes","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","dialogs","getRequestToken","head","dataset","requesttoken","OCEventSource","joinChar","dataStr","typelessListeners","closed","encodeURIComponent","source","EventSource","onmessage","listen","close","prototype","call","addEventListener","eventsource","l10n","load","loadTranslations","register","kz","_unregister","unregister","translate","translatePlural","iconCache","Map","getIconUrl","mimeType","MimeTypeList","aliases","has","gotIcon","folder","themes","getRootUrl","getMimeTypeIcon","files","OCA","Theming","cacheBuster","set","RegExp","split","clearIconCache","startSaving","selector","startAction","el","querySelector","HTMLElement","textContent","classList","remove","getAnimations","animation","style","display","finishedSaving","finishedAction","finishedSuccess","finishedError","add","setTimeout","animate","opacity","duration","password_confirmation","requiresPasswordConfirmation","isPasswordConfirmationRequired","requirePasswordConfirmation","rejectCallback","confirmPassword","plugins","_plugins","targetName","plugin","getPlugins","attach","targetObject","detach","_theme","VERSION","self","global","Function","ArrayProto","ObjProto","SymbolProto","Symbol","_setup_toString","toString","_setup_hasOwnProperty","hasOwnProperty","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","rest","isObject","obj","isNull","isUndefined","isBoolean","isElement","nodeType","tagTester","tag","isString","isNumber","isDate","isRegExp","isSymbol","isArrayBuffer","isFunction","nodelist","childNodes","Int8Array","modules_isFunction","_hasObjectTag","hasDataViewBug","isIE11","isDataView","modules_isDataView","getInt8","isArguments","modules_isArguments","isFinite_isFinite","parseFloat","isNaN_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","_getByteLength","_isBufferLike","typedArrayPattern","modules_isTypedArray","_getLength","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","proto","prop","isEmpty","isMatch","object","_keys","_","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","toJSON","tagDataView","isEqual","a","b","todo","aStack","bStack","frame","pop","className","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","isMap","isWeakMap","isSet","isWeakSet","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","extend","extendOwn","baseCreate","Ctor","clone","tap","interceptor","toPath","_toPath_toPath","deepGet","defaultValue","has_has","identity","matcher","property","optimizeCb","context","argCount","accumulator","baseIteratee","iteratee","Infinity","cb","mapObject","results","currentKey","noop","propertyOf","times","n","accum","random","min","floor","now","createEscaper","escaper","match","join","testRegexp","replaceRegexp","string","_escapeMap","modules_escape","modules_unescape","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","template","settings","oldSettings","offset","render","argument","variable","fallback","idCounter","uniqueId","prefix","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","position","modules_partial","TypeError","callArgs","_isArrayLike","flatten","depth","strict","output","idx","stack","v","bindAll","memoize","hasher","cache","address","delay","wait","defer","throttle","timeout","previous","later","leading","throttled","_now","remaining","clearTimeout","trailing","debounce_debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","once","findKey","createPredicateIndexFinder","dir","array","findIndex","findLastIndex","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","lastIndexOf","find","findWhere","each","createReduce","initial","reducer","reduce","reduceRight","list","reject","some","fromIndex","guard","invoke","contextPath","pluck","where","lastComputed","reStrSymbol","toArray","sample","last","rand","temp","shuffle","sortBy","criteria","left","right","group","behavior","partition","groupBy","indexBy","countBy","pass","keyInObj","omit","first","compact","flatten_flatten","difference","without","otherArrays","uniq","isSorted","seen","union","arrays","intersection","argsLength","j","unzip","zip","range","stop","step","ceil","chunk","count","chainResult","mixin","underscore_array_methods","index_default_","modules_namespaceObject","index_default","util_history","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","userAgent","toLowerCase","parseInt","patterns","pattern","ii","stroke","removeAttribute","setAttribute","replaceState","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","substr","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","c","x","y","m","util","History","humanFileSize","files_dist","v7","computerFileSize","s","trim","matches","k","kb","mb","gb","g","tb","pb","p","round","formatDate","timestamp","format","TESTING","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","createElement","outer","top","visibility","overflow","appendChild","body","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","isCookieSetToValue","cookies","cookie","webroot","_oc_webroot","OC_webroot","src_OC","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","appswebroots","config","Config","MimeType","mimeType_namespaceObject","isUserAdmin","L10N","registerXHRForErrorProcessing","getCapabilities","realGetCapabilities","paths_dist","P8","encodePath","O0","dirname","pD","isSamePath","ys","joinPaths","getCanonicalLocale","lO","getLocale","JK","Z0","URLSearchParams","fromEntries","entries","PasswordConfirmation","Plugins","Util","filePath","generateFilePath","router_dist","Jv","getRootPath","d0","linkTo","uM","linkToOCS","service","version","generateOcsUrl","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","token","Nextcloud","L10n","Vue","LoginView","$mount","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","sources","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","webpackContext","req","webpackContextResolve","o","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","splice","r","getter","__esModule","definition","f","chunkId","promises","u","script","needAttach","scripts","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","toStringTag","nmd","paths","children","dn","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","tagName","toUpperCase","baseURI","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-login.js?v=e1086c151d82721383fb","mappings":"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AAA,MAEx0G,MAAAC,EAAA,gBCdA,IAAA5yB,EAAA,CACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,YACA,eACA,YACA,eACA,WACA,cACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,mBACA,sBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,e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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","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?428d","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/mixins/auth.js","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?33a8","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=d7513faa","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?933f","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=ts","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?e816","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?84cd","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/utils/xhr-request.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?6921","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.ts","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/mimeType.js","webpack:///nextcloud/core/src/OC/msg.ts","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","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/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/query-string.ts","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","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/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["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, fn, priority] = deferred[i];\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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=bbf83d00&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbf83d00\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"variant\":\"primary\",\"type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f91ba7fe&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f91ba7fe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Session error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'It appears your session token has expired, please refresh the page and try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"password\",\"name\":\"password\",\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"visible\":_vm.visible,\"data-login-form-input-password\":\"\",\"required\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),(_vm.remembermeAllowed)?_c('NcCheckboxRadioSwitch',{ref:\"rememberme\",attrs:{\"id\":\"rememberme\",\"name\":\"rememberme\",\"value\":\"1\",\"data-login-form-input-rememberme\":\"\"},model:{value:(_vm.rememberme),callback:function ($$v) {_vm.rememberme=$$v},expression:\"rememberme\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Remember me'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=d7513faa\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport logger from '../logger.js';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication({ optionsJSON: data });\n}\n/**\n * Verify webauthn authentication\n *\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex was originally sourced from here, then remixed to add punycode support:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n // Support punycode (ACE) or ascii labels and domains\n /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(hostname));\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=25758ef3&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=25758ef3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25758ef3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",staticClass:\"password-less-login-form\",attrs:{\"aria-labelledby\":\"password-less-login-form-title\",\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',{attrs:{\"id\":\"password-less-login-form-title\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"required\":\"\",\"model-value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Your connection is not secure'),\"description\":_vm.t('core', 'Passwordless authentication is only available over a secure connection.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockOpenIcon')]},proxy:true}])}):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Browser not supported'),\"description\":_vm.t('core', 'Passwordless authentication is not supported in your browser.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InformationIcon')]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"reset-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Reset password')))]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"id\":\"user\",\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=759a0fdd&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"759a0fdd\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=2c0ecaf9&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0ecaf9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{ warning: _vm.error }},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\n\n/**\n * this class to ease the usage of dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tjoinChar = '&'\n\tif (src.indexOf('?') === -1) {\n\t\tjoinChar = '?'\n\t}\n\tthis.source = new EventSource(src + joinChar + dataStr)\n\tthis.source.onmessage = function(e) {\n\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t}\n\t}.bind(this)\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.prototype = {\n\ttypelessListeners: [],\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback('')\n\t\t\t\t\t}\n\t\t\t\t}, false)\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\tthis.source.close()\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n */\nexport default {\n /**\n * Displayes a \"Saving...\" message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n */\n startSaving(selector) {\n this.startAction(selector, t('core', 'Saving …'));\n },\n /**\n * Displayes a custom message in the given message placeholder\n *\n * @param selector - Query selectior for the element to display the message in\n * @param message - Plain text message to display (no HTML allowed)\n */\n startAction(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.remove('error');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n el.style.display = 'block';\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selectior for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status - is being used to decide whether the message is displayed as an error/success\n */\n finishedSaving(selector, response) {\n this.finishedAction(selector, response);\n },\n /**\n * Displayes an success/error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param response - Response of the server\n * @param response.data - Data of the servers response\n * @param response.data.message - Plain text message to display (no HTML allowed)\n * @param response.status . Is being used to decide whether the message is displayed as an error/success\n */\n finishedAction(selector, response) {\n if (response.status === 'success') {\n this.finishedSuccess(selector, response.data.message);\n }\n else {\n this.finishedError(selector, response.data.message);\n }\n },\n /**\n * Displayes an success message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text success message to display (no HTML allowed)\n */\n finishedSuccess(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('error');\n el.classList.add('success');\n el.getAnimations?.().forEach((animation) => animation.cancel());\n window.setTimeout(fadeOut, 3000);\n el.style.display = 'block';\n /**\n * Fades out the message element\n */\n function fadeOut() {\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n // eslint-disable-next-line @stylistic/exp-list-style\n const animation = el.animate?.([\n { opacity: 1 },\n { opacity: 0 },\n ], {\n duration: 900,\n fill: 'forwards',\n });\n if (animation) {\n animation.addEventListener('finish', () => {\n el.style.display = 'none';\n });\n }\n else {\n window.setTimeout(() => {\n el.style.display = 'none';\n }, 900);\n }\n }\n },\n /**\n * Displayes an error message in the given selector\n *\n * @param selector - Query selector for the element to display the message in\n * @param message - Plain text error message to display (no HTML allowed)\n */\n finishedError(selector, message) {\n const el = document.querySelector(selector);\n if (!el || !(el instanceof HTMLElement)) {\n return;\n }\n el.textContent = message;\n el.classList.remove('success');\n el.classList.add('error');\n el.style.display = 'block';\n },\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","// Current version.\nexport var VERSION = '1.13.8';\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`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || 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 { hasDataViewBug } 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`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : 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 { hasDataViewBug } 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// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n var todo = [{a: a, b: b}];\n // Initializing stacks of traversed objects for cycle detection.\n var aStack = [], bStack = [];\n\n while (todo.length) {\n var frame = todo.pop();\n if (frame === true) {\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n continue;\n }\n a = frame.a;\n b = frame.b;\n\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) {\n if (a !== 0 || 1 / a === 1 / b) continue;\n return false;\n }\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) {\n if (b !== b) continue;\n return false;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n\n// Internal recursive comparison function for `_.isEqual`.\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 (hasDataViewBug && 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 if ('' + a === '' + b) continue;\n return false;\n case '[object Number]':\n todo.push({a: +a, b: +b});\n continue;\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 if (+a === +b) continue;\n return false;\n case '[object Symbol]':\n if (SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b)) continue;\n return false;\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n todo.push({a: toBufferView(a), b: toBufferView(b)});\n continue;\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) continue;\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\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 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) {\n if (bStack[length] === b) break;\n return false;\n }\n }\n if (length >= 0) continue;\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n todo.push(true);\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 todo.push({a: a[length], b: b[length]});\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)) return false;\n todo.push({a: a[key], b: b[key]});\n }\n }\n }\n return true;\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 '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\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) {\n if (!depth && depth !== 0) depth = Infinity;\n var output = [], idx = 0, i = 0, length = getLength(input) || 0, stack = [];\n while (true) {\n if (i >= length) {\n if (!stack.length) break;\n var frame = stack.pop();\n i = frame.i;\n input = frame.v;\n length = getLength(input);\n continue;\n }\n var value = input[i++];\n if (stack.length >= depth) {\n output[idx++] = value;\n } else if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n stack.push({i: i, v: input});\n i = 0;\n input = value;\n length = getLength(input);\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","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\nimport moment from 'moment'\nimport logger from '../logger.js'\nimport OC from './index.js'\nimport History from './util-history.js'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tlet bytes\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined && OC.debug) {\n\t\t\tlogger.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x])\n\t\t\t\tconst bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here to include null == undefined\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoin,\n} from '@nextcloud/paths'\nimport {\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgenerateUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\nimport logger from '../logger.js'\nimport { isUserAdmin } from './admin.js'\nimport { appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport { getCapabilities } from './capabilities.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport { debug } from './debug.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport L10N from './l10n.js'\nimport * as MimeType from './mimeType.js'\nimport msg from './msg.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.ts'\nimport { getRequestToken } from './requesttoken.ts'\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\tappConfig,\n\tappswebroots,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\tMimeType,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * This is already handled by `interceptRequests` in `core/src/init.js`.\n\t *\n\t * @deprecated 33.0.0 - unused by Nextcloud and only a stub remains. Just remove usage.\n\t */\n\tregisterXHRForErrorProcessing: () => {},\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths: join,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t// Query string helpers\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\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 `WgenerateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', (e) => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tlogger.info('OC.requestToken changed', { token: e.token })\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport function getCapabilities() {\n\tif (OC.debug) {\n\t\tlogger.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\t}\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Parses a URL query string into a JS map\n *\n * @param queryString - Query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return Object containing key/values matching the URL parameters\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function parse(queryString) {\n const params = new URLSearchParams(queryString);\n return Object.fromEntries(params.entries());\n}\n/**\n * Builds a URL query from a JS map.\n *\n * @param params - Object containing key/values matching the URL parameters\n * @return String containing a URL query (without question) mark\n * @deprecated 33.0.0 - Use `URLSearchParams` instead\n */\nexport function build(params) {\n if (!params) {\n return '';\n }\n const search = new URLSearchParams(params);\n return search.toString();\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport function linkToRemoteBase(service) {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport OC from '../OC/index.js'\nimport L10n from '../OC/l10n.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-bbf83d00]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\tmargin: 0;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n\\n\\t// Only show the error state if the user interacted with the login box\\n\\t:deep(input:invalid:not(:user-invalid)) {\\n\\t\\tborder-color: var(--color-border-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.password-less-login-form[data-v-25758ef3]{display:flex;flex-direction:column;gap:.5rem;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.password-less-login-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\tmargin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.reset-password-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: .5rem;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA\",\"sourcesContent\":[\"\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(2 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__alternative-logins {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 0.75rem;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\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 = 35358;","// 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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"e426dffa0d609dfde185\",\"1526\":\"3880a727f208388a74a4\",\"4941\":\"593e2f3f0bbc38e064db\",\"6087\":\"182899a9233f9c1b33de\",\"6597\":\"bc290d3028e2b01e732b\",\"7859\":\"27dacd840f2038d8dc50\",\"9337\":\"b9644566d53e41d9f507\",\"9553\":\"02d301b651bbefe80bc1\"}[chunkId] + \"\";\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 = 1418;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(70789)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","login_LoginButtonvue_type_script_lang_js","name","components","ArrowRight","A","NcButton","props","value","type","String","default","t","valueLoading","loading","Boolean","required","invertedColors","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","LoginButtonvue_type_style_index_0_id_bbf83d00_prod_lang_scss_scoped_true","locals","LoginButton","componentNormalizer","_vm","this","_c","_self","attrs","variant","wide","disabled","on","click","$event","$emit","scopedSlots","_u","key","fn","staticClass","proxy","_v","_s","auth","computed","userNameInputLengthIs255","user","length","userInputHelperText","login_LoginFormvue_type_script_lang_js","NcCheckboxRadioSwitch","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","Array","messages","throttleDelay","Number","autoCompleteAllowed","remembermeAllowed","directLogin","emailStates","setup","l10n_dist","Tl","headlineText","productName","OC","theme","undefined","sanitize","escape","loginTimeout","loadState","requestToken","window","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","data","password","rememberme","visible","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","indexOf","csrfCheckFailed","internalException","loadingIcon","imagePath","loginActionUrl","generateUrl","emailEnabled","every","state","loginText","watch","mounted","$refs","inputField","input","focus","methods","updateUsername","submit","event","preventDefault","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true_options","LoginFormvue_type_style_index_0_id_f91ba7fe_prod_lang_scss_scoped_true","LoginForm","ref","method","action","title","_e","heading","_l","message","index","class","id","alt","src","staticStyle","clear","shake","label","maxlength","autocapitalize","spellchecking","autocomplete","error","change","model","callback","$$v","expression","domProps","WebAuthnError","Error","constructor","code","cause","super","Object","defineProperty","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","bufferToBase64URLString_bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","fromCharCode","btoa","replace","base64URLStringToBuffer_base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn_browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","globalThis","PublicKeyCredential","_browserSupportsWebAuthnAutofillInternals","toPublicKeyCredentialDescriptor_toPublicKeyCredentialDescriptor","descriptor","transports","attachments","toAuthenticatorAttachment_toAuthenticatorAttachment","attachment","vue_material_design_icons_LockOpenvue_type_script_lang_js","emits","fillColor","size","LockOpen","_b","role","$attrs","fill","width","height","viewBox","d","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","NoValidCredentials","login_PasswordLessLoginFormvue_type_script_lang_js","defineComponent","InformationIcon","InformationOutline","LockOpenIcon","NcEmptyContent","isHttps","isLocalhost","supportsWebauthn","browserSupportsWebAuthn","validCredentials","authenticate","loginForm","checkValidity","debug","params","async","loginName","url","Axios","post","allowCredentials","optionsJSON","challenge","console","warn","useBrowserAutofill","verifyBrowserAutofillInput","map","publicKey","getOptions","Promise","resolve","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","document","querySelectorAll","mediation","credential","navigator","credentials","get","err","AbortSignal","effectiveDomain","location","hostname","test","rpId","identifyAuthenticationError","rawId","response","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","JSON","stringify","finishAuthentication","then","defaultRedirectUrl","charAt","href","getBaseUrl","catch","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true_options","PasswordLessLoginFormvue_type_style_index_0_id_25758ef3_prod_lang_scss_scoped_true","PasswordLessLoginForm_component","_setupProxy","apply","arguments","placeholder","description","PasswordLessLoginForm","login_ResetPasswordvue_type_script_lang_ts","resetPasswordLink","axios","status","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true_options","ResetPasswordvue_type_style_index_0_id_759a0fdd_prod_lang_scss_scoped_true","ResetPassword_component","ResetPassword","login_UpdatePasswordvue_type_script_lang_js","resetPasswordTarget","encrypted","proceed","encryption","msg","e","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css_options","UpdatePasswordvue_type_style_index_0_id_2c0ecaf9_prod_scoped_true_lang_css","UpdatePassword_component","for","directives","rawName","spellcheck","target","composing","checked","isArray","_i","$$a","$$el","$$c","$$i","concat","slice","warning","UpdatePassword","query","queryString","parse","search","localStorage","sessionStorage","indexedDBList","indexedDB","databases","deleteDatabase","wipeBrowserStorages","views_Loginvue_type_script_lang_js","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","protocol","hideLoginForm","passwordResetFinished","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss_options","Loginvue_type_style_index_0_id_518c0816_prod_scoped_true_lang_scss","Login","mode","done","alternativeLogin","isAdmin","_oc_isadmin","appConfig","oc_appconfig","OC_appswebroots","_oc_appswebroots","OC_config","_oc_config","rawUid","getElementsByTagName","getAttribute","displayName","currentUser","_oc_debug","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","text","modal","OK_BUTTON","info","confirm","confirmDestructive","buttons","DialogBuilder","setName","setText","setButtons","clicked","_getLegacyButtons","show","confirmHtml","setHTML","prompt","spawnDialog","defineAsyncComponent","all","__webpack_require__","inputName","isPassword","args","filepicker","multiselect","mimetype","_modal","FilePickerType","Choose","path","legacyCallback","getPath","node","root","startsWith","nodes","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","displayname","basename","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","attributes","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","dialogs","getRequestToken","head","dataset","requesttoken","OCEventSource","joinChar","dataStr","typelessListeners","closed","encodeURIComponent","source","EventSource","onmessage","listen","close","prototype","call","addEventListener","eventsource","l10n","load","loadTranslations","register","kz","_unregister","unregister","translate","translatePlural","iconCache","Map","getIconUrl","mimeType","MimeTypeList","aliases","has","gotIcon","folder","themes","getRootUrl","getMimeTypeIcon","files","OCA","Theming","cacheBuster","set","RegExp","split","clearIconCache","startSaving","selector","startAction","el","querySelector","HTMLElement","textContent","classList","remove","getAnimations","animation","style","display","finishedSaving","finishedAction","finishedSuccess","finishedError","add","setTimeout","animate","opacity","duration","password_confirmation","requiresPasswordConfirmation","isPasswordConfirmationRequired","requirePasswordConfirmation","rejectCallback","confirmPassword","plugins","_plugins","targetName","plugin","getPlugins","attach","targetObject","detach","_theme","VERSION","self","global","Function","ArrayProto","ObjProto","SymbolProto","Symbol","_setup_toString","toString","_setup_hasOwnProperty","hasOwnProperty","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","rest","isObject","obj","isNull","isUndefined","isBoolean","isElement","nodeType","tagTester","tag","isString","isNumber","isDate","isRegExp","isSymbol","isArrayBuffer","isFunction","nodelist","childNodes","Int8Array","modules_isFunction","_hasObjectTag","hasDataViewBug","isIE11","isDataView","modules_isDataView","getInt8","isArguments","modules_isArguments","isFinite_isFinite","parseFloat","isNaN_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","_getByteLength","_isBufferLike","typedArrayPattern","modules_isTypedArray","_getLength","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","proto","prop","isEmpty","isMatch","object","_keys","_","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","toJSON","tagDataView","isEqual","a","b","todo","aStack","bStack","frame","pop","className","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","isMap","isWeakMap","isSet","isWeakSet","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","extend","extendOwn","baseCreate","Ctor","clone","tap","interceptor","toPath","_toPath_toPath","deepGet","defaultValue","has_has","identity","matcher","property","optimizeCb","context","argCount","accumulator","baseIteratee","iteratee","Infinity","cb","mapObject","results","currentKey","noop","propertyOf","times","n","accum","random","min","floor","now","createEscaper","escaper","match","join","testRegexp","replaceRegexp","string","_escapeMap","modules_escape","modules_unescape","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","template","settings","oldSettings","offset","render","argument","variable","fallback","idCounter","uniqueId","prefix","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","position","modules_partial","TypeError","callArgs","_isArrayLike","flatten","depth","strict","output","idx","stack","v","bindAll","memoize","hasher","cache","address","delay","wait","defer","throttle","timeout","previous","later","leading","throttled","_now","remaining","clearTimeout","trailing","debounce_debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","once","findKey","createPredicateIndexFinder","dir","array","findIndex","findLastIndex","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","lastIndexOf","find","findWhere","each","createReduce","initial","reducer","reduce","reduceRight","list","reject","some","fromIndex","guard","invoke","contextPath","pluck","where","lastComputed","reStrSymbol","toArray","sample","last","rand","temp","shuffle","sortBy","criteria","left","right","group","behavior","partition","groupBy","indexBy","countBy","pass","keyInObj","omit","first","compact","flatten_flatten","difference","without","otherArrays","uniq","isSorted","seen","union","arrays","intersection","argsLength","j","unzip","zip","range","stop","step","ceil","chunk","count","chainResult","mixin","underscore_array_methods","index_default_","modules_namespaceObject","index_default","util_history","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","userAgent","toLowerCase","parseInt","patterns","pattern","ii","stroke","removeAttribute","setAttribute","replaceState","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","substr","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","c","x","y","m","util","History","humanFileSize","files_dist","v7","computerFileSize","s","trim","matches","k","kb","mb","gb","g","tb","pb","p","round","formatDate","timestamp","format","TESTING","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","createElement","outer","top","visibility","overflow","appendChild","body","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","isCookieSetToValue","cookies","cookie","webroot","_oc_webroot","OC_webroot","src_OC","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","appswebroots","config","Config","MimeType","mimeType_namespaceObject","isUserAdmin","L10N","registerXHRForErrorProcessing","getCapabilities","realGetCapabilities","paths_dist","P8","encodePath","O0","dirname","pD","isSamePath","ys","joinPaths","getCanonicalLocale","lO","getLocale","JK","Z0","URLSearchParams","fromEntries","entries","PasswordConfirmation","Plugins","Util","filePath","generateFilePath","router_dist","Jv","getRootPath","d0","linkTo","uM","linkToOCS","service","version","generateOcsUrl","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","token","Nextcloud","L10n","Vue","LoginView","$mount","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","sources","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","webpackContext","req","webpackContextResolve","o","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","splice","r","getter","__esModule","definition","f","chunkId","promises","u","script","needAttach","scripts","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","toStringTag","nmd","paths","children","dn","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","tagName","toUpperCase","baseURI","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-vue-settings-personal-webauthn.js b/dist/settings-vue-settings-personal-webauthn.js index 1c12870441466..661e0b99c023a 100644 --- a/dist/settings-vue-settings-personal-webauthn.js +++ b/dist/settings-vue-settings-personal-webauthn.js @@ -1,2 +1,2 @@ -(()=>{var e,r,n,i={10546(e,r,n){"use strict";var i=n(21777),a=n(81222),o=n(85471),s=n(34300);function c(t){const e=new Uint8Array(t);let r="";for(const t of e)r+=String.fromCharCode(t);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function u(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),r=(4-e.length%4)%4,n=e.padEnd(e.length+r,"="),i=atob(n),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let t=0;tt};function d(t){const{id:e}=t;return{...t,id:u(e),transports:t.transports}}class f extends Error{constructor({message:t,code:e,cause:r,name:n}){super(t,{cause:r}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=n??r.name,this.code=e}}const h=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}},v=["cross-platform","platform"];function g(t){if(t&&!(v.indexOf(t)<0))return t}function y(t,e){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${t}. You should report this error to them.\n`,e)}var m=n(10854),A=n.n(m),b=n(371),x=n(85168),w=n(74095),_=n(82182);const R=(0,n(35947).YK)().setApp("settings").detectUser().build();var E=n(44368),I=n(53334),C=n(63814);function O(t){return e=>(R.debug(t),e)}const W=Object.freeze({READY:1,REGISTRATION:2,NAMING:3,PERSIST:4}),S={name:"WebAuthnAddDevice",components:{NcButton:w.A,NcTextField:_.A},props:{httpWarning:Boolean,isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({RegistrationSteps:W}),data:()=>({name:"",credential:{},step:W.READY}),watch:{step(){this.step===W.NAMING&&this.$nextTick(()=>this.$refs.nameInput?.focus())}},methods:{async start(){this.step=W.REGISTRATION,R.debug("Starting WebAuthn registration");try{await(0,s.C5)(),this.credential=await async function(){const t=(0,C.Jv)("/settings/api/personal/webauthn/registration");try{R.debug("Fetching webauthn registration data");const{data:e}=await E.Ay.get(t);return R.debug("Start webauthn registration"),await async function(t){!t.optionsJSON&&t.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),t={optionsJSON:t});const{optionsJSON:e,useAutoRegister:r=!1}=t;if(!l())throw new Error("WebAuthn is not supported in this browser");const n={...e,challenge:u(e.challenge),user:{...e.user,id:u(e.user.id)},excludeCredentials:e.excludeCredentials?.map(d)},i={};let a;r&&(i.mediation="conditional"),i.publicKey=n,i.signal=h.createNewAbortSignal();try{a=await navigator.credentials.create(i)}catch(t){throw function({error:t,options:e}){const{publicKey:r}=e;if(!r)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new f({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if("ConstraintError"===t.name){if(!0===r.authenticatorSelection?.requireResidentKey)return new f({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if("conditional"===e.mediation&&"required"===r.authenticatorSelection?.userVerification)return new f({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:t});if("required"===r.authenticatorSelection?.userVerification)return new f({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if("InvalidStateError"===t.name)return new f({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if("NotAllowedError"===t.name)return new f({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("NotSupportedError"===t.name)return 0===r.pubKeyCredParams.filter(t=>"public-key"===t.type).length?new f({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new f({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if("SecurityError"===t.name){const e=globalThis.location.hostname;if("localhost"!==(n=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(n))return new f({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(r.rp.id!==e)return new f({message:`The RP ID "${r.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("TypeError"===t.name){if(r.user.id.byteLength<1||r.user.id.byteLength>64)return new f({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if("UnknownError"===t.name)return new f({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var n;return t}({error:t,options:i})}if(!a)throw new Error("Registration was not completed");const{id:o,rawId:s,response:p,type:v}=a;let m,A,b,x;if("function"==typeof p.getTransports&&(m=p.getTransports()),"function"==typeof p.getPublicKeyAlgorithm)try{A=p.getPublicKeyAlgorithm()}catch(t){y("getPublicKeyAlgorithm()",t)}if("function"==typeof p.getPublicKey)try{const t=p.getPublicKey();null!==t&&(b=c(t))}catch(t){y("getPublicKey()",t)}if("function"==typeof p.getAuthenticatorData)try{x=c(p.getAuthenticatorData())}catch(t){y("getAuthenticatorData()",t)}return{id:o,rawId:c(s),response:{attestationObject:c(p.attestationObject),clientDataJSON:c(p.clientDataJSON),transports:m,publicKeyAlgorithm:A,publicKey:b,authenticatorData:x},type:v,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:g(a.authenticatorAttachment)}}({optionsJSON:e})}catch(t){if(R.error(t),(0,E.F0)(t))throw new Error((0,I.Tl)("settings","Could not register device: Network error"),{cause:t});if("InvalidStateError"===t.name)throw new Error((0,I.Tl)("settings","Could not register device: Probably already registered"),{cause:t});throw new Error((0,I.Tl)("settings","Could not register device"),{cause:t})}}(),this.step=W.NAMING}catch(t){(0,x.Qg)(t),this.step=W.READY}},submit(){return this.step=W.PERSIST,(0,s.C5)().then(O("confirmed password")).then(this.saveRegistrationData).then(O("registration data saved")).then(()=>this.reset()).then(O("app reset")).catch(R.error)},async saveRegistrationData(){try{const t=await async function(t,e){const r=(0,C.Jv)("/settings/api/personal/webauthn/registration");return(await E.Ay.post(r,{name:t,data:JSON.stringify(e)})).data}(this.name,this.credential);R.info("new device added",{device:t}),this.$emit("added",t)}catch(e){throw R.error("Error persisting webauthn registration",{error:e}),new Error(t("settings","Server error while trying to complete WebAuthn device registration"),{cause:e})}},reset(){this.name="",this.registrationData={},this.step=W.READY}}};var N=n(85072),j=n.n(N),D=n(97825),T=n.n(D),k=n(77659),P=n.n(k),B=n(55056),M=n.n(B),L=n(10540),F=n.n(L),U=n(41113),q=n.n(U),K=n(87409),$={};$.styleTagTransform=q(),$.setAttributes=M(),$.insert=P().bind(null,"head"),$.domAPI=T(),$.insertStyleElement=F(),j()(K.A,$),K.A&&K.A.locals&&K.A.locals;var z=n(14486),G=(0,z.A)(S,function(){var t=this,e=t._self._c;return t.isHttps||t.isLocalhost?e("div",[t.step===t.RegistrationSteps.READY?e("NcButton",{attrs:{variant:"primary"},on:{click:t.start}},[t._v("\n\t\t"+t._s(t.t("settings","Add WebAuthn device"))+"\n\t")]):t.step===t.RegistrationSteps.REGISTRATION?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Please authorize your WebAuthn device."))+"\n\t")]):t.step===t.RegistrationSteps.NAMING?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v(" "),e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("NcTextField",{ref:"nameInput",staticClass:"new-webauthn-device__name",attrs:{label:t.t("settings","Device name"),"show-trailing-button":"","trailing-button-label":t.t("settings","Add"),"trailing-button-icon":"arrowEnd"},on:{"trailing-button-click":t.submit},model:{value:t.name,callback:function(e){t.name=e},expression:"name"}})],1)]):t.step===t.RegistrationSteps.PERSIST?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Adding your device …"))+"\n\t")]):e("div",[t._v("\n\t\tInvalid registration step. This should not have happened.\n\t")])],1):e("div",[t._v("\n\t"+t._s(t.t("settings","Passwordless authentication requires a secure connection."))+"\n")])},[],!1,null,"56fc6572",null);const H=G.exports;var Y=n(57505),V=n(24764);const J={name:"WebAuthnDevice",components:{NcActionButton:Y.A,NcActions:V.A},props:{name:{type:String,required:!0}}};var X=n(77474),Q={};Q.styleTagTransform=q(),Q.setAttributes=M(),Q.insert=P().bind(null,"head"),Q.domAPI=T(),Q.insertStyleElement=F(),j()(X.A,Q),X.A&&X.A.locals&&X.A.locals;const Z=(0,z.A)(J,function(){var t=this,e=t._self._c;return e("li",{staticClass:"webauthn-device"},[e("span",{staticClass:"icon-webauthn-device"}),t._v("\n\t"+t._s(t.name||t.t("settings","Unnamed device"))+"\n\t"),e("NcActions",{attrs:{"force-menu":!0}},[e("NcActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return t.$emit("delete")}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Delete"))+"\n\t\t")])],1)],1)},[],!1,null,"25420b68",null).exports,tt=A()("name"),et={name:"WebAuthnSection",components:{WebAuthnAddDevice:H,WebAuthnDevice:Z,NcNoteCard:b.A},props:{initialDevices:{type:Array,required:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({supportsWebauthn:l()}),data(){return{devices:this.initialDevices}},computed:{sortedDevices(){return tt(this.devices)}},methods:{deviceAdded(t){R.debug(`adding new device to the list ${t.id}`),this.devices.push(t)},async deleteDevice(t){R.info(`deleting webauthn device ${t}`),await(0,s.C5)(),await async function(t){const e=(0,C.Jv)(`/settings/api/personal/webauthn/registration/${t}`);await E.Ay.delete(e)}(t),this.devices=this.devices.filter(e=>e.id!==t),R.info(`webauthn device ${t} removed successfully`)}}};var rt=n(42395),nt={};nt.styleTagTransform=q(),nt.setAttributes=M(),nt.insert=P().bind(null,"head"),nt.domAPI=T(),nt.insertStyleElement=F(),j()(rt.A,nt),rt.A&&rt.A.locals&&rt.A.locals;const it=(0,z.A)(et,function(){var t=this,e=t._self._c;return e("div",{staticClass:"section",attrs:{id:"security-webauthn"}},[e("h2",[t._v(t._s(t.t("settings","Passwordless Authentication")))]),t._v(" "),e("p",{staticClass:"settings-hint hidden-when-empty"},[t._v("\n\t\t"+t._s(t.t("settings","Set up your account for passwordless authentication following the FIDO2 standard."))+"\n\t")]),t._v(" "),0===t.devices.length?e("NcNoteCard",{attrs:{type:"info"}},[t._v("\n\t\t"+t._s(t.t("settings","No devices configured."))+"\n\t")]):[e("h3",{attrs:{id:"security-webauthn__active-devices"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The following devices are configured for your account:"))+"\n\t\t")]),t._v(" "),e("ul",{staticClass:"security-webauthn__device-list",attrs:{"aria-labelledby":"security-webauthn__active-devices"}},t._l(t.sortedDevices,function(r){return e("WebAuthnDevice",{key:r.id,attrs:{name:r.name},on:{delete:function(e){return t.deleteDevice(r.id)}}})}),1)],t._v(" "),t.supportsWebauthn?t._e():e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t"+t._s(t.t("settings","Your browser does not support WebAuthn."))+"\n\t")]),t._v(" "),t.supportsWebauthn?e("WebAuthnAddDevice",{attrs:{"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{added:t.deviceAdded}}):t._e()],2)},[],!1,null,"6acd6b2c",null).exports;n.nc=(0,i.aV)(),o.Ay.prototype.t=t,new(o.Ay.extend(it))({propsData:{initialDevices:(0,a.C)("settings","webauthn-devices"),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname}}).$mount("#security-webauthn")},87409(t,e,r){"use strict";r.d(e,{A:()=>s});var n=r(71354),i=r.n(n),a=r(76314),o=r.n(a)()(i());o.push([t.id,".webauthn-loading[data-v-56fc6572]{display:inline-block;vertical-align:sub;margin-inline:2px}.new-webauthn-device[data-v-56fc6572]{display:flex;gap:22px;align-items:center}.new-webauthn-device__name[data-v-56fc6572]{max-width:min(100vw,400px)}","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue"],names:[],mappings:"AACA,mCACC,oBAAA,CACA,kBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,QAAA,CACA,kBAAA,CAEA,4CACC,0BAAA",sourcesContent:["\n.webauthn-loading {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-inline: 2px;\n}\n\n.new-webauthn-device {\n\tdisplay: flex;\n\tgap: 22px;\n\talign-items: center;\n\n\t&__name {\n\t\tmax-width: min(100vw, 400px);\n\t}\n}\n"],sourceRoot:""}]);const s=o},77474(t,e,r){"use strict";r.d(e,{A:()=>s});var n=r(71354),i=r.n(n),a=r(76314),o=r.n(a)()(i());o.push([t.id,"\n.webauthn-device[data-v-25420b68] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-25420b68] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue"],names:[],mappings:";AAoDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.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!./WebAuthnAddDevice.vue?vue&type=script&lang=js\"","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { startRegistration as registerWebAuthn } from '@simplewebauthn/browser';\nimport logger from '../logger.ts';\n/**\n * Start registering a new device\n *\n * @return The device attributes\n */\nexport async function startRegistration() {\n const url = generateUrl('/settings/api/personal/webauthn/registration');\n try {\n logger.debug('Fetching webauthn registration data');\n const { data } = await axios.get(url);\n logger.debug('Start webauthn registration');\n const attrs = await registerWebAuthn({ optionsJSON: data });\n return attrs;\n }\n catch (e) {\n logger.error(e);\n if (isAxiosError(e)) {\n throw new Error(t('settings', 'Could not register device: Network error'), { cause: e });\n }\n else if (e.name === 'InvalidStateError') {\n throw new Error(t('settings', 'Could not register device: Probably already registered'), { cause: e });\n }\n throw new Error(t('settings', 'Could not register device'), { cause: e });\n }\n}\n/**\n * @param name Name of the device\n * @param data Device attributes\n */\nexport async function finishRegistration(name, data) {\n const url = generateUrl('/settings/api/personal/webauthn/registration');\n const resp = await axios.post(url, { name, data: JSON.stringify(data) });\n return resp.data;\n}\n/**\n * @param id Remove registered device with that id\n */\nexport async function removeRegistration(id) {\n const url = generateUrl(`/settings/api/personal/webauthn/registration/${id}`);\n await axios.delete(url);\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.create()`\n */\nexport function identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 4)\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n options.mediation === 'conditional' &&\n publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://w3c.github.io/webauthn/#sctn-createCredential (Step 22.4)\n return new WebAuthnError({\n message: 'User verification was required during automatic registration but it could not be performed',\n code: 'ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 5)\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 20)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 3)\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 10)\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 2)\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 7)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 8)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 5)\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 8)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex sourced from here:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnAddDevice.vue?vue&type=template&id=56fc6572&scoped=true\"\nimport script from \"./WebAuthnAddDevice.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnAddDevice.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56fc6572\",\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)?_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Passwordless authentication requires a secure connection.'))+\"\\n\")]):_c('div',[(_vm.step === _vm.RegistrationSteps.READY)?_c('NcButton',{attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.start}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Add WebAuthn device'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.REGISTRATION)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Please authorize your WebAuthn device.'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.NAMING)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('NcTextField',{ref:\"nameInput\",staticClass:\"new-webauthn-device__name\",attrs:{\"label\":_vm.t('settings', 'Device name'),\"show-trailing-button\":\"\",\"trailing-button-label\":_vm.t('settings', 'Add'),\"trailing-button-icon\":\"arrowEnd\"},on:{\"trailing-button-click\":_vm.submit},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1)]):(_vm.step === _vm.RegistrationSteps.PERSIST)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Adding your device …'))+\"\\n\\t\")]):_c('div',[_vm._v(\"\\n\\t\\tInvalid registration step. This should not have happened.\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"webauthn-device\"},[_c('span',{staticClass:\"icon-webauthn-device\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name || _vm.t('settings', 'Unnamed device'))+\"\\n\\t\"),_c('NcActions',{attrs:{\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\\t\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.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!./WebAuthnDevice.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnDevice.vue?vue&type=template&id=25420b68&scoped=true\"\nimport script from \"./WebAuthnDevice.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnDevice.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&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 \"25420b68\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.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!./WebAuthnSection.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnSection.vue?vue&type=template&id=6acd6b2c&scoped=true\"\nimport script from \"./WebAuthnSection.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnSection.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&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 \"6acd6b2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"security-webauthn\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Passwordless Authentication')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.devices.length === 0)?_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No devices configured.'))+\"\\n\\t\")]):[_c('h3',{attrs:{\"id\":\"security-webauthn__active-devices\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The following devices are configured for your account:'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"security-webauthn__device-list\",attrs:{\"aria-labelledby\":\"security-webauthn__active-devices\"}},_vm._l((_vm.sortedDevices),function(device){return _c('WebAuthnDevice',{key:device.id,attrs:{\"name\":device.name},on:{\"delete\":function($event){return _vm.deleteDevice(device.id)}}})}),1)],_vm._v(\" \"),(!_vm.supportsWebauthn)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Your browser does not support WebAuthn.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.supportsWebauthn)?_c('WebAuthnAddDevice',{attrs:{\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"added\":_vm.deviceAdded}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\nimport WebAuthnSection from './components/WebAuthn/WebAuthnSection.vue'\n\n__webpack_nonce__ = getCSPNonce()\n\nVue.prototype.t = t\n\nconst View = Vue.extend(WebAuthnSection)\nconst devices = loadState('settings', 'webauthn-devices')\nnew View({\n\tpropsData: {\n\t\tinitialDevices: devices,\n\t\tisHttps: window.location.protocol === 'https:',\n\t\tisLocalhost: window.location.hostname === 'localhost',\n\t},\n}).$mount('#security-webauthn')\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, `.webauthn-loading[data-v-56fc6572]{display:inline-block;vertical-align:sub;margin-inline:2px}.new-webauthn-device[data-v-56fc6572]{display:flex;gap:22px;align-items:center}.new-webauthn-device__name[data-v-56fc6572]{max-width:min(100vw,400px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,oBAAA,CACA,kBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,QAAA,CACA,kBAAA,CAEA,4CACC,0BAAA\",\"sourcesContent\":[\"\\n.webauthn-loading {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-inline: 2px;\\n}\\n\\n.new-webauthn-device {\\n\\tdisplay: flex;\\n\\tgap: 22px;\\n\\talign-items: center;\\n\\n\\t&__name {\\n\\t\\tmax-width: min(100vw, 400px);\\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, `\n.webauthn-device[data-v-25420b68] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-25420b68] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue\"],\"names\":[],\"mappings\":\";AAoDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.security-webauthn__device-list[data-v-6acd6b2c] {\n\tmargin-block: 12px 18px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnSection.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n };\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var convert = require('./convert'),\n func = convert('sortBy', require('../sortBy'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"e426dffa0d609dfde185\",\"1526\":\"3880a727f208388a74a4\",\"4941\":\"593e2f3f0bbc38e064db\",\"6087\":\"182899a9233f9c1b33de\",\"6597\":\"bc290d3028e2b01e732b\",\"7859\":\"27dacd840f2038d8dc50\",\"9337\":\"b9644566d53e41d9f507\"}[chunkId] + \"\";\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 = 9255;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9255: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(10546)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","String","fromCharCode","btoa","replace","base64URLStringToBuffer","base64URLString","base64","padLength","length","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","undefined","globalThis","PublicKeyCredential","value","toPublicKeyCredentialDescriptor","descriptor","id","transports","WebAuthnError","Error","constructor","message","code","cause","name","super","Object","defineProperty","this","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","indexOf","warnOnBrokenImplementation","methodName","console","warn","logger","getLoggerBuilder","setApp","detectUser","build","logAndPass","text","data","debug","RegistrationSteps","freeze","READY","REGISTRATION","NAMING","PERSIST","WebAuthn_WebAuthnAddDevicevue_type_script_lang_js","components","NcButton","A","NcTextField","props","httpWarning","Boolean","isHttps","type","default","isLocalhost","setup","credential","step","watch","$nextTick","$refs","nameInput","focus","methods","start","confirmPassword","async","url","generateUrl","axios","get","options","optionsJSON","challenge","useAutoRegister","publicKey","user","excludeCredentials","map","createOptions","mediation","navigator","credentials","create","err","error","AbortSignal","authenticatorSelection","requireResidentKey","userVerification","pubKeyCredParams","filter","param","effectiveDomain","location","hostname","test","rp","byteLength","identifyRegistrationError","rawId","response","responsePublicKeyAlgorithm","responsePublicKey","responseAuthenticatorData","getTransports","getPublicKeyAlgorithm","getPublicKey","_publicKey","getAuthenticatorData","attestationObject","clientDataJSON","publicKeyAlgorithm","authenticatorData","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","registerWebAuthn","e","isAxiosError","t","startRegistration","showError","submit","then","saveRegistrationData","reset","catch","device","post","JSON","stringify","finishRegistration","info","$emit","registrationData","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","WebAuthnAddDevicevue_type_style_index_0_id_56fc6572_prod_scoped_true_lang_scss","locals","component","componentNormalizer","_vm","_c","_self","attrs","variant","on","click","_v","_s","staticClass","$event","preventDefault","apply","arguments","ref","label","model","callback","$$v","expression","WebAuthnAddDevice","WebAuthn_WebAuthnDevicevue_type_script_lang_js","NcActionButton","NcActions","required","WebAuthnDevicevue_type_style_index_0_id_25420b68_prod_scoped_true_lang_css_options","WebAuthnDevicevue_type_style_index_0_id_25420b68_prod_scoped_true_lang_css","WebAuthnDevice","icon","sortByName","sortBy","WebAuthn_WebAuthnSectionvue_type_script_lang_js","NcNoteCard","initialDevices","Array","supportsWebauthn","devices","computed","sortedDevices","deviceAdded","push","deleteDevice","delete","removeRegistration","d","WebAuthnSectionvue_type_style_index_0_id_6acd6b2c_prod_scoped_true_lang_css_options","WebAuthnSectionvue_type_style_index_0_id_6acd6b2c_prod_scoped_true_lang_css","WebAuthnSection","_l","key","_e","added","__webpack_nonce__","getCSPNonce","Vue","prototype","extend","propsData","loadState","window","protocol","$mount","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","baseCreate","__webpack_require__","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","exports","LodashWrapper","chainAll","__chain__","__index__","__values__","array","iteratee","index","baseIndexOf","result","copyObject","keys","object","source","keysIn","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isArray","isBuffer","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","set","forEach","subValue","add","baseForOwn","baseEach","createBaseEach","predicate","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","castPath","toKey","path","baseFindIndex","baseIsNaN","strictIndexOf","isObjectLike","baseIsEqual","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","identity","property","isArrayLike","collection","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","criteria","other","metaMap","baseSetData","func","comparer","sort","Symbol","isSymbol","symbolProto","symbolToString","toString","baseToString","call","trimmedEndIndex","reTrimStart","string","slice","stringToPath","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","exec","lastIndex","symbolValueOf","valueOf","symbol","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","othCriteria","ordersLength","nativeMax","Math","max","args","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","offset","getSymbols","getSymbolsIn","placeholder","eachFunc","iterable","createCtor","root","thisArg","isBind","Ctor","wrapper","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","arity","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","fn","reverse","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","createBind","createCurry","createPartial","getData","mergeData","toInteger","TypeError","flatten","overRest","setToString","baseGetAllKeys","noop","realNames","hasOwnProperty","otherFunc","getPrototype","stubArray","getOwnPropertySymbols","reWrapDetails","reSplitDetails","match","split","isArguments","isIndex","isLength","hasFunc","input","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reWrapComment","details","join","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","getFuncName","lodash","funcName","memoize","cache","size","clear","PLACEHOLDER","nativeMin","min","srcBitmask","newBitmask","isCommon","isCombo","WeakMap","indexes","arrLength","oldArray","resIndex","shortOut","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","charAt","arrayIncludes","wrapFlags","pair","clone","createWrap","n","guard","curry","mapping","fallbackHolder","baseAry","a","b","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","config","cap","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","assign","isError","isFunction","isWeakMap","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","mixin","pairs","nthArg","context","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","remap","oldOptions","newUtil","newFunc","newOptions","overArg","transform","wrap","wrapped","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","iterateeRearg","baseArity","iterateeAry","castCap","convert","_","realToAlias","alias","eachRight","entries","entriesIn","extendAll","extendAllWith","extendWith","first","conforms","matches","__","F","T","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","init","invertObj","juxt","omitAll","nAry","pathEq","pathOr","paths","pickAll","pipe","pluck","prop","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","dropRightWhile","dropWhile","every","find","findFrom","findIndex","findIndexFrom","findKey","findLast","findLastFrom","findLastIndex","findLastIndexFrom","findLastKey","flatMap","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","reduce","reduceRight","reject","remove","some","takeRightWhile","takeWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","zipAll","fill","pull","pullAll","pullAt","assignIn","defaults","defaultsDeep","merge","unset","update","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flow","flowRight","bindKey","concat","difference","divide","eq","gt","gte","isEqual","lt","lte","matchesProperty","multiply","overArgs","random","range","rangeRight","subtract","zip","zipObject","zipObjectDeep","defaultValue","baseHasIn","hasPath","baseGetTag","isPlainObject","baseIsMap","nodeUtil","nodeIsMap","baseIsSet","nodeIsSet","MapCache","resolver","memoized","has","Cache","baseProperty","basePropertyDeep","flatRest","baseOrderBy","baseRest","isIterateeCall","toNumber","INFINITY","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","wrapperClone","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","definition","o","f","chunkId","Promise","promises","u","obj","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","target","head","appendChild","toStringTag","nmd","children","dn","x","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","tagName","toUpperCase","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-vue-settings-personal-webauthn.js?v=e71f8783cf1034536e68","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/methods/startRegistration.js","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/service/WebAuthnRegistrationSerice.ts","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/identifyRegistrationError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue?372e","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue?0ad4","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue?5a9a","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue?9ca2","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnDevice.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnDevice.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue?48d1","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue?1987","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnSection.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnSection.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnSection.vue?ae15","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnSection.vue?fbba","webpack://nextcloud/./apps/settings/src/components/WebAuthn/WebAuthnSection.vue?3d35","webpack:///nextcloud/apps/settings/src/main-personal-webauth.js","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/WebAuthn/WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/lodash/_LazyWrapper.js","webpack:///nextcloud/node_modules/lodash/_LodashWrapper.js","webpack:///nextcloud/node_modules/lodash/_arrayEach.js","webpack:///nextcloud/node_modules/lodash/_arrayIncludes.js","webpack:///nextcloud/node_modules/lodash/_arrayMap.js","webpack:///nextcloud/node_modules/lodash/_baseAssign.js","webpack:///nextcloud/node_modules/lodash/_baseAssignIn.js","webpack:///nextcloud/node_modules/lodash/_baseClone.js","webpack:///nextcloud/node_modules/lodash/_baseEach.js","webpack:///nextcloud/node_modules/lodash/_baseFindIndex.js","webpack:///nextcloud/node_modules/lodash/_baseFlatten.js","webpack:///nextcloud/node_modules/lodash/_baseForOwn.js","webpack:///nextcloud/node_modules/lodash/_baseGet.js","webpack:///nextcloud/node_modules/lodash/_baseHasIn.js","webpack:///nextcloud/node_modules/lodash/_baseIndexOf.js","webpack:///nextcloud/node_modules/lodash/_baseIsMap.js","webpack:///nextcloud/node_modules/lodash/_baseIsMatch.js","webpack:///nextcloud/node_modules/lodash/_baseIsNaN.js","webpack:///nextcloud/node_modules/lodash/_baseIsSet.js","webpack:///nextcloud/node_modules/lodash/_baseIteratee.js","webpack:///nextcloud/node_modules/lodash/_baseLodash.js","webpack:///nextcloud/node_modules/lodash/_baseMap.js","webpack:///nextcloud/node_modules/lodash/_baseMatches.js","webpack:///nextcloud/node_modules/lodash/_baseMatchesProperty.js","webpack:///nextcloud/node_modules/lodash/_baseOrderBy.js","webpack:///nextcloud/node_modules/lodash/_baseProperty.js","webpack:///nextcloud/node_modules/lodash/_basePropertyDeep.js","webpack:///nextcloud/node_modules/lodash/_baseSetData.js","webpack:///nextcloud/node_modules/lodash/_baseSortBy.js","webpack:///nextcloud/node_modules/lodash/_baseToString.js","webpack:///nextcloud/node_modules/lodash/_baseTrim.js","webpack:///nextcloud/node_modules/lodash/_castPath.js","webpack:///nextcloud/node_modules/lodash/_cloneDataView.js","webpack:///nextcloud/node_modules/lodash/_cloneRegExp.js","webpack:///nextcloud/node_modules/lodash/_cloneSymbol.js","webpack:///nextcloud/node_modules/lodash/_compareAscending.js","webpack:///nextcloud/node_modules/lodash/_compareMultiple.js","webpack:///nextcloud/node_modules/lodash/_composeArgs.js","webpack:///nextcloud/node_modules/lodash/_composeArgsRight.js","webpack:///nextcloud/node_modules/lodash/_copySymbols.js","webpack:///nextcloud/node_modules/lodash/_copySymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_countHolders.js","webpack:///nextcloud/node_modules/lodash/_createBaseEach.js","webpack:///nextcloud/node_modules/lodash/_createBind.js","webpack:///nextcloud/node_modules/lodash/_createCtor.js","webpack:///nextcloud/node_modules/lodash/_createCurry.js","webpack:///nextcloud/node_modules/lodash/_createHybrid.js","webpack:///nextcloud/node_modules/lodash/_createPartial.js","webpack:///nextcloud/node_modules/lodash/_createRecurry.js","webpack:///nextcloud/node_modules/lodash/_createWrap.js","webpack:///nextcloud/node_modules/lodash/_flatRest.js","webpack:///nextcloud/node_modules/lodash/_getAllKeysIn.js","webpack:///nextcloud/node_modules/lodash/_getData.js","webpack:///nextcloud/node_modules/lodash/_getFuncName.js","webpack:///nextcloud/node_modules/lodash/_getHolder.js","webpack:///nextcloud/node_modules/lodash/_getMatchData.js","webpack:///nextcloud/node_modules/lodash/_getSymbolsIn.js","webpack:///nextcloud/node_modules/lodash/_getWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_hasPath.js","webpack:///nextcloud/node_modules/lodash/_initCloneArray.js","webpack:///nextcloud/node_modules/lodash/_initCloneByTag.js","webpack:///nextcloud/node_modules/lodash/_insertWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_isFlattenable.js","webpack:///nextcloud/node_modules/lodash/_isKey.js","webpack:///nextcloud/node_modules/lodash/_isLaziable.js","webpack:///nextcloud/node_modules/lodash/_isStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_matchesStrictComparable.js","webpack:///nextcloud/node_modules/lodash/_memoizeCapped.js","webpack:///nextcloud/node_modules/lodash/_mergeData.js","webpack:///nextcloud/node_modules/lodash/_metaMap.js","webpack:///nextcloud/node_modules/lodash/_realNames.js","webpack:///nextcloud/node_modules/lodash/_reorder.js","webpack:///nextcloud/node_modules/lodash/_replaceHolders.js","webpack:///nextcloud/node_modules/lodash/_setData.js","webpack:///nextcloud/node_modules/lodash/_setWrapToString.js","webpack:///nextcloud/node_modules/lodash/_strictIndexOf.js","webpack:///nextcloud/node_modules/lodash/_stringToPath.js","webpack:///nextcloud/node_modules/lodash/_toKey.js","webpack:///nextcloud/node_modules/lodash/_trimmedEndIndex.js","webpack:///nextcloud/node_modules/lodash/_updateWrapDetails.js","webpack:///nextcloud/node_modules/lodash/_wrapperClone.js","webpack:///nextcloud/node_modules/lodash/ary.js","webpack:///nextcloud/node_modules/lodash/clone.js","webpack:///nextcloud/node_modules/lodash/curry.js","webpack:///nextcloud/node_modules/lodash/flatten.js","webpack:///nextcloud/node_modules/lodash/fp/_baseConvert.js","webpack:///nextcloud/node_modules/lodash/fp/_mapping.js","webpack:///nextcloud/node_modules/lodash/fp/_util.js","webpack:///nextcloud/node_modules/lodash/fp/convert.js","webpack:///nextcloud/node_modules/lodash/fp/placeholder.js","webpack:///nextcloud/node_modules/lodash/fp/sortBy.js","webpack:///nextcloud/node_modules/lodash/get.js","webpack:///nextcloud/node_modules/lodash/hasIn.js","webpack:///nextcloud/node_modules/lodash/isError.js","webpack:///nextcloud/node_modules/lodash/isMap.js","webpack:///nextcloud/node_modules/lodash/isSet.js","webpack:///nextcloud/node_modules/lodash/isSymbol.js","webpack:///nextcloud/node_modules/lodash/isWeakMap.js","webpack:///nextcloud/node_modules/lodash/iteratee.js","webpack:///nextcloud/node_modules/lodash/memoize.js","webpack:///nextcloud/node_modules/lodash/noop.js","webpack:///nextcloud/node_modules/lodash/property.js","webpack:///nextcloud/node_modules/lodash/rearg.js","webpack:///nextcloud/node_modules/lodash/sortBy.js","webpack:///nextcloud/node_modules/lodash/toFinite.js","webpack:///nextcloud/node_modules/lodash/toInteger.js","webpack:///nextcloud/node_modules/lodash/toNumber.js","webpack:///nextcloud/node_modules/lodash/toPath.js","webpack:///nextcloud/node_modules/lodash/toString.js","webpack:///nextcloud/node_modules/lodash/wrapperLodash.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["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, fn, priority] = deferred[i];\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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyRegistrationError } from '../helpers/identifyRegistrationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"registration\" via WebAuthn attestation\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateRegistrationOptions()`\n * @param useAutoRegister (Optional) Try to silently create a passkey with the password manager that the user just signed in with. Defaults to `false`.\n */\nexport async function startRegistration(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useAutoRegister = false } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n // Prepare options for `.create()`\n const createOptions = {};\n /**\n * Try to use conditional create to register a passkey for the user with the password manager\n * the user just used to authenticate with. The user won't be shown any prominent UI by the\n * browser.\n */\n if (useAutoRegister) {\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n createOptions.mediation = 'conditional';\n }\n // Finalize options\n createOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n createOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete attestation\n let credential;\n try {\n credential = (await navigator.credentials.create(createOptions));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options: createOptions });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n // Continue to play it safe with `getTransports()` for now, even when L3 types say it's required\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n/**\n * Visibly warn when we detect an issue related to a passkey provider intercepting WebAuthn API\n * calls\n */\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.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!./WebAuthnAddDevice.vue?vue&type=script&lang=js\"","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { startRegistration as registerWebAuthn } from '@simplewebauthn/browser';\nimport logger from '../logger.ts';\n/**\n * Start registering a new device\n *\n * @return The device attributes\n */\nexport async function startRegistration() {\n const url = generateUrl('/settings/api/personal/webauthn/registration');\n try {\n logger.debug('Fetching webauthn registration data');\n const { data } = await axios.get(url);\n logger.debug('Start webauthn registration');\n const attrs = await registerWebAuthn({ optionsJSON: data });\n return attrs;\n }\n catch (e) {\n logger.error(e);\n if (isAxiosError(e)) {\n throw new Error(t('settings', 'Could not register device: Network error'), { cause: e });\n }\n else if (e.name === 'InvalidStateError') {\n throw new Error(t('settings', 'Could not register device: Probably already registered'), { cause: e });\n }\n throw new Error(t('settings', 'Could not register device'), { cause: e });\n }\n}\n/**\n * @param name Name of the device\n * @param data Device attributes\n */\nexport async function finishRegistration(name, data) {\n const url = generateUrl('/settings/api/personal/webauthn/registration');\n const resp = await axios.post(url, { name, data: JSON.stringify(data) });\n return resp.data;\n}\n/**\n * @param id Remove registered device with that id\n */\nexport async function removeRegistration(id) {\n const url = generateUrl(`/settings/api/personal/webauthn/registration/${id}`);\n await axios.delete(url);\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.create()`\n */\nexport function identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 4)\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n options.mediation === 'conditional' &&\n publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://w3c.github.io/webauthn/#sctn-createCredential (Step 22.4)\n return new WebAuthnError({\n message: 'User verification was required during automatic registration but it could not be performed',\n code: 'ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 5)\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 20)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 3)\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 10)\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 2)\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 7)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 8)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 5)\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 8)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex was originally sourced from here, then remixed to add punycode support:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n // Support punycode (ACE) or ascii labels and domains\n /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(hostname));\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnAddDevice.vue?vue&type=template&id=56fc6572&scoped=true\"\nimport script from \"./WebAuthnAddDevice.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnAddDevice.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnAddDevice.vue?vue&type=style&index=0&id=56fc6572&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56fc6572\",\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)?_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Passwordless authentication requires a secure connection.'))+\"\\n\")]):_c('div',[(_vm.step === _vm.RegistrationSteps.READY)?_c('NcButton',{attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.start}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Add WebAuthn device'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.REGISTRATION)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Please authorize your WebAuthn device.'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.NAMING)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('NcTextField',{ref:\"nameInput\",staticClass:\"new-webauthn-device__name\",attrs:{\"label\":_vm.t('settings', 'Device name'),\"show-trailing-button\":\"\",\"trailing-button-label\":_vm.t('settings', 'Add'),\"trailing-button-icon\":\"arrowEnd\"},on:{\"trailing-button-click\":_vm.submit},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1)]):(_vm.step === _vm.RegistrationSteps.PERSIST)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Adding your device …'))+\"\\n\\t\")]):_c('div',[_vm._v(\"\\n\\t\\tInvalid registration step. This should not have happened.\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"webauthn-device\"},[_c('span',{staticClass:\"icon-webauthn-device\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name || _vm.t('settings', 'Unnamed device'))+\"\\n\\t\"),_c('NcActions',{attrs:{\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\\t\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.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!./WebAuthnDevice.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnDevice.vue?vue&type=template&id=25420b68&scoped=true\"\nimport script from \"./WebAuthnDevice.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnDevice.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnDevice.vue?vue&type=style&index=0&id=25420b68&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 \"25420b68\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.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!./WebAuthnSection.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./WebAuthnSection.vue?vue&type=template&id=6acd6b2c&scoped=true\"\nimport script from \"./WebAuthnSection.vue?vue&type=script&lang=js\"\nexport * from \"./WebAuthnSection.vue?vue&type=script&lang=js\"\nimport style0 from \"./WebAuthnSection.vue?vue&type=style&index=0&id=6acd6b2c&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 \"6acd6b2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"security-webauthn\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Passwordless Authentication')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.devices.length === 0)?_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No devices configured.'))+\"\\n\\t\")]):[_c('h3',{attrs:{\"id\":\"security-webauthn__active-devices\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The following devices are configured for your account:'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"security-webauthn__device-list\",attrs:{\"aria-labelledby\":\"security-webauthn__active-devices\"}},_vm._l((_vm.sortedDevices),function(device){return _c('WebAuthnDevice',{key:device.id,attrs:{\"name\":device.name},on:{\"delete\":function($event){return _vm.deleteDevice(device.id)}}})}),1)],_vm._v(\" \"),(!_vm.supportsWebauthn)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Your browser does not support WebAuthn.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.supportsWebauthn)?_c('WebAuthnAddDevice',{attrs:{\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"added\":_vm.deviceAdded}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\nimport WebAuthnSection from './components/WebAuthn/WebAuthnSection.vue'\n\n__webpack_nonce__ = getCSPNonce()\n\nVue.prototype.t = t\n\nconst View = Vue.extend(WebAuthnSection)\nconst devices = loadState('settings', 'webauthn-devices')\nnew View({\n\tpropsData: {\n\t\tinitialDevices: devices,\n\t\tisHttps: window.location.protocol === 'https:',\n\t\tisLocalhost: window.location.hostname === 'localhost',\n\t},\n}).$mount('#security-webauthn')\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, `.webauthn-loading[data-v-56fc6572]{display:inline-block;vertical-align:sub;margin-inline:2px}.new-webauthn-device[data-v-56fc6572]{display:flex;gap:22px;align-items:center}.new-webauthn-device__name[data-v-56fc6572]{max-width:min(100vw,400px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnAddDevice.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,oBAAA,CACA,kBAAA,CACA,iBAAA,CAGD,sCACC,YAAA,CACA,QAAA,CACA,kBAAA,CAEA,4CACC,0BAAA\",\"sourcesContent\":[\"\\n.webauthn-loading {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-inline: 2px;\\n}\\n\\n.new-webauthn-device {\\n\\tdisplay: flex;\\n\\tgap: 22px;\\n\\talign-items: center;\\n\\n\\t&__name {\\n\\t\\tmax-width: min(100vw, 400px);\\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, `\n.webauthn-device[data-v-25420b68] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-25420b68] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnDevice.vue\"],\"names\":[],\"mappings\":\";AAoDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.security-webauthn__device-list[data-v-6acd6b2c] {\n\tmargin-block: 12px 18px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/WebAuthnSection.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n };\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var convert = require('./convert'),\n func = convert('sortBy', require('../sortBy'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"e426dffa0d609dfde185\",\"1526\":\"3880a727f208388a74a4\",\"4941\":\"593e2f3f0bbc38e064db\",\"6087\":\"182899a9233f9c1b33de\",\"6597\":\"bc290d3028e2b01e732b\",\"7859\":\"27dacd840f2038d8dc50\",\"9337\":\"b9644566d53e41d9f507\"}[chunkId] + \"\";\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 = 9255;","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9255: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(10546)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","bufferToBase64URLString","buffer","bytes","Uint8Array","str","charCode","String","fromCharCode","btoa","replace","base64URLStringToBuffer","base64URLString","base64","padLength","length","padded","padEnd","binary","atob","ArrayBuffer","i","charCodeAt","browserSupportsWebAuthn","_browserSupportsWebAuthnInternals","stubThis","undefined","globalThis","PublicKeyCredential","value","toPublicKeyCredentialDescriptor","descriptor","id","transports","WebAuthnError","Error","constructor","message","code","cause","name","super","Object","defineProperty","this","enumerable","configurable","writable","WebAuthnAbortService","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","indexOf","warnOnBrokenImplementation","methodName","console","warn","logger","getLoggerBuilder","setApp","detectUser","build","logAndPass","text","data","debug","RegistrationSteps","freeze","READY","REGISTRATION","NAMING","PERSIST","WebAuthn_WebAuthnAddDevicevue_type_script_lang_js","components","NcButton","A","NcTextField","props","httpWarning","Boolean","isHttps","type","default","isLocalhost","setup","credential","step","watch","$nextTick","$refs","nameInput","focus","methods","start","confirmPassword","async","url","generateUrl","axios","get","options","optionsJSON","challenge","useAutoRegister","publicKey","user","excludeCredentials","map","createOptions","mediation","navigator","credentials","create","err","error","AbortSignal","authenticatorSelection","requireResidentKey","userVerification","pubKeyCredParams","filter","param","effectiveDomain","location","hostname","test","rp","byteLength","identifyRegistrationError","rawId","response","responsePublicKeyAlgorithm","responsePublicKey","responseAuthenticatorData","getTransports","getPublicKeyAlgorithm","getPublicKey","_publicKey","getAuthenticatorData","attestationObject","clientDataJSON","publicKeyAlgorithm","authenticatorData","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","registerWebAuthn","e","isAxiosError","t","startRegistration","showError","submit","then","saveRegistrationData","reset","catch","device","post","JSON","stringify","finishRegistration","info","$emit","registrationData","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","WebAuthnAddDevicevue_type_style_index_0_id_56fc6572_prod_scoped_true_lang_scss","locals","component","componentNormalizer","_vm","_c","_self","attrs","variant","on","click","_v","_s","staticClass","$event","preventDefault","apply","arguments","ref","label","model","callback","$$v","expression","WebAuthnAddDevice","WebAuthn_WebAuthnDevicevue_type_script_lang_js","NcActionButton","NcActions","required","WebAuthnDevicevue_type_style_index_0_id_25420b68_prod_scoped_true_lang_css_options","WebAuthnDevicevue_type_style_index_0_id_25420b68_prod_scoped_true_lang_css","WebAuthnDevice","icon","sortByName","sortBy","WebAuthn_WebAuthnSectionvue_type_script_lang_js","NcNoteCard","initialDevices","Array","supportsWebauthn","devices","computed","sortedDevices","deviceAdded","push","deleteDevice","delete","removeRegistration","d","WebAuthnSectionvue_type_style_index_0_id_6acd6b2c_prod_scoped_true_lang_css_options","WebAuthnSectionvue_type_style_index_0_id_6acd6b2c_prod_scoped_true_lang_css","WebAuthnSection","_l","key","_e","added","__webpack_nonce__","getCSPNonce","Vue","prototype","extend","propsData","loadState","window","protocol","$mount","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","baseCreate","__webpack_require__","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","exports","LodashWrapper","chainAll","__chain__","__index__","__values__","array","iteratee","index","baseIndexOf","result","copyObject","keys","object","source","keysIn","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isArray","isBuffer","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","set","forEach","subValue","add","baseForOwn","baseEach","createBaseEach","predicate","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","castPath","toKey","path","baseFindIndex","baseIsNaN","strictIndexOf","isObjectLike","baseIsEqual","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","identity","property","isArrayLike","collection","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","criteria","other","metaMap","baseSetData","func","comparer","sort","Symbol","isSymbol","symbolProto","symbolToString","toString","baseToString","call","trimmedEndIndex","reTrimStart","string","slice","stringToPath","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","exec","lastIndex","symbolValueOf","valueOf","symbol","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","othCriteria","ordersLength","nativeMax","Math","max","args","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","offset","getSymbols","getSymbolsIn","placeholder","eachFunc","iterable","createCtor","root","thisArg","isBind","Ctor","wrapper","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","arity","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","fn","reverse","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","createBind","createCurry","createPartial","getData","mergeData","toInteger","TypeError","flatten","overRest","setToString","baseGetAllKeys","noop","realNames","hasOwnProperty","otherFunc","getPrototype","stubArray","getOwnPropertySymbols","reWrapDetails","reSplitDetails","match","split","isArguments","isIndex","isLength","hasFunc","input","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reWrapComment","details","join","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","getFuncName","lodash","funcName","memoize","cache","size","clear","PLACEHOLDER","nativeMin","min","srcBitmask","newBitmask","isCommon","isCombo","WeakMap","indexes","arrLength","oldArray","resIndex","shortOut","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","charAt","arrayIncludes","wrapFlags","pair","clone","createWrap","n","guard","curry","mapping","fallbackHolder","baseAry","a","b","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","config","cap","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","assign","isError","isFunction","isWeakMap","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","mixin","pairs","nthArg","context","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","remap","oldOptions","newUtil","newFunc","newOptions","overArg","transform","wrap","wrapped","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","iterateeRearg","baseArity","iterateeAry","castCap","convert","_","realToAlias","alias","eachRight","entries","entriesIn","extendAll","extendAllWith","extendWith","first","conforms","matches","__","F","T","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","init","invertObj","juxt","omitAll","nAry","pathEq","pathOr","paths","pickAll","pipe","pluck","prop","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","dropRightWhile","dropWhile","every","find","findFrom","findIndex","findIndexFrom","findKey","findLast","findLastFrom","findLastIndex","findLastIndexFrom","findLastKey","flatMap","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","reduce","reduceRight","reject","remove","some","takeRightWhile","takeWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","zipAll","fill","pull","pullAll","pullAt","assignIn","defaults","defaultsDeep","merge","unset","update","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flow","flowRight","bindKey","concat","difference","divide","eq","gt","gte","isEqual","lt","lte","matchesProperty","multiply","overArgs","random","range","rangeRight","subtract","zip","zipObject","zipObjectDeep","defaultValue","baseHasIn","hasPath","baseGetTag","isPlainObject","baseIsMap","nodeUtil","nodeIsMap","baseIsSet","nodeIsSet","MapCache","resolver","memoized","has","Cache","baseProperty","basePropertyDeep","flatRest","baseOrderBy","baseRest","isIterateeCall","toNumber","INFINITY","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","wrapperClone","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","definition","o","f","chunkId","Promise","promises","u","obj","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","target","head","appendChild","toStringTag","nmd","children","dn","x","getOwnPropertyDescriptor","scriptUrl","importScripts","currentScript","tagName","toUpperCase","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file