@budibase/pro 3.5.1 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,3 @@
1
- import { Ctx } from "@budibase/types";
1
+ import { Ctx, GenerateJsRequest, GenerateJsResponse, UserCtx } from "@budibase/types";
2
2
  export declare function generateCronExpression(ctx: Ctx): Promise<void>;
3
+ export declare function generateJs(ctx: UserCtx<GenerateJsRequest, GenerateJsResponse>): Promise<void>;
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- "use strict";var PI=Object.create;var Un=Object.defineProperty;var qI=Object.getOwnPropertyDescriptor;var CI=Object.getOwnPropertyNames;var UI=Object.getPrototypeOf,LI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),R=(e,t)=>{for(var r in t)Un(e,r,{get:t[r],enumerable:!0})},Ji=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of CI(t))!LI.call(e,a)&&a!==r&&Un(e,a,{get:()=>t[a],enumerable:!(n=qI(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?PI(UI(e)):{},Ji(t||!e||!e.__esModule?Un(r,"default",{value:e,enumerable:!0}):r,e)),DI=e=>Ji(Un({},"__esModule",{value:!0}),e);var Vn=u((X0,Lu)=>{"use strict";function Db(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Lu.exports=Db});var lo=u((Z0,Du)=>{"use strict";var Bb=typeof global=="object"&&global&&global.Object===Object&&global;Du.exports=Bb});var Ae=u((eG,Bu)=>{"use strict";var Nb=lo(),Mb=typeof self=="object"&&self&&self.Object===Object&&self,Gb=Nb||Mb||Function("return this")();Bu.exports=Gb});var Ut=u((tG,Nu)=>{"use strict";var kb=Ae(),Fb=kb.Symbol;Nu.exports=Fb});var Fu=u((rG,ku)=>{"use strict";var Mu=Ut(),Gu=Object.prototype,Qb=Gu.hasOwnProperty,$b=Gu.toString,Jr=Mu?Mu.toStringTag:void 0;function jb(e){var t=Qb.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=$b.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}ku.exports=jb});var $u=u((nG,Qu)=>{"use strict";var Wb=Object.prototype,Vb=Wb.toString;function Kb(e){return Vb.call(e)}Qu.exports=Kb});var It=u((aG,Vu)=>{"use strict";var ju=Ut(),Yb=Fu(),Hb=$u(),zb="[object Null]",Jb="[object Undefined]",Wu=ju?ju.toStringTag:void 0;function Xb(e){return e==null?e===void 0?Jb:zb:Wu&&Wu in Object(e)?Yb(e):Hb(e)}Vu.exports=Xb});var _e=u((oG,Ku)=>{"use strict";function Zb(e){return e!=null&&typeof e=="object"}Ku.exports=Zb});var Hu=u((sG,Yu)=>{"use strict";var eS=It(),tS=_e(),rS="[object Arguments]";function nS(e){return tS(e)&&eS(e)==rS}Yu.exports=nS});var Xr=u((iG,Xu)=>{"use strict";var zu=Hu(),aS=_e(),Ju=Object.prototype,oS=Ju.hasOwnProperty,sS=Ju.propertyIsEnumerable,iS=zu(function(){return arguments}())?zu:function(e){return aS(e)&&oS.call(e,"callee")&&!sS.call(e,"callee")};Xu.exports=iS});var de=u((uG,Zu)=>{"use strict";var uS=Array.isArray;Zu.exports=uS});var np=u((pG,rp)=>{"use strict";var ep=Ut(),pS=Xr(),cS=de(),tp=ep?ep.isConcatSpreadable:void 0;function lS(e){return cS(e)||pS(e)||!!(tp&&e&&e[tp])}rp.exports=lS});var fo=u((cG,op)=>{"use strict";var dS=Vn(),fS=np();function ap(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=fS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?ap(s,t-1,r,n,a):dS(a,s):n||(a[a.length]=s)}return a}op.exports=ap});var Zr=u((lG,sp)=>{"use strict";function gS(e){return e}sp.exports=gS});var Kn=u((dG,ip)=>{"use strict";function mS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}ip.exports=mS});var go=u((fG,pp)=>{"use strict";var yS=Kn(),up=Math.max;function hS(e,t,r){return t=up(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=up(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),yS(e,this,s)}}pp.exports=hS});var lp=u((gG,cp)=>{"use strict";function AS(e){return function(){return e}}cp.exports=AS});var De=u((mG,dp)=>{"use strict";function IS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}dp.exports=IS});var en=u((yG,fp)=>{"use strict";var bS=It(),SS=De(),wS="[object AsyncFunction]",vS="[object Function]",ES="[object GeneratorFunction]",_S="[object Proxy]";function RS(e){if(!SS(e))return!1;var t=bS(e);return t==vS||t==ES||t==wS||t==_S}fp.exports=RS});var mp=u((hG,gp)=>{"use strict";var xS=Ae(),TS=xS["__core-js_shared__"];gp.exports=TS});var Ap=u((AG,hp)=>{"use strict";var mo=mp(),yp=function(){var e=/[^.]+$/.exec(mo&&mo.keys&&mo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function OS(e){return!!yp&&yp in e}hp.exports=OS});var yo=u((IG,Ip)=>{"use strict";var PS=Function.prototype,qS=PS.toString;function CS(e){if(e!=null){try{return qS.call(e)}catch{}try{return e+""}catch{}}return""}Ip.exports=CS});var Sp=u((bG,bp)=>{"use strict";var US=en(),LS=Ap(),DS=De(),BS=yo(),NS=/[\\^$.*+?()[\]{}|]/g,MS=/^\[object .+?Constructor\]$/,GS=Function.prototype,kS=Object.prototype,FS=GS.toString,QS=kS.hasOwnProperty,$S=RegExp("^"+FS.call(QS).replace(NS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jS(e){if(!DS(e)||LS(e))return!1;var t=US(e)?$S:MS;return t.test(BS(e))}bp.exports=jS});var vp=u((SG,wp)=>{"use strict";function WS(e,t){return e?.[t]}wp.exports=WS});var bt=u((wG,Ep)=>{"use strict";var VS=Sp(),KS=vp();function YS(e,t){var r=KS(e,t);return VS(r)?r:void 0}Ep.exports=YS});var ho=u((vG,_p)=>{"use strict";var HS=bt(),zS=function(){try{var e=HS(Object,"defineProperty");return e({},"",{}),e}catch{}}();_p.exports=zS});var Tp=u((EG,xp)=>{"use strict";var JS=lp(),Rp=ho(),XS=Zr(),ZS=Rp?function(e,t){return Rp(e,"toString",{configurable:!0,enumerable:!1,value:JS(t),writable:!0})}:XS;xp.exports=ZS});var Ao=u((_G,Op)=>{"use strict";var ew=800,tw=16,rw=Date.now;function nw(e){var t=0,r=0;return function(){var n=rw(),a=tw-(n-r);if(r=n,a>0){if(++t>=ew)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Op.exports=nw});var Yn=u((RG,Pp)=>{"use strict";var aw=Tp(),ow=Ao(),sw=ow(aw);Pp.exports=sw});var Io=u((xG,qp)=>{"use strict";var iw=Zr(),uw=go(),pw=Yn();function cw(e,t){return pw(uw(e,t,iw),e+"")}qp.exports=cw});var tn=u((TG,Cp)=>{"use strict";var lw=bt(),dw=lw(Object,"create");Cp.exports=dw});var Dp=u((OG,Lp)=>{"use strict";var Up=tn();function fw(){this.__data__=Up?Up(null):{},this.size=0}Lp.exports=fw});var Np=u((PG,Bp)=>{"use strict";function gw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Bp.exports=gw});var Gp=u((qG,Mp)=>{"use strict";var mw=tn(),yw="__lodash_hash_undefined__",hw=Object.prototype,Aw=hw.hasOwnProperty;function Iw(e){var t=this.__data__;if(mw){var r=t[e];return r===yw?void 0:r}return Aw.call(t,e)?t[e]:void 0}Mp.exports=Iw});var Fp=u((CG,kp)=>{"use strict";var bw=tn(),Sw=Object.prototype,ww=Sw.hasOwnProperty;function vw(e){var t=this.__data__;return bw?t[e]!==void 0:ww.call(t,e)}kp.exports=vw});var $p=u((UG,Qp)=>{"use strict";var Ew=tn(),_w="__lodash_hash_undefined__";function Rw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Ew&&t===void 0?_w:t,this}Qp.exports=Rw});var Wp=u((LG,jp)=>{"use strict";var xw=Dp(),Tw=Np(),Ow=Gp(),Pw=Fp(),qw=$p();function er(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}er.prototype.clear=xw;er.prototype.delete=Tw;er.prototype.get=Ow;er.prototype.has=Pw;er.prototype.set=qw;jp.exports=er});var Kp=u((DG,Vp)=>{"use strict";function Cw(){this.__data__=[],this.size=0}Vp.exports=Cw});var tr=u((BG,Yp)=>{"use strict";function Uw(e,t){return e===t||e!==e&&t!==t}Yp.exports=Uw});var rn=u((NG,Hp)=>{"use strict";var Lw=tr();function Dw(e,t){for(var r=e.length;r--;)if(Lw(e[r][0],t))return r;return-1}Hp.exports=Dw});var Jp=u((MG,zp)=>{"use strict";var Bw=rn(),Nw=Array.prototype,Mw=Nw.splice;function Gw(e){var t=this.__data__,r=Bw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Mw.call(t,r,1),--this.size,!0}zp.exports=Gw});var Zp=u((GG,Xp)=>{"use strict";var kw=rn();function Fw(e){var t=this.__data__,r=kw(t,e);return r<0?void 0:t[r][1]}Xp.exports=Fw});var tc=u((kG,ec)=>{"use strict";var Qw=rn();function $w(e){return Qw(this.__data__,e)>-1}ec.exports=$w});var nc=u((FG,rc)=>{"use strict";var jw=rn();function Ww(e,t){var r=this.__data__,n=jw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}rc.exports=Ww});var nn=u((QG,ac)=>{"use strict";var Vw=Kp(),Kw=Jp(),Yw=Zp(),Hw=tc(),zw=nc();function rr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}rr.prototype.clear=Vw;rr.prototype.delete=Kw;rr.prototype.get=Yw;rr.prototype.has=Hw;rr.prototype.set=zw;ac.exports=rr});var Hn=u(($G,oc)=>{"use strict";var Jw=bt(),Xw=Ae(),Zw=Jw(Xw,"Map");oc.exports=Zw});var uc=u((jG,ic)=>{"use strict";var sc=Wp(),ev=nn(),tv=Hn();function rv(){this.size=0,this.__data__={hash:new sc,map:new(tv||ev),string:new sc}}ic.exports=rv});var cc=u((WG,pc)=>{"use strict";function nv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}pc.exports=nv});var an=u((VG,lc)=>{"use strict";var av=cc();function ov(e,t){var r=e.__data__;return av(t)?r[typeof t=="string"?"string":"hash"]:r.map}lc.exports=ov});var fc=u((KG,dc)=>{"use strict";var sv=an();function iv(e){var t=sv(this,e).delete(e);return this.size-=t?1:0,t}dc.exports=iv});var mc=u((YG,gc)=>{"use strict";var uv=an();function pv(e){return uv(this,e).get(e)}gc.exports=pv});var hc=u((HG,yc)=>{"use strict";var cv=an();function lv(e){return cv(this,e).has(e)}yc.exports=lv});var Ic=u((zG,Ac)=>{"use strict";var dv=an();function fv(e,t){var r=dv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Ac.exports=fv});var zn=u((JG,bc)=>{"use strict";var gv=uc(),mv=fc(),yv=mc(),hv=hc(),Av=Ic();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=gv;nr.prototype.delete=mv;nr.prototype.get=yv;nr.prototype.has=hv;nr.prototype.set=Av;bc.exports=nr});var wc=u((XG,Sc)=>{"use strict";var Iv="__lodash_hash_undefined__";function bv(e){return this.__data__.set(e,Iv),this}Sc.exports=bv});var Ec=u((ZG,vc)=>{"use strict";function Sv(e){return this.__data__.has(e)}vc.exports=Sv});var bo=u((ek,_c)=>{"use strict";var wv=zn(),vv=wc(),Ev=Ec();function Jn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new wv;++t<r;)this.add(e[t])}Jn.prototype.add=Jn.prototype.push=vv;Jn.prototype.has=Ev;_c.exports=Jn});var xc=u((tk,Rc)=>{"use strict";function _v(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Rc.exports=_v});var Oc=u((rk,Tc)=>{"use strict";function Rv(e){return e!==e}Tc.exports=Rv});var qc=u((nk,Pc)=>{"use strict";function xv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Pc.exports=xv});var Uc=u((ak,Cc)=>{"use strict";var Tv=xc(),Ov=Oc(),Pv=qc();function qv(e,t,r){return t===t?Pv(e,t,r):Tv(e,Ov,r)}Cc.exports=qv});var So=u((ok,Lc)=>{"use strict";var Cv=Uc();function Uv(e,t){var r=e==null?0:e.length;return!!r&&Cv(e,t,0)>-1}Lc.exports=Uv});var Bc=u((sk,Dc)=>{"use strict";function Lv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Dc.exports=Lv});var wo=u((ik,Nc)=>{"use strict";function Dv(e,t){return e.has(t)}Nc.exports=Dv});var vo=u((uk,Mc)=>{"use strict";var Bv=bt(),Nv=Ae(),Mv=Bv(Nv,"Set");Mc.exports=Mv});var Eo=u((pk,Gc)=>{"use strict";function Gv(){}Gc.exports=Gv});var Xn=u((ck,kc)=>{"use strict";function kv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}kc.exports=kv});var Qc=u((lk,Fc)=>{"use strict";var _o=vo(),Fv=Eo(),Qv=Xn(),$v=1/0,jv=_o&&1/Qv(new _o([,-0]))[1]==$v?function(e){return new _o(e)}:Fv;Fc.exports=jv});var jc=u((dk,$c)=>{"use strict";var Wv=bo(),Vv=So(),Kv=Bc(),Yv=wo(),Hv=Qc(),zv=Xn(),Jv=200;function Xv(e,t,r){var n=-1,a=Vv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Kv;else if(o>=Jv){var f=t?null:Hv(e);if(f)return zv(f);i=!1,a=Yv,c=new Wv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],m=t?t(d):d;if(d=r||d!==0?d:0,i&&m===m){for(var y=c.length;y--;)if(c[y]===m)continue e;t&&c.push(m),s.push(d)}else a(c,m,r)||(c!==s&&c.push(m),s.push(d))}return s}$c.exports=Xv});var Zn=u((fk,Wc)=>{"use strict";var Zv=9007199254740991;function eE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Zv}Wc.exports=eE});var ar=u((gk,Vc)=>{"use strict";var tE=en(),rE=Zn();function nE(e){return e!=null&&rE(e.length)&&!tE(e)}Vc.exports=nE});var Ro=u((mk,Kc)=>{"use strict";var aE=ar(),oE=_e();function sE(e){return oE(e)&&aE(e)}Kc.exports=sE});var Hc=u((yk,Yc)=>{"use strict";var iE=fo(),uE=Io(),pE=jc(),cE=Ro(),lE=uE(function(e){return pE(iE(e,1,cE,!0))});Yc.exports=lE});var Jc=u((hk,zc)=>{"use strict";var dE=nn();function fE(){this.__data__=new dE,this.size=0}zc.exports=fE});var Zc=u((Ak,Xc)=>{"use strict";function gE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Xc.exports=gE});var tl=u((Ik,el)=>{"use strict";function mE(e){return this.__data__.get(e)}el.exports=mE});var nl=u((bk,rl)=>{"use strict";function yE(e){return this.__data__.has(e)}rl.exports=yE});var ol=u((Sk,al)=>{"use strict";var hE=nn(),AE=Hn(),IE=zn(),bE=200;function SE(e,t){var r=this.__data__;if(r instanceof hE){var n=r.__data__;if(!AE||n.length<bE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new IE(n)}return r.set(e,t),this.size=r.size,this}al.exports=SE});var on=u((wk,sl)=>{"use strict";var wE=nn(),vE=Jc(),EE=Zc(),_E=tl(),RE=nl(),xE=ol();function or(e){var t=this.__data__=new wE(e);this.size=t.size}or.prototype.clear=vE;or.prototype.delete=EE;or.prototype.get=_E;or.prototype.has=RE;or.prototype.set=xE;sl.exports=or});var sn=u((vk,ul)=>{"use strict";var il=ho();function TE(e,t,r){t=="__proto__"&&il?il(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ul.exports=TE});var xo=u((Ek,pl)=>{"use strict";var OE=sn(),PE=tr();function qE(e,t,r){(r!==void 0&&!PE(e[t],r)||r===void 0&&!(t in e))&&OE(e,t,r)}pl.exports=qE});var ll=u((_k,cl)=>{"use strict";function CE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}cl.exports=CE});var To=u((Rk,dl)=>{"use strict";var UE=ll(),LE=UE();dl.exports=LE});var Oo=u((un,sr)=>{"use strict";var DE=Ae(),yl=typeof un=="object"&&un&&!un.nodeType&&un,fl=yl&&typeof sr=="object"&&sr&&!sr.nodeType&&sr,BE=fl&&fl.exports===yl,gl=BE?DE.Buffer:void 0,ml=gl?gl.allocUnsafe:void 0;function NE(e,t){if(t)return e.slice();var r=e.length,n=ml?ml(r):new e.constructor(r);return e.copy(n),n}sr.exports=NE});var Po=u((xk,hl)=>{"use strict";var ME=Ae(),GE=ME.Uint8Array;hl.exports=GE});var ea=u((Tk,Il)=>{"use strict";var Al=Po();function kE(e){var t=new e.constructor(e.byteLength);return new Al(t).set(new Al(e)),t}Il.exports=kE});var qo=u((Ok,bl)=>{"use strict";var FE=ea();function QE(e,t){var r=t?FE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}bl.exports=QE});var ir=u((Pk,Sl)=>{"use strict";function $E(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Sl.exports=$E});var pn=u((qk,vl)=>{"use strict";var jE=De(),wl=Object.create,WE=function(){function e(){}return function(t){if(!jE(t))return{};if(wl)return wl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();vl.exports=WE});var Co=u((Ck,El)=>{"use strict";function VE(e,t){return function(r){return e(t(r))}}El.exports=VE});var ta=u((Uk,_l)=>{"use strict";var KE=Co(),YE=KE(Object.getPrototypeOf,Object);_l.exports=YE});var ra=u((Lk,Rl)=>{"use strict";var HE=Object.prototype;function zE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||HE;return e===r}Rl.exports=zE});var Uo=u((Dk,xl)=>{"use strict";var JE=pn(),XE=ta(),ZE=ra();function e_(e){return typeof e.constructor=="function"&&!ZE(e)?JE(XE(e)):{}}xl.exports=e_});var Ol=u((Bk,Tl)=>{"use strict";function t_(){return!1}Tl.exports=t_});var ln=u((cn,ur)=>{"use strict";var r_=Ae(),n_=Ol(),Cl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Pl=Cl&&typeof ur=="object"&&ur&&!ur.nodeType&&ur,a_=Pl&&Pl.exports===Cl,ql=a_?r_.Buffer:void 0,o_=ql?ql.isBuffer:void 0,s_=o_||n_;ur.exports=s_});var Lo=u((Nk,Ll)=>{"use strict";var i_=It(),u_=ta(),p_=_e(),c_="[object Object]",l_=Function.prototype,d_=Object.prototype,Ul=l_.toString,f_=d_.hasOwnProperty,g_=Ul.call(Object);function m_(e){if(!p_(e)||i_(e)!=c_)return!1;var t=u_(e);if(t===null)return!0;var r=f_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ul.call(r)==g_}Ll.exports=m_});var Bl=u((Mk,Dl)=>{"use strict";var y_=It(),h_=Zn(),A_=_e(),I_="[object Arguments]",b_="[object Array]",S_="[object Boolean]",w_="[object Date]",v_="[object Error]",E_="[object Function]",__="[object Map]",R_="[object Number]",x_="[object Object]",T_="[object RegExp]",O_="[object Set]",P_="[object String]",q_="[object WeakMap]",C_="[object ArrayBuffer]",U_="[object DataView]",L_="[object Float32Array]",D_="[object Float64Array]",B_="[object Int8Array]",N_="[object Int16Array]",M_="[object Int32Array]",G_="[object Uint8Array]",k_="[object Uint8ClampedArray]",F_="[object Uint16Array]",Q_="[object Uint32Array]",j={};j[L_]=j[D_]=j[B_]=j[N_]=j[M_]=j[G_]=j[k_]=j[F_]=j[Q_]=!0;j[I_]=j[b_]=j[C_]=j[S_]=j[U_]=j[w_]=j[v_]=j[E_]=j[__]=j[R_]=j[x_]=j[T_]=j[O_]=j[P_]=j[q_]=!1;function $_(e){return A_(e)&&h_(e.length)&&!!j[y_(e)]}Dl.exports=$_});var na=u((Gk,Nl)=>{"use strict";function j_(e){return function(t){return e(t)}}Nl.exports=j_});var aa=u((dn,pr)=>{"use strict";var W_=lo(),Ml=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Ml&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,V_=fn&&fn.exports===Ml,Do=V_&&W_.process,K_=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();pr.exports=K_});var oa=u((kk,Fl)=>{"use strict";var Y_=Bl(),H_=na(),Gl=aa(),kl=Gl&&Gl.isTypedArray,z_=kl?H_(kl):Y_;Fl.exports=z_});var Bo=u((Fk,Ql)=>{"use strict";function J_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Ql.exports=J_});var No=u((Qk,$l)=>{"use strict";var X_=sn(),Z_=tr(),eR=Object.prototype,tR=eR.hasOwnProperty;function rR(e,t,r){var n=e[t];(!(tR.call(e,t)&&Z_(n,r))||r===void 0&&!(t in e))&&X_(e,t,r)}$l.exports=rR});var cr=u(($k,jl)=>{"use strict";var nR=No(),aR=sn();function oR(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?aR(r,s,c):nR(r,s,c)}return r}jl.exports=oR});var Vl=u((jk,Wl)=>{"use strict";function sR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Wl.exports=sR});var gn=u((Wk,Kl)=>{"use strict";var iR=9007199254740991,uR=/^(?:0|[1-9]\d*)$/;function pR(e,t){var r=typeof e;return t=t??iR,!!t&&(r=="number"||r!="symbol"&&uR.test(e))&&e>-1&&e%1==0&&e<t}Kl.exports=pR});var Mo=u((Vk,Yl)=>{"use strict";var cR=Vl(),lR=Xr(),dR=de(),fR=ln(),gR=gn(),mR=oa(),yR=Object.prototype,hR=yR.hasOwnProperty;function AR(e,t){var r=dR(e),n=!r&&lR(e),a=!r&&!n&&fR(e),o=!r&&!n&&!a&&mR(e),i=r||n||a||o,s=i?cR(e.length,String):[],c=s.length;for(var f in e)(t||hR.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||gR(f,c)))&&s.push(f);return s}Yl.exports=AR});var zl=u((Kk,Hl)=>{"use strict";function IR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Hl.exports=IR});var Xl=u((Yk,Jl)=>{"use strict";var bR=De(),SR=ra(),wR=zl(),vR=Object.prototype,ER=vR.hasOwnProperty;function _R(e){if(!bR(e))return wR(e);var t=SR(e),r=[];for(var n in e)n=="constructor"&&(t||!ER.call(e,n))||r.push(n);return r}Jl.exports=_R});var lr=u((Hk,Zl)=>{"use strict";var RR=Mo(),xR=Xl(),TR=ar();function OR(e){return TR(e)?RR(e,!0):xR(e)}Zl.exports=OR});var td=u((zk,ed)=>{"use strict";var PR=cr(),qR=lr();function CR(e){return PR(e,qR(e))}ed.exports=CR});var id=u((Jk,sd)=>{"use strict";var rd=xo(),UR=Oo(),LR=qo(),DR=ir(),BR=Uo(),nd=Xr(),ad=de(),NR=Ro(),MR=ln(),GR=en(),kR=De(),FR=Lo(),QR=oa(),od=Bo(),$R=td();function jR(e,t,r,n,a,o,i){var s=od(e,r),c=od(t,r),f=i.get(c);if(f){rd(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,m=d===void 0;if(m){var y=ad(c),v=!y&&MR(c),C=!y&&!v&&QR(c);d=c,y||v||C?ad(s)?d=s:NR(s)?d=DR(s):v?(m=!1,d=UR(c,!0)):C?(m=!1,d=LR(c,!0)):d=[]:FR(c)||nd(c)?(d=s,nd(s)?d=$R(s):(!kR(s)||GR(s))&&(d=BR(c))):m=!1}m&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),rd(e,r,d)}sd.exports=jR});var cd=u((Xk,pd)=>{"use strict";var WR=on(),VR=xo(),KR=To(),YR=id(),HR=De(),zR=lr(),JR=Bo();function ud(e,t,r,n,a){e!==t&&KR(t,function(o,i){if(a||(a=new WR),HR(o))YR(e,t,i,r,ud,n,a);else{var s=n?n(JR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),VR(e,i,s)}},zR)}pd.exports=ud});var dd=u((Zk,ld)=>{"use strict";var XR=tr(),ZR=ar(),ex=gn(),tx=De();function rx(e,t,r){if(!tx(r))return!1;var n=typeof t;return(n=="number"?ZR(r)&&ex(t,r.length):n=="string"&&t in r)?XR(r[t],e):!1}ld.exports=rx});var gd=u((eF,fd)=>{"use strict";var nx=Io(),ax=dd();function ox(e){return nx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&ax(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}fd.exports=ox});var Go=u((tF,md)=>{"use strict";var sx=cd(),ix=gd(),ux=ix(function(e,t,r){sx(e,t,r)});md.exports=ux});var yf=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Us=u((vQ,hf)=>{"use strict";hf.exports={}});var Sf=u((EQ,bf)=>{"use strict";var ie=yf(),WT=Us(),Af=Array.prototype.push;function VT(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ls(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function If(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function KT(e){return function(t){return e({},t)}}function YT(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Af.apply(i,o),t!=n&&Af.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ds(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Bs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:WT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,m=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},v=y.ary,C=y.assign,D=y.clone,L=y.curry,U=y.forEach,k=y.isArray,be=y.isError,ee=y.isFunction,ke=y.isWeakMap,He=y.keys,ze=y.rearg,W=y.toInteger,B=y.toPath,Tt=He(ie.aryMethod),Cn={castArray:function(w){return function(){var A=arguments[0];return k(A)?w(If(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],I=arguments[1],E=w(A,I),P=E.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,P&&P<=I?E:Ls(E,I)):E}},mixin:function(w){return function(A){var I=this;if(!ee(I))return w(I,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,I.prototype[P]])}),w(I,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?I.prototype[P[0]]=Z:delete I.prototype[P[0]]}),I}},nthArg:function(w){return function(A){var I=A<0?1:W(A)+1;return L(w(A),I)}},rearg:function(w){return function(A,I){var E=I?I.length:0;return L(w(A,I),E)}},runInContext:function(w){return function(A){return Bs(e,w(A),n)}}};function x(w,A){if(i.cap){var I=ie.iterateeRearg[w];if(I)return Y(A,I);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,I){return c||i.curry&&I>1?L(A,I):A}function h(w,A,I){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,I):YT(A,P)}return A}function _(w,A,I){return i.rearg&&I>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[I]):A}function b(w,A){A=B(A);for(var I=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++I<E;){var Ce=A[I],Je=me[Ce];Je!=null&&!(ee(Je)||be(Je)||ke(Je))&&(me[Ce]=D(I==P?Je:Object(Je))),me=me[Ce]}return Z}function O(w){return F.runInContext.convert(w)(void 0)}function T(w,A){var I=ie.aliasToReal[w]||w,E=ie.remap[I]||I,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Bs(me,I,Ce,Je)}}function M(w,A){return X(w,function(I){return typeof I=="function"?Ls(I,A):I})}function Y(w,A){return X(w,function(I){var E=A.length;return VT(ze(Ls(I,E),A),E)})}function X(w,A){return function(){var I=arguments.length;if(!I)return w();for(var E=Array(I);I--;)E[I]=arguments[I];var P=i.rearg?0:I-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,I){var E,P=ie.aliasToReal[w]||w,Z=A,me=Cn[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Ds(A,If):ie.mutate.object[P]?Z=Ds(A,KT(A)):ie.mutate.set[P]&&(Z=Ds(A,b))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var zi=ie.methodSpread[P],OI=zi&&zi.afterRearg;return E=OI?h(P,_(P,Z,Ce),Ce):_(P,h(P,Z,Ce),Ce),E=x(P,E),E=S(P,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=I,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(w){U(ie.aryMethod[w],function(A){var I=F[ie.remap[A]||A];I&&qe.push([A,ae(A,I,F)])})}),U(He(F),function(w){var A=F[w];if(typeof A=="function"){for(var I=qe.length;I--;)if(qe[I][0]==w)return;A.convert=T(w,A),qe.push([w,A])}}),U(qe,function(w){F[w[0]]=w[1]}),F.convert=O,F.placeholder=F,U(He(F),function(w){U(ie.realToAlias[w]||[],function(A){F[A]=F[w]})}),F}bf.exports=Bs});var Ns=u((_Q,wf)=>{"use strict";var HT=bt(),zT=Ae(),JT=HT(zT,"WeakMap");wf.exports=JT});var Ms=u((RQ,Ef)=>{"use strict";var vf=Ns(),XT=vf&&new vf;Ef.exports=XT});var Gs=u((xQ,Rf)=>{"use strict";var ZT=Zr(),_f=Ms(),eO=_f?function(e,t){return _f.set(e,t),e}:ZT;Rf.exports=eO});var Rn=u((TQ,xf)=>{"use strict";var tO=pn(),rO=De();function nO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=tO(e.prototype),n=e.apply(r,t);return rO(n)?n:r}}xf.exports=nO});var Of=u((OQ,Tf)=>{"use strict";var aO=Rn(),oO=Ae(),sO=1;function iO(e,t,r){var n=t&sO,a=aO(e);function o(){var i=this&&this!==oO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Tf.exports=iO});var ks=u((PQ,Pf)=>{"use strict";var uO=Math.max;function pO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=uO(o-i,0),d=Array(c+f),m=!n;++s<c;)d[s]=t[s];for(;++a<i;)(m||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Pf.exports=pO});var Fs=u((qQ,qf)=>{"use strict";var cO=Math.max;function lO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=cO(o-s,0),m=Array(d+f),y=!n;++a<d;)m[a]=e[a];for(var v=a;++c<f;)m[v+c]=t[c];for(;++i<s;)(y||a<o)&&(m[v+r[i]]=e[a++]);return m}qf.exports=lO});var Uf=u((CQ,Cf)=>{"use strict";function dO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Cf.exports=dO});var wa=u((UQ,Lf)=>{"use strict";function fO(){}Lf.exports=fO});var Ea=u((LQ,Df)=>{"use strict";var gO=pn(),mO=wa(),yO=4294967295;function va(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=yO,this.__views__=[]}va.prototype=gO(mO.prototype);va.prototype.constructor=va;Df.exports=va});var Qs=u((DQ,Nf)=>{"use strict";var Bf=Ms(),hO=Eo(),AO=Bf?function(e){return Bf.get(e)}:hO;Nf.exports=AO});var Gf=u((BQ,Mf)=>{"use strict";var IO={};Mf.exports=IO});var Qf=u((NQ,Ff)=>{"use strict";var kf=Gf(),bO=Object.prototype,SO=bO.hasOwnProperty;function wO(e){for(var t=e.name+"",r=kf[t],n=SO.call(kf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Ff.exports=wO});var $s=u((MQ,$f)=>{"use strict";var vO=pn(),EO=wa();function _a(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}_a.prototype=vO(EO.prototype);_a.prototype.constructor=_a;$f.exports=_a});var Wf=u((GQ,jf)=>{"use strict";var _O=Ea(),RO=$s(),xO=ir();function TO(e){if(e instanceof _O)return e.clone();var t=new RO(e.__wrapped__,e.__chain__);return t.__actions__=xO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}jf.exports=TO});var Yf=u((kQ,Kf)=>{"use strict";var OO=Ea(),Vf=$s(),PO=wa(),qO=de(),CO=_e(),UO=Wf(),LO=Object.prototype,DO=LO.hasOwnProperty;function Ra(e){if(CO(e)&&!qO(e)&&!(e instanceof OO)){if(e instanceof Vf)return e;if(DO.call(e,"__wrapped__"))return UO(e)}return new Vf(e)}Ra.prototype=PO.prototype;Ra.prototype.constructor=Ra;Kf.exports=Ra});var zf=u((FQ,Hf)=>{"use strict";var BO=Ea(),NO=Qs(),MO=Qf(),GO=Yf();function kO(e){var t=MO(e),r=GO[t];if(typeof r!="function"||!(t in BO.prototype))return!1;if(e===r)return!0;var n=NO(r);return!!n&&e===n[0]}Hf.exports=kO});var Ws=u((QQ,Jf)=>{"use strict";var FO=Gs(),QO=Ao(),$O=QO(FO);Jf.exports=$O});var Zf=u(($Q,Xf)=>{"use strict";var jO=/\{\n\/\* \[wrapped with (.+)\] \*/,WO=/,? & /;function VO(e){var t=e.match(jO);return t?t[1].split(WO):[]}Xf.exports=VO});var tg=u((jQ,eg)=>{"use strict";var KO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function YO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(KO,`{
1
+ "use strict";var LI=Object.create;var Ln=Object.defineProperty;var DI=Object.getOwnPropertyDescriptor;var BI=Object.getOwnPropertyNames;var NI=Object.getPrototypeOf,MI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),R=(e,t)=>{for(var r in t)Ln(e,r,{get:t[r],enumerable:!0})},eu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of BI(t))!MI.call(e,a)&&a!==r&&Ln(e,a,{get:()=>t[a],enumerable:!(n=DI(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?LI(NI(e)):{},eu(t||!e||!e.__esModule?Ln(r,"default",{value:e,enumerable:!0}):r,e)),GI=e=>eu(Ln({},"__esModule",{value:!0}),e);var Kn=u((nG,Nu)=>{"use strict";function Gb(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Nu.exports=Gb});var fo=u((aG,Mu)=>{"use strict";var kb=typeof global=="object"&&global&&global.Object===Object&&global;Mu.exports=kb});var Ae=u((oG,Gu)=>{"use strict";var Fb=fo(),Qb=typeof self=="object"&&self&&self.Object===Object&&self,$b=Fb||Qb||Function("return this")();Gu.exports=$b});var Ut=u((sG,ku)=>{"use strict";var jb=Ae(),Wb=jb.Symbol;ku.exports=Wb});var ju=u((iG,$u)=>{"use strict";var Fu=Ut(),Qu=Object.prototype,Vb=Qu.hasOwnProperty,Kb=Qu.toString,Jr=Fu?Fu.toStringTag:void 0;function Yb(e){var t=Vb.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=Kb.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}$u.exports=Yb});var Vu=u((uG,Wu)=>{"use strict";var Hb=Object.prototype,zb=Hb.toString;function Jb(e){return zb.call(e)}Wu.exports=Jb});var It=u((pG,Hu)=>{"use strict";var Ku=Ut(),Xb=ju(),Zb=Vu(),eS="[object Null]",tS="[object Undefined]",Yu=Ku?Ku.toStringTag:void 0;function rS(e){return e==null?e===void 0?tS:eS:Yu&&Yu in Object(e)?Xb(e):Zb(e)}Hu.exports=rS});var _e=u((cG,zu)=>{"use strict";function nS(e){return e!=null&&typeof e=="object"}zu.exports=nS});var Xu=u((lG,Ju)=>{"use strict";var aS=It(),oS=_e(),sS="[object Arguments]";function iS(e){return oS(e)&&aS(e)==sS}Ju.exports=iS});var Xr=u((dG,tp)=>{"use strict";var Zu=Xu(),uS=_e(),ep=Object.prototype,pS=ep.hasOwnProperty,cS=ep.propertyIsEnumerable,lS=Zu(function(){return arguments}())?Zu:function(e){return uS(e)&&pS.call(e,"callee")&&!cS.call(e,"callee")};tp.exports=lS});var de=u((fG,rp)=>{"use strict";var dS=Array.isArray;rp.exports=dS});var sp=u((gG,op)=>{"use strict";var np=Ut(),fS=Xr(),gS=de(),ap=np?np.isConcatSpreadable:void 0;function mS(e){return gS(e)||fS(e)||!!(ap&&e&&e[ap])}op.exports=mS});var go=u((mG,up)=>{"use strict";var yS=Kn(),hS=sp();function ip(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=hS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?ip(s,t-1,r,n,a):yS(a,s):n||(a[a.length]=s)}return a}up.exports=ip});var Zr=u((yG,pp)=>{"use strict";function AS(e){return e}pp.exports=AS});var Yn=u((hG,cp)=>{"use strict";function IS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}cp.exports=IS});var mo=u((AG,dp)=>{"use strict";var bS=Yn(),lp=Math.max;function SS(e,t,r){return t=lp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=lp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),bS(e,this,s)}}dp.exports=SS});var gp=u((IG,fp)=>{"use strict";function wS(e){return function(){return e}}fp.exports=wS});var De=u((bG,mp)=>{"use strict";function vS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}mp.exports=vS});var en=u((SG,yp)=>{"use strict";var ES=It(),_S=De(),RS="[object AsyncFunction]",xS="[object Function]",TS="[object GeneratorFunction]",OS="[object Proxy]";function PS(e){if(!_S(e))return!1;var t=ES(e);return t==xS||t==TS||t==RS||t==OS}yp.exports=PS});var Ap=u((wG,hp)=>{"use strict";var qS=Ae(),CS=qS["__core-js_shared__"];hp.exports=CS});var Sp=u((vG,bp)=>{"use strict";var yo=Ap(),Ip=function(){var e=/[^.]+$/.exec(yo&&yo.keys&&yo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function US(e){return!!Ip&&Ip in e}bp.exports=US});var ho=u((EG,wp)=>{"use strict";var LS=Function.prototype,DS=LS.toString;function BS(e){if(e!=null){try{return DS.call(e)}catch{}try{return e+""}catch{}}return""}wp.exports=BS});var Ep=u((_G,vp)=>{"use strict";var NS=en(),MS=Sp(),GS=De(),kS=ho(),FS=/[\\^$.*+?()[\]{}|]/g,QS=/^\[object .+?Constructor\]$/,$S=Function.prototype,jS=Object.prototype,WS=$S.toString,VS=jS.hasOwnProperty,KS=RegExp("^"+WS.call(VS).replace(FS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function YS(e){if(!GS(e)||MS(e))return!1;var t=NS(e)?KS:QS;return t.test(kS(e))}vp.exports=YS});var Rp=u((RG,_p)=>{"use strict";function HS(e,t){return e?.[t]}_p.exports=HS});var bt=u((xG,xp)=>{"use strict";var zS=Ep(),JS=Rp();function XS(e,t){var r=JS(e,t);return zS(r)?r:void 0}xp.exports=XS});var Ao=u((TG,Tp)=>{"use strict";var ZS=bt(),ew=function(){try{var e=ZS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Tp.exports=ew});var qp=u((OG,Pp)=>{"use strict";var tw=gp(),Op=Ao(),rw=Zr(),nw=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:tw(t),writable:!0})}:rw;Pp.exports=nw});var Io=u((PG,Cp)=>{"use strict";var aw=800,ow=16,sw=Date.now;function iw(e){var t=0,r=0;return function(){var n=sw(),a=ow-(n-r);if(r=n,a>0){if(++t>=aw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Cp.exports=iw});var Hn=u((qG,Up)=>{"use strict";var uw=qp(),pw=Io(),cw=pw(uw);Up.exports=cw});var bo=u((CG,Lp)=>{"use strict";var lw=Zr(),dw=mo(),fw=Hn();function gw(e,t){return fw(dw(e,t,lw),e+"")}Lp.exports=gw});var tn=u((UG,Dp)=>{"use strict";var mw=bt(),yw=mw(Object,"create");Dp.exports=yw});var Mp=u((LG,Np)=>{"use strict";var Bp=tn();function hw(){this.__data__=Bp?Bp(null):{},this.size=0}Np.exports=hw});var kp=u((DG,Gp)=>{"use strict";function Aw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Gp.exports=Aw});var Qp=u((BG,Fp)=>{"use strict";var Iw=tn(),bw="__lodash_hash_undefined__",Sw=Object.prototype,ww=Sw.hasOwnProperty;function vw(e){var t=this.__data__;if(Iw){var r=t[e];return r===bw?void 0:r}return ww.call(t,e)?t[e]:void 0}Fp.exports=vw});var jp=u((NG,$p)=>{"use strict";var Ew=tn(),_w=Object.prototype,Rw=_w.hasOwnProperty;function xw(e){var t=this.__data__;return Ew?t[e]!==void 0:Rw.call(t,e)}$p.exports=xw});var Vp=u((MG,Wp)=>{"use strict";var Tw=tn(),Ow="__lodash_hash_undefined__";function Pw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Tw&&t===void 0?Ow:t,this}Wp.exports=Pw});var Yp=u((GG,Kp)=>{"use strict";var qw=Mp(),Cw=kp(),Uw=Qp(),Lw=jp(),Dw=Vp();function er(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}er.prototype.clear=qw;er.prototype.delete=Cw;er.prototype.get=Uw;er.prototype.has=Lw;er.prototype.set=Dw;Kp.exports=er});var zp=u((kG,Hp)=>{"use strict";function Bw(){this.__data__=[],this.size=0}Hp.exports=Bw});var tr=u((FG,Jp)=>{"use strict";function Nw(e,t){return e===t||e!==e&&t!==t}Jp.exports=Nw});var rn=u((QG,Xp)=>{"use strict";var Mw=tr();function Gw(e,t){for(var r=e.length;r--;)if(Mw(e[r][0],t))return r;return-1}Xp.exports=Gw});var ec=u(($G,Zp)=>{"use strict";var kw=rn(),Fw=Array.prototype,Qw=Fw.splice;function $w(e){var t=this.__data__,r=kw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Qw.call(t,r,1),--this.size,!0}Zp.exports=$w});var rc=u((jG,tc)=>{"use strict";var jw=rn();function Ww(e){var t=this.__data__,r=jw(t,e);return r<0?void 0:t[r][1]}tc.exports=Ww});var ac=u((WG,nc)=>{"use strict";var Vw=rn();function Kw(e){return Vw(this.__data__,e)>-1}nc.exports=Kw});var sc=u((VG,oc)=>{"use strict";var Yw=rn();function Hw(e,t){var r=this.__data__,n=Yw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}oc.exports=Hw});var nn=u((KG,ic)=>{"use strict";var zw=zp(),Jw=ec(),Xw=rc(),Zw=ac(),ev=sc();function rr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}rr.prototype.clear=zw;rr.prototype.delete=Jw;rr.prototype.get=Xw;rr.prototype.has=Zw;rr.prototype.set=ev;ic.exports=rr});var zn=u((YG,uc)=>{"use strict";var tv=bt(),rv=Ae(),nv=tv(rv,"Map");uc.exports=nv});var lc=u((HG,cc)=>{"use strict";var pc=Yp(),av=nn(),ov=zn();function sv(){this.size=0,this.__data__={hash:new pc,map:new(ov||av),string:new pc}}cc.exports=sv});var fc=u((zG,dc)=>{"use strict";function iv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}dc.exports=iv});var an=u((JG,gc)=>{"use strict";var uv=fc();function pv(e,t){var r=e.__data__;return uv(t)?r[typeof t=="string"?"string":"hash"]:r.map}gc.exports=pv});var yc=u((XG,mc)=>{"use strict";var cv=an();function lv(e){var t=cv(this,e).delete(e);return this.size-=t?1:0,t}mc.exports=lv});var Ac=u((ZG,hc)=>{"use strict";var dv=an();function fv(e){return dv(this,e).get(e)}hc.exports=fv});var bc=u((ek,Ic)=>{"use strict";var gv=an();function mv(e){return gv(this,e).has(e)}Ic.exports=mv});var wc=u((tk,Sc)=>{"use strict";var yv=an();function hv(e,t){var r=yv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Sc.exports=hv});var Jn=u((rk,vc)=>{"use strict";var Av=lc(),Iv=yc(),bv=Ac(),Sv=bc(),wv=wc();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=Av;nr.prototype.delete=Iv;nr.prototype.get=bv;nr.prototype.has=Sv;nr.prototype.set=wv;vc.exports=nr});var _c=u((nk,Ec)=>{"use strict";var vv="__lodash_hash_undefined__";function Ev(e){return this.__data__.set(e,vv),this}Ec.exports=Ev});var xc=u((ak,Rc)=>{"use strict";function _v(e){return this.__data__.has(e)}Rc.exports=_v});var So=u((ok,Tc)=>{"use strict";var Rv=Jn(),xv=_c(),Tv=xc();function Xn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Rv;++t<r;)this.add(e[t])}Xn.prototype.add=Xn.prototype.push=xv;Xn.prototype.has=Tv;Tc.exports=Xn});var Pc=u((sk,Oc)=>{"use strict";function Ov(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Oc.exports=Ov});var Cc=u((ik,qc)=>{"use strict";function Pv(e){return e!==e}qc.exports=Pv});var Lc=u((uk,Uc)=>{"use strict";function qv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Uc.exports=qv});var Bc=u((pk,Dc)=>{"use strict";var Cv=Pc(),Uv=Cc(),Lv=Lc();function Dv(e,t,r){return t===t?Lv(e,t,r):Cv(e,Uv,r)}Dc.exports=Dv});var wo=u((ck,Nc)=>{"use strict";var Bv=Bc();function Nv(e,t){var r=e==null?0:e.length;return!!r&&Bv(e,t,0)>-1}Nc.exports=Nv});var Gc=u((lk,Mc)=>{"use strict";function Mv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Mc.exports=Mv});var vo=u((dk,kc)=>{"use strict";function Gv(e,t){return e.has(t)}kc.exports=Gv});var Eo=u((fk,Fc)=>{"use strict";var kv=bt(),Fv=Ae(),Qv=kv(Fv,"Set");Fc.exports=Qv});var _o=u((gk,Qc)=>{"use strict";function $v(){}Qc.exports=$v});var Zn=u((mk,$c)=>{"use strict";function jv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}$c.exports=jv});var Wc=u((yk,jc)=>{"use strict";var Ro=Eo(),Wv=_o(),Vv=Zn(),Kv=1/0,Yv=Ro&&1/Vv(new Ro([,-0]))[1]==Kv?function(e){return new Ro(e)}:Wv;jc.exports=Yv});var Kc=u((hk,Vc)=>{"use strict";var Hv=So(),zv=wo(),Jv=Gc(),Xv=vo(),Zv=Wc(),eE=Zn(),tE=200;function rE(e,t,r){var n=-1,a=zv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Jv;else if(o>=tE){var f=t?null:Zv(e);if(f)return eE(f);i=!1,a=Xv,c=new Hv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],m=t?t(d):d;if(d=r||d!==0?d:0,i&&m===m){for(var y=c.length;y--;)if(c[y]===m)continue e;t&&c.push(m),s.push(d)}else a(c,m,r)||(c!==s&&c.push(m),s.push(d))}return s}Vc.exports=rE});var ea=u((Ak,Yc)=>{"use strict";var nE=9007199254740991;function aE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=nE}Yc.exports=aE});var ar=u((Ik,Hc)=>{"use strict";var oE=en(),sE=ea();function iE(e){return e!=null&&sE(e.length)&&!oE(e)}Hc.exports=iE});var xo=u((bk,zc)=>{"use strict";var uE=ar(),pE=_e();function cE(e){return pE(e)&&uE(e)}zc.exports=cE});var Xc=u((Sk,Jc)=>{"use strict";var lE=go(),dE=bo(),fE=Kc(),gE=xo(),mE=dE(function(e){return fE(lE(e,1,gE,!0))});Jc.exports=mE});var el=u((wk,Zc)=>{"use strict";var yE=nn();function hE(){this.__data__=new yE,this.size=0}Zc.exports=hE});var rl=u((vk,tl)=>{"use strict";function AE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}tl.exports=AE});var al=u((Ek,nl)=>{"use strict";function IE(e){return this.__data__.get(e)}nl.exports=IE});var sl=u((_k,ol)=>{"use strict";function bE(e){return this.__data__.has(e)}ol.exports=bE});var ul=u((Rk,il)=>{"use strict";var SE=nn(),wE=zn(),vE=Jn(),EE=200;function _E(e,t){var r=this.__data__;if(r instanceof SE){var n=r.__data__;if(!wE||n.length<EE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new vE(n)}return r.set(e,t),this.size=r.size,this}il.exports=_E});var on=u((xk,pl)=>{"use strict";var RE=nn(),xE=el(),TE=rl(),OE=al(),PE=sl(),qE=ul();function or(e){var t=this.__data__=new RE(e);this.size=t.size}or.prototype.clear=xE;or.prototype.delete=TE;or.prototype.get=OE;or.prototype.has=PE;or.prototype.set=qE;pl.exports=or});var sn=u((Tk,ll)=>{"use strict";var cl=Ao();function CE(e,t,r){t=="__proto__"&&cl?cl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ll.exports=CE});var To=u((Ok,dl)=>{"use strict";var UE=sn(),LE=tr();function DE(e,t,r){(r!==void 0&&!LE(e[t],r)||r===void 0&&!(t in e))&&UE(e,t,r)}dl.exports=DE});var gl=u((Pk,fl)=>{"use strict";function BE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}fl.exports=BE});var Oo=u((qk,ml)=>{"use strict";var NE=gl(),ME=NE();ml.exports=ME});var Po=u((un,sr)=>{"use strict";var GE=Ae(),Il=typeof un=="object"&&un&&!un.nodeType&&un,yl=Il&&typeof sr=="object"&&sr&&!sr.nodeType&&sr,kE=yl&&yl.exports===Il,hl=kE?GE.Buffer:void 0,Al=hl?hl.allocUnsafe:void 0;function FE(e,t){if(t)return e.slice();var r=e.length,n=Al?Al(r):new e.constructor(r);return e.copy(n),n}sr.exports=FE});var qo=u((Ck,bl)=>{"use strict";var QE=Ae(),$E=QE.Uint8Array;bl.exports=$E});var ta=u((Uk,wl)=>{"use strict";var Sl=qo();function jE(e){var t=new e.constructor(e.byteLength);return new Sl(t).set(new Sl(e)),t}wl.exports=jE});var Co=u((Lk,vl)=>{"use strict";var WE=ta();function VE(e,t){var r=t?WE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}vl.exports=VE});var ir=u((Dk,El)=>{"use strict";function KE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}El.exports=KE});var pn=u((Bk,Rl)=>{"use strict";var YE=De(),_l=Object.create,HE=function(){function e(){}return function(t){if(!YE(t))return{};if(_l)return _l(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rl.exports=HE});var Uo=u((Nk,xl)=>{"use strict";function zE(e,t){return function(r){return e(t(r))}}xl.exports=zE});var ra=u((Mk,Tl)=>{"use strict";var JE=Uo(),XE=JE(Object.getPrototypeOf,Object);Tl.exports=XE});var na=u((Gk,Ol)=>{"use strict";var ZE=Object.prototype;function e_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ZE;return e===r}Ol.exports=e_});var Lo=u((kk,Pl)=>{"use strict";var t_=pn(),r_=ra(),n_=na();function a_(e){return typeof e.constructor=="function"&&!n_(e)?t_(r_(e)):{}}Pl.exports=a_});var Cl=u((Fk,ql)=>{"use strict";function o_(){return!1}ql.exports=o_});var ln=u((cn,ur)=>{"use strict";var s_=Ae(),i_=Cl(),Dl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Ul=Dl&&typeof ur=="object"&&ur&&!ur.nodeType&&ur,u_=Ul&&Ul.exports===Dl,Ll=u_?s_.Buffer:void 0,p_=Ll?Ll.isBuffer:void 0,c_=p_||i_;ur.exports=c_});var Do=u((Qk,Nl)=>{"use strict";var l_=It(),d_=ra(),f_=_e(),g_="[object Object]",m_=Function.prototype,y_=Object.prototype,Bl=m_.toString,h_=y_.hasOwnProperty,A_=Bl.call(Object);function I_(e){if(!f_(e)||l_(e)!=g_)return!1;var t=d_(e);if(t===null)return!0;var r=h_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Bl.call(r)==A_}Nl.exports=I_});var Gl=u(($k,Ml)=>{"use strict";var b_=It(),S_=ea(),w_=_e(),v_="[object Arguments]",E_="[object Array]",__="[object Boolean]",R_="[object Date]",x_="[object Error]",T_="[object Function]",O_="[object Map]",P_="[object Number]",q_="[object Object]",C_="[object RegExp]",U_="[object Set]",L_="[object String]",D_="[object WeakMap]",B_="[object ArrayBuffer]",N_="[object DataView]",M_="[object Float32Array]",G_="[object Float64Array]",k_="[object Int8Array]",F_="[object Int16Array]",Q_="[object Int32Array]",$_="[object Uint8Array]",j_="[object Uint8ClampedArray]",W_="[object Uint16Array]",V_="[object Uint32Array]",j={};j[M_]=j[G_]=j[k_]=j[F_]=j[Q_]=j[$_]=j[j_]=j[W_]=j[V_]=!0;j[v_]=j[E_]=j[B_]=j[__]=j[N_]=j[R_]=j[x_]=j[T_]=j[O_]=j[P_]=j[q_]=j[C_]=j[U_]=j[L_]=j[D_]=!1;function K_(e){return w_(e)&&S_(e.length)&&!!j[b_(e)]}Ml.exports=K_});var aa=u((jk,kl)=>{"use strict";function Y_(e){return function(t){return e(t)}}kl.exports=Y_});var oa=u((dn,pr)=>{"use strict";var H_=fo(),Fl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Fl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,z_=fn&&fn.exports===Fl,Bo=z_&&H_.process,J_=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||Bo&&Bo.binding&&Bo.binding("util")}catch{}}();pr.exports=J_});var sa=u((Wk,jl)=>{"use strict";var X_=Gl(),Z_=aa(),Ql=oa(),$l=Ql&&Ql.isTypedArray,eR=$l?Z_($l):X_;jl.exports=eR});var No=u((Vk,Wl)=>{"use strict";function tR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Wl.exports=tR});var Mo=u((Kk,Vl)=>{"use strict";var rR=sn(),nR=tr(),aR=Object.prototype,oR=aR.hasOwnProperty;function sR(e,t,r){var n=e[t];(!(oR.call(e,t)&&nR(n,r))||r===void 0&&!(t in e))&&rR(e,t,r)}Vl.exports=sR});var cr=u((Yk,Kl)=>{"use strict";var iR=Mo(),uR=sn();function pR(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?uR(r,s,c):iR(r,s,c)}return r}Kl.exports=pR});var Hl=u((Hk,Yl)=>{"use strict";function cR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Yl.exports=cR});var gn=u((zk,zl)=>{"use strict";var lR=9007199254740991,dR=/^(?:0|[1-9]\d*)$/;function fR(e,t){var r=typeof e;return t=t??lR,!!t&&(r=="number"||r!="symbol"&&dR.test(e))&&e>-1&&e%1==0&&e<t}zl.exports=fR});var Go=u((Jk,Jl)=>{"use strict";var gR=Hl(),mR=Xr(),yR=de(),hR=ln(),AR=gn(),IR=sa(),bR=Object.prototype,SR=bR.hasOwnProperty;function wR(e,t){var r=yR(e),n=!r&&mR(e),a=!r&&!n&&hR(e),o=!r&&!n&&!a&&IR(e),i=r||n||a||o,s=i?gR(e.length,String):[],c=s.length;for(var f in e)(t||SR.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||AR(f,c)))&&s.push(f);return s}Jl.exports=wR});var Zl=u((Xk,Xl)=>{"use strict";function vR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Xl.exports=vR});var td=u((Zk,ed)=>{"use strict";var ER=De(),_R=na(),RR=Zl(),xR=Object.prototype,TR=xR.hasOwnProperty;function OR(e){if(!ER(e))return RR(e);var t=_R(e),r=[];for(var n in e)n=="constructor"&&(t||!TR.call(e,n))||r.push(n);return r}ed.exports=OR});var lr=u((eF,rd)=>{"use strict";var PR=Go(),qR=td(),CR=ar();function UR(e){return CR(e)?PR(e,!0):qR(e)}rd.exports=UR});var ad=u((tF,nd)=>{"use strict";var LR=cr(),DR=lr();function BR(e){return LR(e,DR(e))}nd.exports=BR});var cd=u((rF,pd)=>{"use strict";var od=To(),NR=Po(),MR=Co(),GR=ir(),kR=Lo(),sd=Xr(),id=de(),FR=xo(),QR=ln(),$R=en(),jR=De(),WR=Do(),VR=sa(),ud=No(),KR=ad();function YR(e,t,r,n,a,o,i){var s=ud(e,r),c=ud(t,r),f=i.get(c);if(f){od(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,m=d===void 0;if(m){var y=id(c),v=!y&&QR(c),C=!y&&!v&&VR(c);d=c,y||v||C?id(s)?d=s:FR(s)?d=GR(s):v?(m=!1,d=NR(c,!0)):C?(m=!1,d=MR(c,!0)):d=[]:WR(c)||sd(c)?(d=s,sd(s)?d=KR(s):(!jR(s)||$R(s))&&(d=kR(c))):m=!1}m&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),od(e,r,d)}pd.exports=YR});var fd=u((nF,dd)=>{"use strict";var HR=on(),zR=To(),JR=Oo(),XR=cd(),ZR=De(),ex=lr(),tx=No();function ld(e,t,r,n,a){e!==t&&JR(t,function(o,i){if(a||(a=new HR),ZR(o))XR(e,t,i,r,ld,n,a);else{var s=n?n(tx(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),zR(e,i,s)}},ex)}dd.exports=ld});var md=u((aF,gd)=>{"use strict";var rx=tr(),nx=ar(),ax=gn(),ox=De();function sx(e,t,r){if(!ox(r))return!1;var n=typeof t;return(n=="number"?nx(r)&&ax(t,r.length):n=="string"&&t in r)?rx(r[t],e):!1}gd.exports=sx});var hd=u((oF,yd)=>{"use strict";var ix=bo(),ux=md();function px(e){return ix(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&ux(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}yd.exports=px});var ko=u((sF,Ad)=>{"use strict";var cx=fd(),lx=hd(),dx=lx(function(e,t,r){cx(e,t,r)});Ad.exports=dx});var If=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ls=u((TQ,bf)=>{"use strict";bf.exports={}});var Ef=u((OQ,vf)=>{"use strict";var ie=If(),HT=Ls(),Sf=Array.prototype.push;function zT(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ds(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function wf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function JT(e){return function(t){return e({},t)}}function XT(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Sf.apply(i,o),t!=n&&Sf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Bs(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Ns(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:HT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,m=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},v=y.ary,C=y.assign,D=y.clone,L=y.curry,U=y.forEach,k=y.isArray,be=y.isError,ee=y.isFunction,ke=y.isWeakMap,He=y.keys,ze=y.rearg,W=y.toInteger,B=y.toPath,Tt=He(ie.aryMethod),Un={castArray:function(w){return function(){var A=arguments[0];return k(A)?w(wf(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],I=arguments[1],E=w(A,I),P=E.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,P&&P<=I?E:Ds(E,I)):E}},mixin:function(w){return function(A){var I=this;if(!ee(I))return w(I,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,I.prototype[P]])}),w(I,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?I.prototype[P[0]]=Z:delete I.prototype[P[0]]}),I}},nthArg:function(w){return function(A){var I=A<0?1:W(A)+1;return L(w(A),I)}},rearg:function(w){return function(A,I){var E=I?I.length:0;return L(w(A,I),E)}},runInContext:function(w){return function(A){return Ns(e,w(A),n)}}};function x(w,A){if(i.cap){var I=ie.iterateeRearg[w];if(I)return Y(A,I);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,I){return c||i.curry&&I>1?L(A,I):A}function h(w,A,I){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,I):XT(A,P)}return A}function _(w,A,I){return i.rearg&&I>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[I]):A}function b(w,A){A=B(A);for(var I=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++I<E;){var Ce=A[I],Je=me[Ce];Je!=null&&!(ee(Je)||be(Je)||ke(Je))&&(me[Ce]=D(I==P?Je:Object(Je))),me=me[Ce]}return Z}function O(w){return F.runInContext.convert(w)(void 0)}function T(w,A){var I=ie.aliasToReal[w]||w,E=ie.remap[I]||I,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Ns(me,I,Ce,Je)}}function M(w,A){return X(w,function(I){return typeof I=="function"?Ds(I,A):I})}function Y(w,A){return X(w,function(I){var E=A.length;return zT(ze(Ds(I,E),A),E)})}function X(w,A){return function(){var I=arguments.length;if(!I)return w();for(var E=Array(I);I--;)E[I]=arguments[I];var P=i.rearg?0:I-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,I){var E,P=ie.aliasToReal[w]||w,Z=A,me=Un[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Bs(A,wf):ie.mutate.object[P]?Z=Bs(A,JT(A)):ie.mutate.set[P]&&(Z=Bs(A,b))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var Zi=ie.methodSpread[P],UI=Zi&&Zi.afterRearg;return E=UI?h(P,_(P,Z,Ce),Ce):_(P,h(P,Z,Ce),Ce),E=x(P,E),E=S(P,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=I,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(w){U(ie.aryMethod[w],function(A){var I=F[ie.remap[A]||A];I&&qe.push([A,ae(A,I,F)])})}),U(He(F),function(w){var A=F[w];if(typeof A=="function"){for(var I=qe.length;I--;)if(qe[I][0]==w)return;A.convert=T(w,A),qe.push([w,A])}}),U(qe,function(w){F[w[0]]=w[1]}),F.convert=O,F.placeholder=F,U(He(F),function(w){U(ie.realToAlias[w]||[],function(A){F[A]=F[w]})}),F}vf.exports=Ns});var Ms=u((PQ,_f)=>{"use strict";var ZT=bt(),eO=Ae(),tO=ZT(eO,"WeakMap");_f.exports=tO});var Gs=u((qQ,xf)=>{"use strict";var Rf=Ms(),rO=Rf&&new Rf;xf.exports=rO});var ks=u((CQ,Of)=>{"use strict";var nO=Zr(),Tf=Gs(),aO=Tf?function(e,t){return Tf.set(e,t),e}:nO;Of.exports=aO});var Rn=u((UQ,Pf)=>{"use strict";var oO=pn(),sO=De();function iO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=oO(e.prototype),n=e.apply(r,t);return sO(n)?n:r}}Pf.exports=iO});var Cf=u((LQ,qf)=>{"use strict";var uO=Rn(),pO=Ae(),cO=1;function lO(e,t,r){var n=t&cO,a=uO(e);function o(){var i=this&&this!==pO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}qf.exports=lO});var Fs=u((DQ,Uf)=>{"use strict";var dO=Math.max;function fO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=dO(o-i,0),d=Array(c+f),m=!n;++s<c;)d[s]=t[s];for(;++a<i;)(m||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Uf.exports=fO});var Qs=u((BQ,Lf)=>{"use strict";var gO=Math.max;function mO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=gO(o-s,0),m=Array(d+f),y=!n;++a<d;)m[a]=e[a];for(var v=a;++c<f;)m[v+c]=t[c];for(;++i<s;)(y||a<o)&&(m[v+r[i]]=e[a++]);return m}Lf.exports=mO});var Bf=u((NQ,Df)=>{"use strict";function yO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Df.exports=yO});var va=u((MQ,Nf)=>{"use strict";function hO(){}Nf.exports=hO});var _a=u((GQ,Mf)=>{"use strict";var AO=pn(),IO=va(),bO=4294967295;function Ea(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bO,this.__views__=[]}Ea.prototype=AO(IO.prototype);Ea.prototype.constructor=Ea;Mf.exports=Ea});var $s=u((kQ,kf)=>{"use strict";var Gf=Gs(),SO=_o(),wO=Gf?function(e){return Gf.get(e)}:SO;kf.exports=wO});var Qf=u((FQ,Ff)=>{"use strict";var vO={};Ff.exports=vO});var Wf=u((QQ,jf)=>{"use strict";var $f=Qf(),EO=Object.prototype,_O=EO.hasOwnProperty;function RO(e){for(var t=e.name+"",r=$f[t],n=_O.call($f,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}jf.exports=RO});var Ws=u(($Q,Vf)=>{"use strict";var xO=pn(),TO=va();function Ra(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ra.prototype=xO(TO.prototype);Ra.prototype.constructor=Ra;Vf.exports=Ra});var Yf=u((jQ,Kf)=>{"use strict";var OO=_a(),PO=Ws(),qO=ir();function CO(e){if(e instanceof OO)return e.clone();var t=new PO(e.__wrapped__,e.__chain__);return t.__actions__=qO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Kf.exports=CO});var Jf=u((WQ,zf)=>{"use strict";var UO=_a(),Hf=Ws(),LO=va(),DO=de(),BO=_e(),NO=Yf(),MO=Object.prototype,GO=MO.hasOwnProperty;function xa(e){if(BO(e)&&!DO(e)&&!(e instanceof UO)){if(e instanceof Hf)return e;if(GO.call(e,"__wrapped__"))return NO(e)}return new Hf(e)}xa.prototype=LO.prototype;xa.prototype.constructor=xa;zf.exports=xa});var Zf=u((VQ,Xf)=>{"use strict";var kO=_a(),FO=$s(),QO=Wf(),$O=Jf();function jO(e){var t=QO(e),r=$O[t];if(typeof r!="function"||!(t in kO.prototype))return!1;if(e===r)return!0;var n=FO(r);return!!n&&e===n[0]}Xf.exports=jO});var Vs=u((KQ,eg)=>{"use strict";var WO=ks(),VO=Io(),KO=VO(WO);eg.exports=KO});var rg=u((YQ,tg)=>{"use strict";var YO=/\{\n\/\* \[wrapped with (.+)\] \*/,HO=/,? & /;function zO(e){var t=e.match(YO);return t?t[1].split(HO):[]}tg.exports=zO});var ag=u((HQ,ng)=>{"use strict";var JO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function XO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(JO,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}eg.exports=YO});var xa=u((WQ,rg)=>{"use strict";function HO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}rg.exports=HO});var ag=u((VQ,ng)=>{"use strict";var zO=xa(),JO=So(),XO=1,ZO=2,eP=8,tP=16,rP=32,nP=64,aP=128,oP=256,sP=512,iP=[["ary",aP],["bind",XO],["bindKey",ZO],["curry",eP],["curryRight",tP],["flip",sP],["partial",rP],["partialRight",nP],["rearg",oP]];function uP(e,t){return zO(iP,function(r){var n="_."+r[0];t&r[1]&&!JO(e,n)&&e.push(n)}),e.sort()}ng.exports=uP});var Vs=u((KQ,og)=>{"use strict";var pP=Zf(),cP=tg(),lP=Yn(),dP=ag();function fP(e,t,r){var n=t+"";return lP(e,cP(n,dP(pP(n),r)))}og.exports=fP});var Ks=u((YQ,ug)=>{"use strict";var gP=zf(),mP=Ws(),yP=Vs(),hP=1,AP=2,IP=4,bP=8,sg=32,ig=64;function SP(e,t,r,n,a,o,i,s,c,f){var d=t&bP,m=d?i:void 0,y=d?void 0:i,v=d?o:void 0,C=d?void 0:o;t|=d?sg:ig,t&=~(d?ig:sg),t&IP||(t&=~(hP|AP));var D=[e,t,a,v,m,C,y,s,c,f],L=r.apply(void 0,D);return gP(e)&&mP(L,D),L.placeholder=n,yP(L,e,t)}ug.exports=SP});var Ys=u((HQ,pg)=>{"use strict";function wP(e){var t=e;return t.placeholder}pg.exports=wP});var lg=u((zQ,cg)=>{"use strict";var vP=ir(),EP=gn(),_P=Math.min;function RP(e,t){for(var r=e.length,n=_P(t.length,r),a=vP(e);n--;){var o=t[n];e[n]=EP(o,r)?a[o]:void 0}return e}cg.exports=RP});var Ta=u((JQ,fg)=>{"use strict";var dg="__lodash_placeholder__";function xP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===dg)&&(e[r]=dg,o[a++]=r)}return o}fg.exports=xP});var Hs=u((XQ,yg)=>{"use strict";var TP=ks(),OP=Fs(),PP=Uf(),gg=Rn(),qP=Ks(),CP=Ys(),UP=lg(),LP=Ta(),DP=Ae(),BP=1,NP=2,MP=8,GP=16,kP=128,FP=512;function mg(e,t,r,n,a,o,i,s,c,f){var d=t&kP,m=t&BP,y=t&NP,v=t&(MP|GP),C=t&FP,D=y?void 0:gg(e);function L(){for(var U=arguments.length,k=Array(U),be=U;be--;)k[be]=arguments[be];if(v)var ee=CP(L),ke=PP(k,ee);if(n&&(k=TP(k,n,a,v)),o&&(k=OP(k,o,i,v)),U-=ke,v&&U<f){var He=LP(k,ee);return qP(e,t,mg,L.placeholder,r,k,He,s,c,f-U)}var ze=m?r:this,W=y?ze[e]:e;return U=k.length,s?k=UP(k,s):C&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==DP&&this instanceof L&&(W=D||gg(W)),W.apply(ze,k)}return L}yg.exports=mg});var Ag=u((ZQ,hg)=>{"use strict";var QP=Kn(),$P=Rn(),jP=Hs(),WP=Ks(),VP=Ys(),KP=Ta(),YP=Ae();function HP(e,t,r){var n=$P(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=VP(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:KP(i,c);if(o-=f.length,o<r)return WP(e,t,jP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==YP&&this instanceof a?n:e;return QP(d,this,i)}return a}hg.exports=HP});var bg=u((e$,Ig)=>{"use strict";var zP=Kn(),JP=Rn(),XP=Ae(),ZP=1;function eq(e,t,r,n){var a=t&ZP,o=JP(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,m=Array(d+c),y=this&&this!==XP&&this instanceof i?o:e;++f<d;)m[f]=n[f];for(;c--;)m[f++]=arguments[++s];return zP(y,a?r:this,m)}return i}Ig.exports=eq});var Rg=u((t$,_g)=>{"use strict";var tq=ks(),rq=Fs(),Sg=Ta(),wg="__lodash_placeholder__",zs=1,nq=2,aq=4,vg=8,xn=128,Eg=256,oq=Math.min;function sq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(zs|nq|xn),i=n==xn&&r==vg||n==xn&&r==Eg&&e[7].length<=t[8]||n==(xn|Eg)&&t[7].length<=t[8]&&r==vg;if(!(o||i))return e;n&zs&&(e[2]=t[2],a|=r&zs?0:aq);var s=t[3];if(s){var c=e[3];e[3]=c?tq(c,s,t[4]):s,e[4]=c?Sg(e[3],wg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?rq(c,s,t[6]):s,e[6]=c?Sg(e[5],wg):t[6]),s=t[7],s&&(e[7]=s),n&xn&&(e[8]=e[8]==null?t[8]:oq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}_g.exports=sq});var Tg=u((r$,xg)=>{"use strict";var iq=/\s/;function uq(e){for(var t=e.length;t--&&iq.test(e.charAt(t)););return t}xg.exports=uq});var Pg=u((n$,Og)=>{"use strict";var pq=Tg(),cq=/^\s+/;function lq(e){return e&&e.slice(0,pq(e)+1).replace(cq,"")}Og.exports=lq});var Ir=u((a$,qg)=>{"use strict";var dq=It(),fq=_e(),gq="[object Symbol]";function mq(e){return typeof e=="symbol"||fq(e)&&dq(e)==gq}qg.exports=mq});var Dg=u((o$,Lg)=>{"use strict";var yq=Pg(),Cg=De(),hq=Ir(),Ug=0/0,Aq=/^[-+]0x[0-9a-f]+$/i,Iq=/^0b[01]+$/i,bq=/^0o[0-7]+$/i,Sq=parseInt;function wq(e){if(typeof e=="number")return e;if(hq(e))return Ug;if(Cg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Cg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=yq(e);var r=Iq.test(e);return r||bq.test(e)?Sq(e.slice(2),r?2:8):Aq.test(e)?Ug:+e}Lg.exports=wq});var Mg=u((s$,Ng)=>{"use strict";var vq=Dg(),Bg=1/0,Eq=17976931348623157e292;function _q(e){if(!e)return e===0?e:0;if(e=vq(e),e===Bg||e===-Bg){var t=e<0?-1:1;return t*Eq}return e===e?e:0}Ng.exports=_q});var Js=u((i$,Gg)=>{"use strict";var Rq=Mg();function xq(e){var t=Rq(e),r=t%1;return t===t?r?t-r:t:0}Gg.exports=xq});var Oa=u((u$,jg)=>{"use strict";var Tq=Gs(),Oq=Of(),Pq=Ag(),qq=Hs(),Cq=bg(),Uq=Qs(),Lq=Rg(),Dq=Ws(),Bq=Vs(),kg=Js(),Nq="Expected a function",Fg=1,Mq=2,Xs=8,Zs=16,ei=32,Qg=64,$g=Math.max;function Gq(e,t,r,n,a,o,i,s){var c=t&Mq;if(!c&&typeof e!="function")throw new TypeError(Nq);var f=n?n.length:0;if(f||(t&=~(ei|Qg),n=a=void 0),i=i===void 0?i:$g(kg(i),0),s=s===void 0?s:kg(s),f-=a?a.length:0,t&Qg){var d=n,m=a;n=a=void 0}var y=c?void 0:Uq(e),v=[e,t,r,n,a,d,m,o,i,s];if(y&&Lq(v,y),e=v[0],t=v[1],r=v[2],n=v[3],a=v[4],s=v[9]=v[9]===void 0?c?0:e.length:$g(v[9]-f,0),!s&&t&(Xs|Zs)&&(t&=~(Xs|Zs)),!t||t==Fg)var C=Oq(e,t,r);else t==Xs||t==Zs?C=Pq(e,t,s):(t==ei||t==(Fg|ei))&&!a.length?C=Cq(e,t,r,n):C=qq.apply(void 0,v);var D=y?Tq:Dq;return Bq(D(C,v),e,t)}jg.exports=Gq});var Vg=u((p$,Wg)=>{"use strict";var kq=Oa(),Fq=128;function Qq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,kq(e,Fq,void 0,void 0,void 0,void 0,t)}Wg.exports=Qq});var Yg=u((c$,Kg)=>{"use strict";var $q=Co(),jq=$q(Object.keys,Object);Kg.exports=jq});var ti=u((l$,Hg)=>{"use strict";var Wq=ra(),Vq=Yg(),Kq=Object.prototype,Yq=Kq.hasOwnProperty;function Hq(e){if(!Wq(e))return Vq(e);var t=[];for(var r in Object(e))Yq.call(e,r)&&r!="constructor"&&t.push(r);return t}Hg.exports=Hq});var br=u((d$,zg)=>{"use strict";var zq=Mo(),Jq=ti(),Xq=ar();function Zq(e){return Xq(e)?zq(e):Jq(e)}zg.exports=Zq});var ri=u((f$,Jg)=>{"use strict";var eC=cr(),tC=br();function rC(e,t){return e&&eC(t,tC(t),e)}Jg.exports=rC});var Zg=u((g$,Xg)=>{"use strict";var nC=cr(),aC=lr();function oC(e,t){return e&&nC(t,aC(t),e)}Xg.exports=oC});var tm=u((m$,em)=>{"use strict";function sC(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}em.exports=sC});var ni=u((y$,rm)=>{"use strict";function iC(){return[]}rm.exports=iC});var Pa=u((h$,am)=>{"use strict";var uC=tm(),pC=ni(),cC=Object.prototype,lC=cC.propertyIsEnumerable,nm=Object.getOwnPropertySymbols,dC=nm?function(e){return e==null?[]:(e=Object(e),uC(nm(e),function(t){return lC.call(e,t)}))}:pC;am.exports=dC});var sm=u((A$,om)=>{"use strict";var fC=cr(),gC=Pa();function mC(e,t){return fC(e,gC(e),t)}om.exports=mC});var ai=u((I$,im)=>{"use strict";var yC=Vn(),hC=ta(),AC=Pa(),IC=ni(),bC=Object.getOwnPropertySymbols,SC=bC?function(e){for(var t=[];e;)yC(t,AC(e)),e=hC(e);return t}:IC;im.exports=SC});var pm=u((b$,um)=>{"use strict";var wC=cr(),vC=ai();function EC(e,t){return wC(e,vC(e),t)}um.exports=EC});var oi=u((S$,cm)=>{"use strict";var _C=Vn(),RC=de();function xC(e,t,r){var n=t(e);return RC(e)?n:_C(n,r(e))}cm.exports=xC});var si=u((w$,lm)=>{"use strict";var TC=oi(),OC=Pa(),PC=br();function qC(e){return TC(e,PC,OC)}lm.exports=qC});var fm=u((v$,dm)=>{"use strict";var CC=oi(),UC=ai(),LC=lr();function DC(e){return CC(e,LC,UC)}dm.exports=DC});var mm=u((E$,gm)=>{"use strict";var BC=bt(),NC=Ae(),MC=BC(NC,"DataView");gm.exports=MC});var hm=u((_$,ym)=>{"use strict";var GC=bt(),kC=Ae(),FC=GC(kC,"Promise");ym.exports=FC});var wr=u((R$,Em)=>{"use strict";var ii=mm(),ui=Hn(),pi=hm(),ci=vo(),li=Ns(),vm=It(),Sr=yo(),Am="[object Map]",QC="[object Object]",Im="[object Promise]",bm="[object Set]",Sm="[object WeakMap]",wm="[object DataView]",$C=Sr(ii),jC=Sr(ui),WC=Sr(pi),VC=Sr(ci),KC=Sr(li),Qt=vm;(ii&&Qt(new ii(new ArrayBuffer(1)))!=wm||ui&&Qt(new ui)!=Am||pi&&Qt(pi.resolve())!=Im||ci&&Qt(new ci)!=bm||li&&Qt(new li)!=Sm)&&(Qt=function(e){var t=vm(e),r=t==QC?e.constructor:void 0,n=r?Sr(r):"";if(n)switch(n){case $C:return wm;case jC:return Am;case WC:return Im;case VC:return bm;case KC:return Sm}return t});Em.exports=Qt});var Rm=u((x$,_m)=>{"use strict";var YC=Object.prototype,HC=YC.hasOwnProperty;function zC(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&HC.call(e,"index")&&(r.index=e.index,r.input=e.input),r}_m.exports=zC});var Tm=u((T$,xm)=>{"use strict";var JC=ea();function XC(e,t){var r=t?JC(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}xm.exports=XC});var Pm=u((O$,Om)=>{"use strict";var ZC=/\w*$/;function eU(e){var t=new e.constructor(e.source,ZC.exec(e));return t.lastIndex=e.lastIndex,t}Om.exports=eU});var Dm=u((P$,Lm)=>{"use strict";var qm=Ut(),Cm=qm?qm.prototype:void 0,Um=Cm?Cm.valueOf:void 0;function tU(e){return Um?Object(Um.call(e)):{}}Lm.exports=tU});var Nm=u((q$,Bm)=>{"use strict";var rU=ea(),nU=Tm(),aU=Pm(),oU=Dm(),sU=qo(),iU="[object Boolean]",uU="[object Date]",pU="[object Map]",cU="[object Number]",lU="[object RegExp]",dU="[object Set]",fU="[object String]",gU="[object Symbol]",mU="[object ArrayBuffer]",yU="[object DataView]",hU="[object Float32Array]",AU="[object Float64Array]",IU="[object Int8Array]",bU="[object Int16Array]",SU="[object Int32Array]",wU="[object Uint8Array]",vU="[object Uint8ClampedArray]",EU="[object Uint16Array]",_U="[object Uint32Array]";function RU(e,t,r){var n=e.constructor;switch(t){case mU:return rU(e);case iU:case uU:return new n(+e);case yU:return nU(e,r);case hU:case AU:case IU:case bU:case SU:case wU:case vU:case EU:case _U:return sU(e,r);case pU:return new n;case cU:case fU:return new n(e);case lU:return aU(e);case dU:return new n;case gU:return oU(e)}}Bm.exports=RU});var Gm=u((C$,Mm)=>{"use strict";var xU=wr(),TU=_e(),OU="[object Map]";function PU(e){return TU(e)&&xU(e)==OU}Mm.exports=PU});var $m=u((U$,Qm)=>{"use strict";var qU=Gm(),CU=na(),km=aa(),Fm=km&&km.isMap,UU=Fm?CU(Fm):qU;Qm.exports=UU});var Wm=u((L$,jm)=>{"use strict";var LU=wr(),DU=_e(),BU="[object Set]";function NU(e){return DU(e)&&LU(e)==BU}jm.exports=NU});var Hm=u((D$,Ym)=>{"use strict";var MU=Wm(),GU=na(),Vm=aa(),Km=Vm&&Vm.isSet,kU=Km?GU(Km):MU;Ym.exports=kU});var di=u((B$,Zm)=>{"use strict";var FU=on(),QU=xa(),$U=No(),jU=ri(),WU=Zg(),VU=Oo(),KU=ir(),YU=sm(),HU=pm(),zU=si(),JU=fm(),XU=wr(),ZU=Rm(),eL=Nm(),tL=Uo(),rL=de(),nL=ln(),aL=$m(),oL=De(),sL=Hm(),iL=br(),uL=lr(),pL=1,cL=2,lL=4,zm="[object Arguments]",dL="[object Array]",fL="[object Boolean]",gL="[object Date]",mL="[object Error]",Jm="[object Function]",yL="[object GeneratorFunction]",hL="[object Map]",AL="[object Number]",Xm="[object Object]",IL="[object RegExp]",bL="[object Set]",SL="[object String]",wL="[object Symbol]",vL="[object WeakMap]",EL="[object ArrayBuffer]",_L="[object DataView]",RL="[object Float32Array]",xL="[object Float64Array]",TL="[object Int8Array]",OL="[object Int16Array]",PL="[object Int32Array]",qL="[object Uint8Array]",CL="[object Uint8ClampedArray]",UL="[object Uint16Array]",LL="[object Uint32Array]",Q={};Q[zm]=Q[dL]=Q[EL]=Q[_L]=Q[fL]=Q[gL]=Q[RL]=Q[xL]=Q[TL]=Q[OL]=Q[PL]=Q[hL]=Q[AL]=Q[Xm]=Q[IL]=Q[bL]=Q[SL]=Q[wL]=Q[qL]=Q[CL]=Q[UL]=Q[LL]=!0;Q[mL]=Q[Jm]=Q[vL]=!1;function qa(e,t,r,n,a,o){var i,s=t&pL,c=t&cL,f=t&lL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!oL(e))return e;var d=rL(e);if(d){if(i=ZU(e),!s)return KU(e,i)}else{var m=XU(e),y=m==Jm||m==yL;if(nL(e))return VU(e,s);if(m==Xm||m==zm||y&&!a){if(i=c||y?{}:tL(e),!s)return c?HU(e,WU(i,e)):YU(e,jU(i,e))}else{if(!Q[m])return a?e:{};i=eL(e,m,s)}}o||(o=new FU);var v=o.get(e);if(v)return v;o.set(e,i),sL(e)?e.forEach(function(L){i.add(qa(L,t,r,L,e,o))}):aL(e)&&e.forEach(function(L,U){i.set(U,qa(L,t,r,U,e,o))});var C=f?c?JU:zU:c?uL:iL,D=d?void 0:C(e);return QU(D||e,function(L,U){D&&(U=L,L=e[U]),$U(i,U,qa(L,t,r,U,e,o))}),i}Zm.exports=qa});var ty=u((N$,ey)=>{"use strict";var DL=di(),BL=4;function NL(e){return DL(e,BL)}ey.exports=NL});var ny=u((M$,ry)=>{"use strict";var ML=Oa(),GL=8;function fi(e,t,r){t=r?void 0:t;var n=ML(e,GL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=fi.placeholder,n}fi.placeholder={};ry.exports=fi});var oy=u((G$,ay)=>{"use strict";var kL=It(),FL=_e(),QL=Lo(),$L="[object DOMException]",jL="[object Error]";function WL(e){if(!FL(e))return!1;var t=kL(e);return t==jL||t==$L||typeof e.message=="string"&&typeof e.name=="string"&&!QL(e)}ay.exports=WL});var iy=u((k$,sy)=>{"use strict";var VL=wr(),KL=_e(),YL="[object WeakMap]";function HL(e){return KL(e)&&VL(e)==YL}sy.exports=HL});var py=u((F$,uy)=>{"use strict";function zL(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}uy.exports=zL});var gi=u((Q$,cy)=>{"use strict";var JL=bo(),XL=py(),ZL=wo(),eD=1,tD=2;function rD(e,t,r,n,a,o){var i=r&eD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var m=-1,y=!0,v=r&tD?new JL:void 0;for(o.set(e,t),o.set(t,e);++m<s;){var C=e[m],D=t[m];if(n)var L=i?n(D,C,m,t,e,o):n(C,D,m,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(v){if(!XL(t,function(U,k){if(!ZL(v,k)&&(C===U||a(C,U,r,n,o)))return v.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}cy.exports=rD});var dy=u(($$,ly)=>{"use strict";function nD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}ly.exports=nD});var hy=u((j$,yy)=>{"use strict";var fy=Ut(),gy=Po(),aD=tr(),oD=gi(),sD=dy(),iD=Xn(),uD=1,pD=2,cD="[object Boolean]",lD="[object Date]",dD="[object Error]",fD="[object Map]",gD="[object Number]",mD="[object RegExp]",yD="[object Set]",hD="[object String]",AD="[object Symbol]",ID="[object ArrayBuffer]",bD="[object DataView]",my=fy?fy.prototype:void 0,mi=my?my.valueOf:void 0;function SD(e,t,r,n,a,o,i){switch(r){case bD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case ID:return!(e.byteLength!=t.byteLength||!o(new gy(e),new gy(t)));case cD:case lD:case gD:return aD(+e,+t);case dD:return e.name==t.name&&e.message==t.message;case mD:case hD:return e==t+"";case fD:var s=sD;case yD:var c=n&uD;if(s||(s=iD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=pD,i.set(e,t);var d=oD(s(e),s(t),n,a,o,i);return i.delete(e),d;case AD:if(mi)return mi.call(e)==mi.call(t)}return!1}yy.exports=SD});var by=u((W$,Iy)=>{"use strict";var Ay=si(),wD=1,vD=Object.prototype,ED=vD.hasOwnProperty;function _D(e,t,r,n,a,o){var i=r&wD,s=Ay(e),c=s.length,f=Ay(t),d=f.length;if(c!=d&&!i)return!1;for(var m=c;m--;){var y=s[m];if(!(i?y in t:ED.call(t,y)))return!1}var v=o.get(e),C=o.get(t);if(v&&C)return v==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++m<c;){y=s[m];var U=e[y],k=t[y];if(n)var be=i?n(k,U,y,t,e,o):n(U,k,y,e,t,o);if(!(be===void 0?U===k||a(U,k,r,n,o):be)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}Iy.exports=_D});var Ty=u((V$,xy)=>{"use strict";var yi=on(),RD=gi(),xD=hy(),TD=by(),Sy=wr(),wy=de(),vy=ln(),OD=oa(),PD=1,Ey="[object Arguments]",_y="[object Array]",Ca="[object Object]",qD=Object.prototype,Ry=qD.hasOwnProperty;function CD(e,t,r,n,a,o){var i=wy(e),s=wy(t),c=i?_y:Sy(e),f=s?_y:Sy(t);c=c==Ey?Ca:c,f=f==Ey?Ca:f;var d=c==Ca,m=f==Ca,y=c==f;if(y&&vy(e)){if(!vy(t))return!1;i=!0,d=!1}if(y&&!d)return o||(o=new yi),i||OD(e)?RD(e,t,r,n,a,o):xD(e,t,c,r,n,a,o);if(!(r&PD)){var v=d&&Ry.call(e,"__wrapped__"),C=m&&Ry.call(t,"__wrapped__");if(v||C){var D=v?e.value():e,L=C?t.value():t;return o||(o=new yi),a(D,L,r,n,o)}}return y?(o||(o=new yi),TD(e,t,r,n,a,o)):!1}xy.exports=CD});var hi=u((K$,qy)=>{"use strict";var UD=Ty(),Oy=_e();function Py(e,t,r,n,a){return e===t?!0:e==null||t==null||!Oy(e)&&!Oy(t)?e!==e&&t!==t:UD(e,t,r,n,Py,a)}qy.exports=Py});var Uy=u((Y$,Cy)=>{"use strict";var LD=on(),DD=hi(),BD=1,ND=2;function MD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var m=new LD;if(n)var y=n(f,d,c,e,t,m);if(!(y===void 0?DD(d,f,BD|ND,n,m):y))return!1}}return!0}Cy.exports=MD});var Ai=u((H$,Ly)=>{"use strict";var GD=De();function kD(e){return e===e&&!GD(e)}Ly.exports=kD});var By=u((z$,Dy)=>{"use strict";var FD=Ai(),QD=br();function $D(e){for(var t=QD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,FD(a)]}return t}Dy.exports=$D});var Ii=u((J$,Ny)=>{"use strict";function jD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ny.exports=jD});var Gy=u((X$,My)=>{"use strict";var WD=Uy(),VD=By(),KD=Ii();function YD(e){var t=VD(e);return t.length==1&&t[0][2]?KD(t[0][0],t[0][1]):function(r){return r===e||WD(r,e,t)}}My.exports=YD});var Ua=u((Z$,ky)=>{"use strict";var HD=de(),zD=Ir(),JD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,XD=/^\w*$/;function ZD(e,t){if(HD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||zD(e)?!0:XD.test(e)||!JD.test(e)||t!=null&&e in Object(t)}ky.exports=ZD});var $y=u((ej,Qy)=>{"use strict";var Fy=zn(),eB="Expected a function";function bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(eB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(bi.Cache||Fy),r}bi.Cache=Fy;Qy.exports=bi});var Wy=u((tj,jy)=>{"use strict";var tB=$y(),rB=500;function nB(e){var t=tB(e,function(n){return r.size===rB&&r.clear(),n}),r=t.cache;return t}jy.exports=nB});var Si=u((rj,Vy)=>{"use strict";var aB=Wy(),oB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,sB=/\\(\\)?/g,iB=aB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(oB,function(r,n,a,o){t.push(a?o.replace(sB,"$1"):n||r)}),t});Vy.exports=iB});var wi=u((nj,Ky)=>{"use strict";function uB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}Ky.exports=uB});var Zy=u((aj,Xy)=>{"use strict";var Yy=Ut(),pB=wi(),cB=de(),lB=Ir(),dB=1/0,Hy=Yy?Yy.prototype:void 0,zy=Hy?Hy.toString:void 0;function Jy(e){if(typeof e=="string")return e;if(cB(e))return pB(e,Jy)+"";if(lB(e))return zy?zy.call(e):"";var t=e+"";return t=="0"&&1/e==-dB?"-0":t}Xy.exports=Jy});var vi=u((oj,eh)=>{"use strict";var fB=Zy();function gB(e){return e==null?"":fB(e)}eh.exports=gB});var Ei=u((sj,th)=>{"use strict";var mB=de(),yB=Ua(),hB=Si(),AB=vi();function IB(e,t){return mB(e)?e:yB(e,t)?[e]:hB(AB(e))}th.exports=IB});var vr=u((ij,rh)=>{"use strict";var bB=Ir(),SB=1/0;function wB(e){if(typeof e=="string"||bB(e))return e;var t=e+"";return t=="0"&&1/e==-SB?"-0":t}rh.exports=wB});var _i=u((uj,nh)=>{"use strict";var vB=Ei(),EB=vr();function _B(e,t){t=vB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[EB(t[r++])];return r&&r==n?e:void 0}nh.exports=_B});var oh=u((pj,ah)=>{"use strict";var RB=_i();function xB(e,t,r){var n=e==null?void 0:RB(e,t);return n===void 0?r:n}ah.exports=xB});var ih=u((cj,sh)=>{"use strict";function TB(e,t){return e!=null&&t in Object(e)}sh.exports=TB});var ph=u((lj,uh)=>{"use strict";var OB=Ei(),PB=Xr(),qB=de(),CB=gn(),UB=Zn(),LB=vr();function DB(e,t,r){t=OB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=LB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&UB(a)&&CB(i,a)&&(qB(e)||PB(e)))}uh.exports=DB});var lh=u((dj,ch)=>{"use strict";var BB=ih(),NB=ph();function MB(e,t){return e!=null&&NB(e,t,BB)}ch.exports=MB});var fh=u((fj,dh)=>{"use strict";var GB=hi(),kB=oh(),FB=lh(),QB=Ua(),$B=Ai(),jB=Ii(),WB=vr(),VB=1,KB=2;function YB(e,t){return QB(e)&&$B(t)?jB(WB(e),t):function(r){var n=kB(r,e);return n===void 0&&n===t?FB(r,e):GB(t,n,VB|KB)}}dh.exports=YB});var mh=u((gj,gh)=>{"use strict";function HB(e){return function(t){return t?.[e]}}gh.exports=HB});var hh=u((mj,yh)=>{"use strict";var zB=_i();function JB(e){return function(t){return zB(t,e)}}yh.exports=JB});var Ih=u((yj,Ah)=>{"use strict";var XB=mh(),ZB=hh(),eN=Ua(),tN=vr();function rN(e){return eN(e)?XB(tN(e)):ZB(e)}Ah.exports=rN});var Ri=u((hj,bh)=>{"use strict";var nN=Gy(),aN=fh(),oN=Zr(),sN=de(),iN=Ih();function uN(e){return typeof e=="function"?e:e==null?oN:typeof e=="object"?sN(e)?aN(e[0],e[1]):nN(e):iN(e)}bh.exports=uN});var wh=u((Aj,Sh)=>{"use strict";var pN=di(),cN=Ri(),lN=1;function dN(e){return cN(typeof e=="function"?e:pN(e,lN))}Sh.exports=dN});var Eh=u((Ij,vh)=>{"use strict";var fN=fo();function gN(e){var t=e==null?0:e.length;return t?fN(e,1):[]}vh.exports=gN});var Rh=u((bj,_h)=>{"use strict";var mN=Eh(),yN=go(),hN=Yn();function AN(e){return hN(yN(e,void 0,mN),e+"")}_h.exports=AN});var Th=u((Sj,xh)=>{"use strict";var IN=Oa(),bN=Rh(),SN=256,wN=bN(function(e,t){return IN(e,SN,void 0,void 0,void 0,t)});xh.exports=wN});var Ph=u((wj,Oh)=>{"use strict";var vN=wi(),EN=ir(),_N=de(),RN=Ir(),xN=Si(),TN=vr(),ON=vi();function PN(e){return _N(e)?vN(e,TN):RN(e)?[e]:EN(xN(ON(e)))}Oh.exports=PN});var Ch=u((vj,qh)=>{"use strict";qh.exports={ary:Vg(),assign:ri(),clone:ty(),curry:ny(),forEach:xa(),isArray:de(),isError:oy(),isFunction:en(),isWeakMap:iy(),iteratee:wh(),keys:ti(),rearg:Th(),toInteger:Js(),toPath:Ph()}});var Lh=u((Ej,Uh)=>{"use strict";var qN=Sf(),CN=Ch();function UN(e,t,r){return qN(CN,e,t,r)}Uh.exports=UN});var xi=u((_j,Bh)=>{"use strict";var LN=Lh(),Dh=LN("merge",Go());Dh.placeholder=Us();Bh.exports=Dh});var Fh=u((Ti,Oi)=>{"use strict";(function(e,t){typeof Ti=="object"&&typeof Oi<"u"?Oi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Ti,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",m="year",y="date",v="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(x){var S=["th","st","nd","rd"],h=x%100;return"["+x+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(x,S,h){var _=String(x);return!_||_.length>=S?x:""+Array(S+1-_.length).join(h)+x},k={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),b=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(b,2,"0")},m:function x(S,h){if(S.date()<h.date())return-x(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),b=S.clone().add(_,f),O=h-b<0,T=S.clone().add(_+(O?-1:1),f);return+(-(_+(h-b)/(O?b-T:T-b))||0)},a:function(x){return x<0?Math.ceil(x)||0:Math.floor(x)},p:function(x){return{M:f,y:m,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:d}[x]||String(x||"").toLowerCase().replace(/s$/,"")},u:function(x){return x===void 0}},be="en",ee={};ee[be]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Tt||!(!x||!x[ke])},ze=function x(S,h,_){var b;if(!S)return be;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(b=O),h&&(ee[O]=h,b=O);var T=S.split("-");if(!b&&T.length>1)return x(T[0])}else{var M=S.name;ee[M]=S,b=M}return!_&&b&&(be=b),b||!_&&be},W=function(x,S){if(He(x))return x.clone();var h=typeof S=="object"?S:{};return h.date=x,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(x,S){return W(x,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function x(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=x.prototype;return S.parse=function(h){this.$d=function(_){var b=_.date,O=_.utc;if(b===null)return new Date(NaN);if(B.u(b))return new Date;if(b instanceof Date)return new Date(b);if(typeof b=="string"&&!/Z$/i.test(b)){var T=b.match(C);if(T){var M=T[2]-1||0,Y=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)):new Date(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)}}return new Date(b)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==v},S.isSame=function(h,_){var b=W(h);return this.startOf(_)<=b&&b<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,b){return B.u(h)?this[_]:this.set(b,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var b=this,O=!!B.u(_)||_,T=B.p(h),M=function(I,E){var P=B.w(b.$u?Date.UTC(b.$y,E,I):new Date(b.$y,E,I),b);return O?P:P.endOf(s)},Y=function(I,E){return B.w(b.toDate()[I].apply(b.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),b)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case m:return O?M(1,0):M(31,11);case f:return O?M(1,ae):M(0,ae+1);case c:var w=this.$locale().weekStart||0,A=(X<w?X+7:X)-w;return M(O?F-A:F+(6-A),ae);case s:case y:return Y(qe+"Hours",0);case i:return Y(qe+"Minutes",1);case o:return Y(qe+"Seconds",2);case a:return Y(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var b,O=B.p(h),T="set"+(this.$u?"UTC":""),M=(b={},b[s]=T+"Date",b[y]=T+"Date",b[f]=T+"Month",b[m]=T+"FullYear",b[i]=T+"Hours",b[o]=T+"Minutes",b[a]=T+"Seconds",b[n]=T+"Milliseconds",b)[O],Y=O===s?this.$D+(_-this.$W):_;if(O===f||O===m){var X=this.clone().set(y,1);X.$d[M](Y),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](Y);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var b,O=this;h=Number(h);var T=B.p(_),M=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===f)return this.set(f,this.$M+h);if(T===m)return this.set(m,this.$y+h);if(T===s)return M(1);if(T===c)return M(7);var Y=(b={},b[o]=t,b[i]=r,b[a]=e,b)[T]||1,X=this.$d.getTime()+h*Y;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,b=this.$locale();if(!this.isValid())return b.invalidDate||v;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=b.weekdays,F=b.months,qe=b.meridiem,w=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},I=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return w(b.monthsShort,X,F,3);case"MMMM":return w(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return w(b.weekdaysMin,_.$W,ae,2);case"ddd":return w(b.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I(M,Y,!0);case"A":return I(M,Y,!1);case"m":return String(Y);case"mm":return B.s(Y,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,b){var O,T=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,F=function(){return B.m(T,Y)};switch(M){case m:O=F()/12;break;case f:O=F();break;case d:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return b?O:B.a(O)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var b=this.clone(),O=ze(h,_,!0);return O&&(b.$L=O),b},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},x}(),Cn=Tt.prototype;return W.prototype=Cn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",m],["$D",y]].forEach(function(x){Cn[x[1]]=function(S){return this.$g(S,x[0],x[1])}}),W.extend=function(x,S){return x.$i||(x(S,Tt,W),x.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(x){return W(1e3*x)},W.en=ee[be],W.Ls=ee,W.p={},W})});var XA=u((xW,JA)=>{"use strict";function oM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}JA.exports=oM});var eI=u((TW,ZA)=>{"use strict";var sM=To(),iM=br();function uM(e,t){return e&&sM(e,t,iM)}ZA.exports=uM});var rI=u((OW,tI)=>{"use strict";var pM=ar();function cM(e,t){return function(r,n){if(r==null)return r;if(!pM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}tI.exports=cM});var aI=u((PW,nI)=>{"use strict";var lM=eI(),dM=rI(),fM=dM(lM);nI.exports=fM});var sI=u((qW,oI)=>{"use strict";var gM=aI();function mM(e,t,r,n){return gM(e,function(a,o,i){t(n,a,r(a),i)}),n}oI.exports=mM});var uI=u((CW,iI)=>{"use strict";var yM=XA(),hM=sI(),AM=Ri(),IM=de();function bM(e,t){return function(r,n){var a=IM(r)?yM:hM,o=t?t():{};return a(r,e,AM(n,2),o)}}iI.exports=bM});var cI=u((UW,pI)=>{"use strict";var SM=sn(),wM=uI(),vM=Object.prototype,EM=vM.hasOwnProperty,_M=wM(function(e,t,r){EM.call(e,r)?e[r].push(t):SM(e,r,[t])});pI.exports=_M});var NM={};R(NM,{Method:()=>ja,ai:()=>Mi,api:()=>Ki,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,constants:()=>Vr,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>mf,licensing:()=>tt,logger:()=>$t,mappers:()=>ne,middleware:()=>Li,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,sdk:()=>Pi,users:()=>lt,utils:()=>Zt});module.exports=DI(NM);var ja=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(ja||{});var Pi={};R(Pi,{ai:()=>la,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>mf,licensing:()=>tt,logger:()=>$t,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,users:()=>lt,utils:()=>Zt});var ca={};R(ca,{getBrandingConfig:()=>Ox});var xe={};R(xe,{checkBackups:()=>Re,checkFeature:()=>ua,checkFeatures:()=>Yo,checkSCIM:()=>Xo,isAICustomConfigsEnabled:()=>xx,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>pa,isBackupsEnabled:()=>Ho,isBrandingEnabled:()=>zo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Od,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>Ex,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>vx,isUserGroupsEnabled:()=>Jo,isViewPermissionEnabled:()=>_x,isViewReadonlyColumnsEnabled:()=>Rx});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};R(tt,{cache:()=>Qe,client:()=>At,features:()=>jn,getFreeLicense:()=>Vo,getLicense:()=>Wo,keys:()=>Ko,offline:()=>sa,quotas:()=>Wn});var Qe={};R(Qe,{getCachedLicense:()=>xd,invalidate:()=>Td,refresh:()=>Lt});var Wa=require("@budibase/backend-core"),Tr,BI=async()=>{Tr=await new Wa.redis.Client(Wa.redis.utils.Databases.LICENSES).init()},NI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await NI()});var Va=async()=>(Tr||await BI(),Tr);var At={};R(At,{activateLicenseKey:()=>io,getLicense:()=>Jt,triggerQuota:()=>_b});var Xi=N(require("node-fetch"));var Zi=require("@budibase/backend-core"),Ka=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";Zi.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,Xi.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Ya=Ka;var $n=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ru,getCurrentUsageValues:()=>su,getQuotaUsage:()=>Ot,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};R(Pr,{generateBaseQuotaUsage:()=>Dn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>za,getBreakdownName:()=>Nn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Bn,setQuotaReset:()=>Ha});var ue=require("@budibase/types"),Ln=require("@budibase/backend-core"),eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ha=e=>{e.quotaReset=eu()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Dn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:Or()}}),za=()=>{let e={_id:Ln.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:eu(),...Dn(),apps:{}};return Bn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Bn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Nn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Ln.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Ln.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var GI=le.Duration.fromSeconds(60).toMs(),{Writethrough:kI}=le.cache.writethrough;function FI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ja=()=>new kI(le.tenancy.getGlobalDB(),GI),ru=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Ot=async()=>{let e=Ja(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Bn(t),Ha(t)}catch(r){if(r.status===404){t=za();let n=await e.put(t);t._rev=n.rev}else throw r}return FI(t)},nu=async(e,t,r)=>Za({name:t,type:r,values:{total:e}}),au=async(e,t,r)=>{let n=Ja(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=ou(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},QI=(e,t,r,n)=>{let a=Nn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Xa=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Dn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=Or(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=QI(f,c,n.id,a));break}}return e},tu=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,m=Nn(s,n);return m&&n&&c.breakdown?.[m]&&(d=c.breakdown[m]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},$I=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},jI=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},ou=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,$I(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,jI(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Xa(e,t,r,a,n)},Za=async e=>{let t=Array.isArray(e)?e:[e],r=Ja(),n=await Ot();for(let o of t)n=ou(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},su=async(e,t,r)=>{let n=await Ot(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=tu(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=tu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ue={};R(Ue,{destroy:()=>KI,get:()=>eo,save:()=>VI});var yt=require("@budibase/backend-core"),WI=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),VI=async e=>{let t=await eo();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},eo=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return WI();throw t}},KI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await eo();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};R(V,{bulkSave:()=>ob,destroy:()=>sb,fetch:()=>tb,generateUserGroupID:()=>ZI,get:()=>rb,getBulk:()=>nb,getByName:()=>to,getGroupUsers:()=>Gn,getGroupUsersParams:()=>lu,getUserGroupsParams:()=>cu,save:()=>ab});var $=require("@budibase/backend-core");var Fe=require("@budibase/types"),Yt=require("@budibase/backend-core");async function iu(){let e=Yt.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Yt.context.getAuditLogsDB(),r;try{r=await t.get(Yt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Mn=require("@budibase/backend-core"),{ViewName:YI,SEPARATOR:HI,DocumentType:zI,createView:JI}=Mn.db,XI=zI.USER+HI;async function uu(){let e=Mn.tenancy.getGlobalDB(),t=`function(doc) {
4
- if (doc._id.startsWith("${XI}") && Array.isArray(doc.userGroups)) {
3
+ `)}ng.exports=XO});var Ta=u((zQ,og)=>{"use strict";function ZO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}og.exports=ZO});var ig=u((JQ,sg)=>{"use strict";var eP=Ta(),tP=wo(),rP=1,nP=2,aP=8,oP=16,sP=32,iP=64,uP=128,pP=256,cP=512,lP=[["ary",uP],["bind",rP],["bindKey",nP],["curry",aP],["curryRight",oP],["flip",cP],["partial",sP],["partialRight",iP],["rearg",pP]];function dP(e,t){return eP(lP,function(r){var n="_."+r[0];t&r[1]&&!tP(e,n)&&e.push(n)}),e.sort()}sg.exports=dP});var Ks=u((XQ,ug)=>{"use strict";var fP=rg(),gP=ag(),mP=Hn(),yP=ig();function hP(e,t,r){var n=t+"";return mP(e,gP(n,yP(fP(n),r)))}ug.exports=hP});var Ys=u((ZQ,lg)=>{"use strict";var AP=Zf(),IP=Vs(),bP=Ks(),SP=1,wP=2,vP=4,EP=8,pg=32,cg=64;function _P(e,t,r,n,a,o,i,s,c,f){var d=t&EP,m=d?i:void 0,y=d?void 0:i,v=d?o:void 0,C=d?void 0:o;t|=d?pg:cg,t&=~(d?cg:pg),t&vP||(t&=~(SP|wP));var D=[e,t,a,v,m,C,y,s,c,f],L=r.apply(void 0,D);return AP(e)&&IP(L,D),L.placeholder=n,bP(L,e,t)}lg.exports=_P});var Hs=u((e$,dg)=>{"use strict";function RP(e){var t=e;return t.placeholder}dg.exports=RP});var gg=u((t$,fg)=>{"use strict";var xP=ir(),TP=gn(),OP=Math.min;function PP(e,t){for(var r=e.length,n=OP(t.length,r),a=xP(e);n--;){var o=t[n];e[n]=TP(o,r)?a[o]:void 0}return e}fg.exports=PP});var Oa=u((r$,yg)=>{"use strict";var mg="__lodash_placeholder__";function qP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===mg)&&(e[r]=mg,o[a++]=r)}return o}yg.exports=qP});var zs=u((n$,Ig)=>{"use strict";var CP=Fs(),UP=Qs(),LP=Bf(),hg=Rn(),DP=Ys(),BP=Hs(),NP=gg(),MP=Oa(),GP=Ae(),kP=1,FP=2,QP=8,$P=16,jP=128,WP=512;function Ag(e,t,r,n,a,o,i,s,c,f){var d=t&jP,m=t&kP,y=t&FP,v=t&(QP|$P),C=t&WP,D=y?void 0:hg(e);function L(){for(var U=arguments.length,k=Array(U),be=U;be--;)k[be]=arguments[be];if(v)var ee=BP(L),ke=LP(k,ee);if(n&&(k=CP(k,n,a,v)),o&&(k=UP(k,o,i,v)),U-=ke,v&&U<f){var He=MP(k,ee);return DP(e,t,Ag,L.placeholder,r,k,He,s,c,f-U)}var ze=m?r:this,W=y?ze[e]:e;return U=k.length,s?k=NP(k,s):C&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==GP&&this instanceof L&&(W=D||hg(W)),W.apply(ze,k)}return L}Ig.exports=Ag});var Sg=u((a$,bg)=>{"use strict";var VP=Yn(),KP=Rn(),YP=zs(),HP=Ys(),zP=Hs(),JP=Oa(),XP=Ae();function ZP(e,t,r){var n=KP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=zP(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:JP(i,c);if(o-=f.length,o<r)return HP(e,t,YP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==XP&&this instanceof a?n:e;return VP(d,this,i)}return a}bg.exports=ZP});var vg=u((o$,wg)=>{"use strict";var eq=Yn(),tq=Rn(),rq=Ae(),nq=1;function aq(e,t,r,n){var a=t&nq,o=tq(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,m=Array(d+c),y=this&&this!==rq&&this instanceof i?o:e;++f<d;)m[f]=n[f];for(;c--;)m[f++]=arguments[++s];return eq(y,a?r:this,m)}return i}wg.exports=aq});var Og=u((s$,Tg)=>{"use strict";var oq=Fs(),sq=Qs(),Eg=Oa(),_g="__lodash_placeholder__",Js=1,iq=2,uq=4,Rg=8,xn=128,xg=256,pq=Math.min;function cq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Js|iq|xn),i=n==xn&&r==Rg||n==xn&&r==xg&&e[7].length<=t[8]||n==(xn|xg)&&t[7].length<=t[8]&&r==Rg;if(!(o||i))return e;n&Js&&(e[2]=t[2],a|=r&Js?0:uq);var s=t[3];if(s){var c=e[3];e[3]=c?oq(c,s,t[4]):s,e[4]=c?Eg(e[3],_g):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?sq(c,s,t[6]):s,e[6]=c?Eg(e[5],_g):t[6]),s=t[7],s&&(e[7]=s),n&xn&&(e[8]=e[8]==null?t[8]:pq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Tg.exports=cq});var qg=u((i$,Pg)=>{"use strict";var lq=/\s/;function dq(e){for(var t=e.length;t--&&lq.test(e.charAt(t)););return t}Pg.exports=dq});var Ug=u((u$,Cg)=>{"use strict";var fq=qg(),gq=/^\s+/;function mq(e){return e&&e.slice(0,fq(e)+1).replace(gq,"")}Cg.exports=mq});var Ir=u((p$,Lg)=>{"use strict";var yq=It(),hq=_e(),Aq="[object Symbol]";function Iq(e){return typeof e=="symbol"||hq(e)&&yq(e)==Aq}Lg.exports=Iq});var Mg=u((c$,Ng)=>{"use strict";var bq=Ug(),Dg=De(),Sq=Ir(),Bg=0/0,wq=/^[-+]0x[0-9a-f]+$/i,vq=/^0b[01]+$/i,Eq=/^0o[0-7]+$/i,_q=parseInt;function Rq(e){if(typeof e=="number")return e;if(Sq(e))return Bg;if(Dg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=bq(e);var r=vq.test(e);return r||Eq.test(e)?_q(e.slice(2),r?2:8):wq.test(e)?Bg:+e}Ng.exports=Rq});var Fg=u((l$,kg)=>{"use strict";var xq=Mg(),Gg=1/0,Tq=17976931348623157e292;function Oq(e){if(!e)return e===0?e:0;if(e=xq(e),e===Gg||e===-Gg){var t=e<0?-1:1;return t*Tq}return e===e?e:0}kg.exports=Oq});var Xs=u((d$,Qg)=>{"use strict";var Pq=Fg();function qq(e){var t=Pq(e),r=t%1;return t===t?r?t-r:t:0}Qg.exports=qq});var Pa=u((f$,Kg)=>{"use strict";var Cq=ks(),Uq=Cf(),Lq=Sg(),Dq=zs(),Bq=vg(),Nq=$s(),Mq=Og(),Gq=Vs(),kq=Ks(),$g=Xs(),Fq="Expected a function",jg=1,Qq=2,Zs=8,ei=16,ti=32,Wg=64,Vg=Math.max;function $q(e,t,r,n,a,o,i,s){var c=t&Qq;if(!c&&typeof e!="function")throw new TypeError(Fq);var f=n?n.length:0;if(f||(t&=~(ti|Wg),n=a=void 0),i=i===void 0?i:Vg($g(i),0),s=s===void 0?s:$g(s),f-=a?a.length:0,t&Wg){var d=n,m=a;n=a=void 0}var y=c?void 0:Nq(e),v=[e,t,r,n,a,d,m,o,i,s];if(y&&Mq(v,y),e=v[0],t=v[1],r=v[2],n=v[3],a=v[4],s=v[9]=v[9]===void 0?c?0:e.length:Vg(v[9]-f,0),!s&&t&(Zs|ei)&&(t&=~(Zs|ei)),!t||t==jg)var C=Uq(e,t,r);else t==Zs||t==ei?C=Lq(e,t,s):(t==ti||t==(jg|ti))&&!a.length?C=Bq(e,t,r,n):C=Dq.apply(void 0,v);var D=y?Cq:Gq;return kq(D(C,v),e,t)}Kg.exports=$q});var Hg=u((g$,Yg)=>{"use strict";var jq=Pa(),Wq=128;function Vq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,jq(e,Wq,void 0,void 0,void 0,void 0,t)}Yg.exports=Vq});var Jg=u((m$,zg)=>{"use strict";var Kq=Uo(),Yq=Kq(Object.keys,Object);zg.exports=Yq});var ri=u((y$,Xg)=>{"use strict";var Hq=na(),zq=Jg(),Jq=Object.prototype,Xq=Jq.hasOwnProperty;function Zq(e){if(!Hq(e))return zq(e);var t=[];for(var r in Object(e))Xq.call(e,r)&&r!="constructor"&&t.push(r);return t}Xg.exports=Zq});var br=u((h$,Zg)=>{"use strict";var eC=Go(),tC=ri(),rC=ar();function nC(e){return rC(e)?eC(e):tC(e)}Zg.exports=nC});var ni=u((A$,em)=>{"use strict";var aC=cr(),oC=br();function sC(e,t){return e&&aC(t,oC(t),e)}em.exports=sC});var rm=u((I$,tm)=>{"use strict";var iC=cr(),uC=lr();function pC(e,t){return e&&iC(t,uC(t),e)}tm.exports=pC});var am=u((b$,nm)=>{"use strict";function cC(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}nm.exports=cC});var ai=u((S$,om)=>{"use strict";function lC(){return[]}om.exports=lC});var qa=u((w$,im)=>{"use strict";var dC=am(),fC=ai(),gC=Object.prototype,mC=gC.propertyIsEnumerable,sm=Object.getOwnPropertySymbols,yC=sm?function(e){return e==null?[]:(e=Object(e),dC(sm(e),function(t){return mC.call(e,t)}))}:fC;im.exports=yC});var pm=u((v$,um)=>{"use strict";var hC=cr(),AC=qa();function IC(e,t){return hC(e,AC(e),t)}um.exports=IC});var oi=u((E$,cm)=>{"use strict";var bC=Kn(),SC=ra(),wC=qa(),vC=ai(),EC=Object.getOwnPropertySymbols,_C=EC?function(e){for(var t=[];e;)bC(t,wC(e)),e=SC(e);return t}:vC;cm.exports=_C});var dm=u((_$,lm)=>{"use strict";var RC=cr(),xC=oi();function TC(e,t){return RC(e,xC(e),t)}lm.exports=TC});var si=u((R$,fm)=>{"use strict";var OC=Kn(),PC=de();function qC(e,t,r){var n=t(e);return PC(e)?n:OC(n,r(e))}fm.exports=qC});var ii=u((x$,gm)=>{"use strict";var CC=si(),UC=qa(),LC=br();function DC(e){return CC(e,LC,UC)}gm.exports=DC});var ym=u((T$,mm)=>{"use strict";var BC=si(),NC=oi(),MC=lr();function GC(e){return BC(e,MC,NC)}mm.exports=GC});var Am=u((O$,hm)=>{"use strict";var kC=bt(),FC=Ae(),QC=kC(FC,"DataView");hm.exports=QC});var bm=u((P$,Im)=>{"use strict";var $C=bt(),jC=Ae(),WC=$C(jC,"Promise");Im.exports=WC});var wr=u((q$,xm)=>{"use strict";var ui=Am(),pi=zn(),ci=bm(),li=Eo(),di=Ms(),Rm=It(),Sr=ho(),Sm="[object Map]",VC="[object Object]",wm="[object Promise]",vm="[object Set]",Em="[object WeakMap]",_m="[object DataView]",KC=Sr(ui),YC=Sr(pi),HC=Sr(ci),zC=Sr(li),JC=Sr(di),Qt=Rm;(ui&&Qt(new ui(new ArrayBuffer(1)))!=_m||pi&&Qt(new pi)!=Sm||ci&&Qt(ci.resolve())!=wm||li&&Qt(new li)!=vm||di&&Qt(new di)!=Em)&&(Qt=function(e){var t=Rm(e),r=t==VC?e.constructor:void 0,n=r?Sr(r):"";if(n)switch(n){case KC:return _m;case YC:return Sm;case HC:return wm;case zC:return vm;case JC:return Em}return t});xm.exports=Qt});var Om=u((C$,Tm)=>{"use strict";var XC=Object.prototype,ZC=XC.hasOwnProperty;function eU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&ZC.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Tm.exports=eU});var qm=u((U$,Pm)=>{"use strict";var tU=ta();function rU(e,t){var r=t?tU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Pm.exports=rU});var Um=u((L$,Cm)=>{"use strict";var nU=/\w*$/;function aU(e){var t=new e.constructor(e.source,nU.exec(e));return t.lastIndex=e.lastIndex,t}Cm.exports=aU});var Mm=u((D$,Nm)=>{"use strict";var Lm=Ut(),Dm=Lm?Lm.prototype:void 0,Bm=Dm?Dm.valueOf:void 0;function oU(e){return Bm?Object(Bm.call(e)):{}}Nm.exports=oU});var km=u((B$,Gm)=>{"use strict";var sU=ta(),iU=qm(),uU=Um(),pU=Mm(),cU=Co(),lU="[object Boolean]",dU="[object Date]",fU="[object Map]",gU="[object Number]",mU="[object RegExp]",yU="[object Set]",hU="[object String]",AU="[object Symbol]",IU="[object ArrayBuffer]",bU="[object DataView]",SU="[object Float32Array]",wU="[object Float64Array]",vU="[object Int8Array]",EU="[object Int16Array]",_U="[object Int32Array]",RU="[object Uint8Array]",xU="[object Uint8ClampedArray]",TU="[object Uint16Array]",OU="[object Uint32Array]";function PU(e,t,r){var n=e.constructor;switch(t){case IU:return sU(e);case lU:case dU:return new n(+e);case bU:return iU(e,r);case SU:case wU:case vU:case EU:case _U:case RU:case xU:case TU:case OU:return cU(e,r);case fU:return new n;case gU:case hU:return new n(e);case mU:return uU(e);case yU:return new n;case AU:return pU(e)}}Gm.exports=PU});var Qm=u((N$,Fm)=>{"use strict";var qU=wr(),CU=_e(),UU="[object Map]";function LU(e){return CU(e)&&qU(e)==UU}Fm.exports=LU});var Vm=u((M$,Wm)=>{"use strict";var DU=Qm(),BU=aa(),$m=oa(),jm=$m&&$m.isMap,NU=jm?BU(jm):DU;Wm.exports=NU});var Ym=u((G$,Km)=>{"use strict";var MU=wr(),GU=_e(),kU="[object Set]";function FU(e){return GU(e)&&MU(e)==kU}Km.exports=FU});var Xm=u((k$,Jm)=>{"use strict";var QU=Ym(),$U=aa(),Hm=oa(),zm=Hm&&Hm.isSet,jU=zm?$U(zm):QU;Jm.exports=jU});var fi=u((F$,ry)=>{"use strict";var WU=on(),VU=Ta(),KU=Mo(),YU=ni(),HU=rm(),zU=Po(),JU=ir(),XU=pm(),ZU=dm(),eL=ii(),tL=ym(),rL=wr(),nL=Om(),aL=km(),oL=Lo(),sL=de(),iL=ln(),uL=Vm(),pL=De(),cL=Xm(),lL=br(),dL=lr(),fL=1,gL=2,mL=4,Zm="[object Arguments]",yL="[object Array]",hL="[object Boolean]",AL="[object Date]",IL="[object Error]",ey="[object Function]",bL="[object GeneratorFunction]",SL="[object Map]",wL="[object Number]",ty="[object Object]",vL="[object RegExp]",EL="[object Set]",_L="[object String]",RL="[object Symbol]",xL="[object WeakMap]",TL="[object ArrayBuffer]",OL="[object DataView]",PL="[object Float32Array]",qL="[object Float64Array]",CL="[object Int8Array]",UL="[object Int16Array]",LL="[object Int32Array]",DL="[object Uint8Array]",BL="[object Uint8ClampedArray]",NL="[object Uint16Array]",ML="[object Uint32Array]",Q={};Q[Zm]=Q[yL]=Q[TL]=Q[OL]=Q[hL]=Q[AL]=Q[PL]=Q[qL]=Q[CL]=Q[UL]=Q[LL]=Q[SL]=Q[wL]=Q[ty]=Q[vL]=Q[EL]=Q[_L]=Q[RL]=Q[DL]=Q[BL]=Q[NL]=Q[ML]=!0;Q[IL]=Q[ey]=Q[xL]=!1;function Ca(e,t,r,n,a,o){var i,s=t&fL,c=t&gL,f=t&mL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!pL(e))return e;var d=sL(e);if(d){if(i=nL(e),!s)return JU(e,i)}else{var m=rL(e),y=m==ey||m==bL;if(iL(e))return zU(e,s);if(m==ty||m==Zm||y&&!a){if(i=c||y?{}:oL(e),!s)return c?ZU(e,HU(i,e)):XU(e,YU(i,e))}else{if(!Q[m])return a?e:{};i=aL(e,m,s)}}o||(o=new WU);var v=o.get(e);if(v)return v;o.set(e,i),cL(e)?e.forEach(function(L){i.add(Ca(L,t,r,L,e,o))}):uL(e)&&e.forEach(function(L,U){i.set(U,Ca(L,t,r,U,e,o))});var C=f?c?tL:eL:c?dL:lL,D=d?void 0:C(e);return VU(D||e,function(L,U){D&&(U=L,L=e[U]),KU(i,U,Ca(L,t,r,U,e,o))}),i}ry.exports=Ca});var ay=u((Q$,ny)=>{"use strict";var GL=fi(),kL=4;function FL(e){return GL(e,kL)}ny.exports=FL});var sy=u(($$,oy)=>{"use strict";var QL=Pa(),$L=8;function gi(e,t,r){t=r?void 0:t;var n=QL(e,$L,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=gi.placeholder,n}gi.placeholder={};oy.exports=gi});var uy=u((j$,iy)=>{"use strict";var jL=It(),WL=_e(),VL=Do(),KL="[object DOMException]",YL="[object Error]";function HL(e){if(!WL(e))return!1;var t=jL(e);return t==YL||t==KL||typeof e.message=="string"&&typeof e.name=="string"&&!VL(e)}iy.exports=HL});var cy=u((W$,py)=>{"use strict";var zL=wr(),JL=_e(),XL="[object WeakMap]";function ZL(e){return JL(e)&&zL(e)==XL}py.exports=ZL});var dy=u((V$,ly)=>{"use strict";function eD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}ly.exports=eD});var mi=u((K$,fy)=>{"use strict";var tD=So(),rD=dy(),nD=vo(),aD=1,oD=2;function sD(e,t,r,n,a,o){var i=r&aD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var m=-1,y=!0,v=r&oD?new tD:void 0;for(o.set(e,t),o.set(t,e);++m<s;){var C=e[m],D=t[m];if(n)var L=i?n(D,C,m,t,e,o):n(C,D,m,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(v){if(!rD(t,function(U,k){if(!nD(v,k)&&(C===U||a(C,U,r,n,o)))return v.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}fy.exports=sD});var my=u((Y$,gy)=>{"use strict";function iD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}gy.exports=iD});var by=u((H$,Iy)=>{"use strict";var yy=Ut(),hy=qo(),uD=tr(),pD=mi(),cD=my(),lD=Zn(),dD=1,fD=2,gD="[object Boolean]",mD="[object Date]",yD="[object Error]",hD="[object Map]",AD="[object Number]",ID="[object RegExp]",bD="[object Set]",SD="[object String]",wD="[object Symbol]",vD="[object ArrayBuffer]",ED="[object DataView]",Ay=yy?yy.prototype:void 0,yi=Ay?Ay.valueOf:void 0;function _D(e,t,r,n,a,o,i){switch(r){case ED:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case vD:return!(e.byteLength!=t.byteLength||!o(new hy(e),new hy(t)));case gD:case mD:case AD:return uD(+e,+t);case yD:return e.name==t.name&&e.message==t.message;case ID:case SD:return e==t+"";case hD:var s=cD;case bD:var c=n&dD;if(s||(s=lD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=fD,i.set(e,t);var d=pD(s(e),s(t),n,a,o,i);return i.delete(e),d;case wD:if(yi)return yi.call(e)==yi.call(t)}return!1}Iy.exports=_D});var vy=u((z$,wy)=>{"use strict";var Sy=ii(),RD=1,xD=Object.prototype,TD=xD.hasOwnProperty;function OD(e,t,r,n,a,o){var i=r&RD,s=Sy(e),c=s.length,f=Sy(t),d=f.length;if(c!=d&&!i)return!1;for(var m=c;m--;){var y=s[m];if(!(i?y in t:TD.call(t,y)))return!1}var v=o.get(e),C=o.get(t);if(v&&C)return v==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++m<c;){y=s[m];var U=e[y],k=t[y];if(n)var be=i?n(k,U,y,t,e,o):n(U,k,y,e,t,o);if(!(be===void 0?U===k||a(U,k,r,n,o):be)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}wy.exports=OD});var qy=u((J$,Py)=>{"use strict";var hi=on(),PD=mi(),qD=by(),CD=vy(),Ey=wr(),_y=de(),Ry=ln(),UD=sa(),LD=1,xy="[object Arguments]",Ty="[object Array]",Ua="[object Object]",DD=Object.prototype,Oy=DD.hasOwnProperty;function BD(e,t,r,n,a,o){var i=_y(e),s=_y(t),c=i?Ty:Ey(e),f=s?Ty:Ey(t);c=c==xy?Ua:c,f=f==xy?Ua:f;var d=c==Ua,m=f==Ua,y=c==f;if(y&&Ry(e)){if(!Ry(t))return!1;i=!0,d=!1}if(y&&!d)return o||(o=new hi),i||UD(e)?PD(e,t,r,n,a,o):qD(e,t,c,r,n,a,o);if(!(r&LD)){var v=d&&Oy.call(e,"__wrapped__"),C=m&&Oy.call(t,"__wrapped__");if(v||C){var D=v?e.value():e,L=C?t.value():t;return o||(o=new hi),a(D,L,r,n,o)}}return y?(o||(o=new hi),CD(e,t,r,n,a,o)):!1}Py.exports=BD});var Ai=u((X$,Ly)=>{"use strict";var ND=qy(),Cy=_e();function Uy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Cy(e)&&!Cy(t)?e!==e&&t!==t:ND(e,t,r,n,Uy,a)}Ly.exports=Uy});var By=u((Z$,Dy)=>{"use strict";var MD=on(),GD=Ai(),kD=1,FD=2;function QD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var m=new MD;if(n)var y=n(f,d,c,e,t,m);if(!(y===void 0?GD(d,f,kD|FD,n,m):y))return!1}}return!0}Dy.exports=QD});var Ii=u((ej,Ny)=>{"use strict";var $D=De();function jD(e){return e===e&&!$D(e)}Ny.exports=jD});var Gy=u((tj,My)=>{"use strict";var WD=Ii(),VD=br();function KD(e){for(var t=VD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,WD(a)]}return t}My.exports=KD});var bi=u((rj,ky)=>{"use strict";function YD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}ky.exports=YD});var Qy=u((nj,Fy)=>{"use strict";var HD=By(),zD=Gy(),JD=bi();function XD(e){var t=zD(e);return t.length==1&&t[0][2]?JD(t[0][0],t[0][1]):function(r){return r===e||HD(r,e,t)}}Fy.exports=XD});var La=u((aj,$y)=>{"use strict";var ZD=de(),eB=Ir(),tB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rB=/^\w*$/;function nB(e,t){if(ZD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||eB(e)?!0:rB.test(e)||!tB.test(e)||t!=null&&e in Object(t)}$y.exports=nB});var Vy=u((oj,Wy)=>{"use strict";var jy=Jn(),aB="Expected a function";function Si(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(aB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(Si.Cache||jy),r}Si.Cache=jy;Wy.exports=Si});var Yy=u((sj,Ky)=>{"use strict";var oB=Vy(),sB=500;function iB(e){var t=oB(e,function(n){return r.size===sB&&r.clear(),n}),r=t.cache;return t}Ky.exports=iB});var wi=u((ij,Hy)=>{"use strict";var uB=Yy(),pB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cB=/\\(\\)?/g,lB=uB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(pB,function(r,n,a,o){t.push(a?o.replace(cB,"$1"):n||r)}),t});Hy.exports=lB});var vi=u((uj,zy)=>{"use strict";function dB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}zy.exports=dB});var rh=u((pj,th)=>{"use strict";var Jy=Ut(),fB=vi(),gB=de(),mB=Ir(),yB=1/0,Xy=Jy?Jy.prototype:void 0,Zy=Xy?Xy.toString:void 0;function eh(e){if(typeof e=="string")return e;if(gB(e))return fB(e,eh)+"";if(mB(e))return Zy?Zy.call(e):"";var t=e+"";return t=="0"&&1/e==-yB?"-0":t}th.exports=eh});var Ei=u((cj,nh)=>{"use strict";var hB=rh();function AB(e){return e==null?"":hB(e)}nh.exports=AB});var _i=u((lj,ah)=>{"use strict";var IB=de(),bB=La(),SB=wi(),wB=Ei();function vB(e,t){return IB(e)?e:bB(e,t)?[e]:SB(wB(e))}ah.exports=vB});var vr=u((dj,oh)=>{"use strict";var EB=Ir(),_B=1/0;function RB(e){if(typeof e=="string"||EB(e))return e;var t=e+"";return t=="0"&&1/e==-_B?"-0":t}oh.exports=RB});var Ri=u((fj,sh)=>{"use strict";var xB=_i(),TB=vr();function OB(e,t){t=xB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[TB(t[r++])];return r&&r==n?e:void 0}sh.exports=OB});var uh=u((gj,ih)=>{"use strict";var PB=Ri();function qB(e,t,r){var n=e==null?void 0:PB(e,t);return n===void 0?r:n}ih.exports=qB});var ch=u((mj,ph)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}ph.exports=CB});var dh=u((yj,lh)=>{"use strict";var UB=_i(),LB=Xr(),DB=de(),BB=gn(),NB=ea(),MB=vr();function GB(e,t,r){t=UB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=MB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&NB(a)&&BB(i,a)&&(DB(e)||LB(e)))}lh.exports=GB});var gh=u((hj,fh)=>{"use strict";var kB=ch(),FB=dh();function QB(e,t){return e!=null&&FB(e,t,kB)}fh.exports=QB});var yh=u((Aj,mh)=>{"use strict";var $B=Ai(),jB=uh(),WB=gh(),VB=La(),KB=Ii(),YB=bi(),HB=vr(),zB=1,JB=2;function XB(e,t){return VB(e)&&KB(t)?YB(HB(e),t):function(r){var n=jB(r,e);return n===void 0&&n===t?WB(r,e):$B(t,n,zB|JB)}}mh.exports=XB});var Ah=u((Ij,hh)=>{"use strict";function ZB(e){return function(t){return t?.[e]}}hh.exports=ZB});var bh=u((bj,Ih)=>{"use strict";var eN=Ri();function tN(e){return function(t){return eN(t,e)}}Ih.exports=tN});var wh=u((Sj,Sh)=>{"use strict";var rN=Ah(),nN=bh(),aN=La(),oN=vr();function sN(e){return aN(e)?rN(oN(e)):nN(e)}Sh.exports=sN});var xi=u((wj,vh)=>{"use strict";var iN=Qy(),uN=yh(),pN=Zr(),cN=de(),lN=wh();function dN(e){return typeof e=="function"?e:e==null?pN:typeof e=="object"?cN(e)?uN(e[0],e[1]):iN(e):lN(e)}vh.exports=dN});var _h=u((vj,Eh)=>{"use strict";var fN=fi(),gN=xi(),mN=1;function yN(e){return gN(typeof e=="function"?e:fN(e,mN))}Eh.exports=yN});var xh=u((Ej,Rh)=>{"use strict";var hN=go();function AN(e){var t=e==null?0:e.length;return t?hN(e,1):[]}Rh.exports=AN});var Oh=u((_j,Th)=>{"use strict";var IN=xh(),bN=mo(),SN=Hn();function wN(e){return SN(bN(e,void 0,IN),e+"")}Th.exports=wN});var qh=u((Rj,Ph)=>{"use strict";var vN=Pa(),EN=Oh(),_N=256,RN=EN(function(e,t){return vN(e,_N,void 0,void 0,void 0,t)});Ph.exports=RN});var Uh=u((xj,Ch)=>{"use strict";var xN=vi(),TN=ir(),ON=de(),PN=Ir(),qN=wi(),CN=vr(),UN=Ei();function LN(e){return ON(e)?xN(e,CN):PN(e)?[e]:TN(qN(UN(e)))}Ch.exports=LN});var Dh=u((Tj,Lh)=>{"use strict";Lh.exports={ary:Hg(),assign:ni(),clone:ay(),curry:sy(),forEach:Ta(),isArray:de(),isError:uy(),isFunction:en(),isWeakMap:cy(),iteratee:_h(),keys:ri(),rearg:qh(),toInteger:Xs(),toPath:Uh()}});var Nh=u((Oj,Bh)=>{"use strict";var DN=Ef(),BN=Dh();function NN(e,t,r){return DN(BN,e,t,r)}Bh.exports=NN});var Ti=u((Pj,Gh)=>{"use strict";var MN=Nh(),Mh=MN("merge",ko());Mh.placeholder=Ls();Gh.exports=Mh});var jh=u((Oi,Pi)=>{"use strict";(function(e,t){typeof Oi=="object"&&typeof Pi<"u"?Pi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Oi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",m="year",y="date",v="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(x){var S=["th","st","nd","rd"],h=x%100;return"["+x+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(x,S,h){var _=String(x);return!_||_.length>=S?x:""+Array(S+1-_.length).join(h)+x},k={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),b=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(b,2,"0")},m:function x(S,h){if(S.date()<h.date())return-x(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),b=S.clone().add(_,f),O=h-b<0,T=S.clone().add(_+(O?-1:1),f);return+(-(_+(h-b)/(O?b-T:T-b))||0)},a:function(x){return x<0?Math.ceil(x)||0:Math.floor(x)},p:function(x){return{M:f,y:m,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:d}[x]||String(x||"").toLowerCase().replace(/s$/,"")},u:function(x){return x===void 0}},be="en",ee={};ee[be]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Tt||!(!x||!x[ke])},ze=function x(S,h,_){var b;if(!S)return be;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(b=O),h&&(ee[O]=h,b=O);var T=S.split("-");if(!b&&T.length>1)return x(T[0])}else{var M=S.name;ee[M]=S,b=M}return!_&&b&&(be=b),b||!_&&be},W=function(x,S){if(He(x))return x.clone();var h=typeof S=="object"?S:{};return h.date=x,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(x,S){return W(x,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function x(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=x.prototype;return S.parse=function(h){this.$d=function(_){var b=_.date,O=_.utc;if(b===null)return new Date(NaN);if(B.u(b))return new Date;if(b instanceof Date)return new Date(b);if(typeof b=="string"&&!/Z$/i.test(b)){var T=b.match(C);if(T){var M=T[2]-1||0,Y=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)):new Date(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)}}return new Date(b)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==v},S.isSame=function(h,_){var b=W(h);return this.startOf(_)<=b&&b<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,b){return B.u(h)?this[_]:this.set(b,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var b=this,O=!!B.u(_)||_,T=B.p(h),M=function(I,E){var P=B.w(b.$u?Date.UTC(b.$y,E,I):new Date(b.$y,E,I),b);return O?P:P.endOf(s)},Y=function(I,E){return B.w(b.toDate()[I].apply(b.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),b)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case m:return O?M(1,0):M(31,11);case f:return O?M(1,ae):M(0,ae+1);case c:var w=this.$locale().weekStart||0,A=(X<w?X+7:X)-w;return M(O?F-A:F+(6-A),ae);case s:case y:return Y(qe+"Hours",0);case i:return Y(qe+"Minutes",1);case o:return Y(qe+"Seconds",2);case a:return Y(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var b,O=B.p(h),T="set"+(this.$u?"UTC":""),M=(b={},b[s]=T+"Date",b[y]=T+"Date",b[f]=T+"Month",b[m]=T+"FullYear",b[i]=T+"Hours",b[o]=T+"Minutes",b[a]=T+"Seconds",b[n]=T+"Milliseconds",b)[O],Y=O===s?this.$D+(_-this.$W):_;if(O===f||O===m){var X=this.clone().set(y,1);X.$d[M](Y),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](Y);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var b,O=this;h=Number(h);var T=B.p(_),M=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===f)return this.set(f,this.$M+h);if(T===m)return this.set(m,this.$y+h);if(T===s)return M(1);if(T===c)return M(7);var Y=(b={},b[o]=t,b[i]=r,b[a]=e,b)[T]||1,X=this.$d.getTime()+h*Y;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,b=this.$locale();if(!this.isValid())return b.invalidDate||v;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=b.weekdays,F=b.months,qe=b.meridiem,w=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},I=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return w(b.monthsShort,X,F,3);case"MMMM":return w(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return w(b.weekdaysMin,_.$W,ae,2);case"ddd":return w(b.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I(M,Y,!0);case"A":return I(M,Y,!1);case"m":return String(Y);case"mm":return B.s(Y,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,b){var O,T=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,F=function(){return B.m(T,Y)};switch(M){case m:O=F()/12;break;case f:O=F();break;case d:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return b?O:B.a(O)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var b=this.clone(),O=ze(h,_,!0);return O&&(b.$L=O),b},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},x}(),Un=Tt.prototype;return W.prototype=Un,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",m],["$D",y]].forEach(function(x){Un[x[1]]=function(S){return this.$g(S,x[0],x[1])}}),W.extend=function(x,S){return x.$i||(x(S,Tt,W),x.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(x){return W(1e3*x)},W.en=ee[be],W.Ls=ee,W.p={},W})});var rI=u((BW,tI)=>{"use strict";function cM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}tI.exports=cM});var aI=u((NW,nI)=>{"use strict";var lM=Oo(),dM=br();function fM(e,t){return e&&lM(e,t,dM)}nI.exports=fM});var sI=u((MW,oI)=>{"use strict";var gM=ar();function mM(e,t){return function(r,n){if(r==null)return r;if(!gM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}oI.exports=mM});var uI=u((GW,iI)=>{"use strict";var yM=aI(),hM=sI(),AM=hM(yM);iI.exports=AM});var cI=u((kW,pI)=>{"use strict";var IM=uI();function bM(e,t,r,n){return IM(e,function(a,o,i){t(n,a,r(a),i)}),n}pI.exports=bM});var dI=u((FW,lI)=>{"use strict";var SM=rI(),wM=cI(),vM=xi(),EM=de();function _M(e,t){return function(r,n){var a=EM(r)?SM:wM,o=t?t():{};return a(r,e,vM(n,2),o)}}lI.exports=_M});var gI=u((QW,fI)=>{"use strict";var RM=sn(),xM=dI(),TM=Object.prototype,OM=TM.hasOwnProperty,PM=xM(function(e,t,r){OM.call(e,r)?e[r].push(t):RM(e,r,[t])});fI.exports=PM});var QM={};R(QM,{Method:()=>Wa,ai:()=>Gi,api:()=>zi,auditLogs:()=>vt,automations:()=>ha,backups:()=>Ne,branding:()=>la,constants:()=>Vr,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>Af,licensing:()=>tt,logger:()=>$t,mappers:()=>ne,middleware:()=>Di,plugins:()=>Aa,publicApi:()=>Sa,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,sdk:()=>qi,users:()=>lt,utils:()=>Zt});module.exports=GI(QM);var Wa=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Wa||{});var qi={};R(qi,{ai:()=>da,auditLogs:()=>vt,automations:()=>ha,backups:()=>Ne,branding:()=>la,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>Af,licensing:()=>tt,logger:()=>$t,plugins:()=>Aa,publicApi:()=>Sa,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,users:()=>lt,utils:()=>Zt});var la={};R(la,{getBrandingConfig:()=>Ux});var xe={};R(xe,{checkBackups:()=>Re,checkFeature:()=>pa,checkFeatures:()=>Ho,checkSCIM:()=>Zo,isAICustomConfigsEnabled:()=>qx,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>ca,isBackupsEnabled:()=>zo,isBrandingEnabled:()=>Jo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Cd,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>Tx,isSyncAutomationsEnabled:()=>Rx,isTriggerAutomationRunEnabled:()=>xx,isUserGroupsEnabled:()=>Xo,isViewPermissionEnabled:()=>Ox,isViewReadonlyColumnsEnabled:()=>Px});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};R(tt,{cache:()=>Qe,client:()=>At,features:()=>Wn,getFreeLicense:()=>Ko,getLicense:()=>Vo,keys:()=>Yo,offline:()=>ia,quotas:()=>Vn});var Qe={};R(Qe,{getCachedLicense:()=>Pd,invalidate:()=>qd,refresh:()=>Lt});var Va=require("@budibase/backend-core"),Tr,kI=async()=>{Tr=await new Va.redis.Client(Va.redis.utils.Databases.LICENSES).init()},FI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await FI()});var Ka=async()=>(Tr||await kI(),Tr);var At={};R(At,{activateLicenseKey:()=>uo,getLicense:()=>Jt,triggerQuota:()=>Ob});var tu=N(require("node-fetch"));var ru=require("@budibase/backend-core"),Ya=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";ru.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,tu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Ha=Ya;var jn=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ou,getCurrentUsageValues:()=>pu,getQuotaUsage:()=>Ot,setAllUsage:()=>eo,setAppUsageValue:()=>Za,setUsage:()=>su,setUsagePerApp:()=>iu,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};R(Pr,{generateBaseQuotaUsage:()=>Bn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>Ja,getBreakdownName:()=>Mn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Nn,setQuotaReset:()=>za});var ue=require("@budibase/types"),Dn=require("@budibase/backend-core"),nu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},za=e=>{e.quotaReset=nu()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Bn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:Or()}}),Ja=()=>{let e={_id:Dn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:nu(),...Bn(),apps:{}};return Nn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Nn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Mn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Dn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Dn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var $I=le.Duration.fromSeconds(60).toMs(),{Writethrough:jI}=le.cache.writethrough;function WI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Xa=()=>new jI(le.tenancy.getGlobalDB(),$I),ou=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Ot=async()=>{let e=Xa(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Nn(t),za(t)}catch(r){if(r.status===404){t=Ja();let n=await e.put(t);t._rev=n.rev}else throw r}return WI(t)},su=async(e,t,r)=>eo({name:t,type:r,values:{total:e}}),iu=async(e,t,r)=>{let n=Xa(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=uu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},VI=(e,t,r,n)=>{let a=Mn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Za=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Bn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=Or(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=VI(f,c,n.id,a));break}}return e},au=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,m=Mn(s,n);return m&&n&&c.breakdown?.[m]&&(d=c.breakdown[m]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},KI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},YI=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},uu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,KI(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,YI(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Za(e,t,r,a,n)},eo=async e=>{let t=Array.isArray(e)?e:[e],r=Xa(),n=await Ot();for(let o of t)n=uu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},pu=async(e,t,r)=>{let n=await Ot(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=au(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=au(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ue={};R(Ue,{destroy:()=>JI,get:()=>to,save:()=>zI});var yt=require("@budibase/backend-core"),HI=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),zI=async e=>{let t=await to();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},to=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return HI();throw t}},JI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await to();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};R(V,{bulkSave:()=>pb,destroy:()=>cb,fetch:()=>ob,generateUserGroupID:()=>nb,get:()=>sb,getBulk:()=>ib,getByName:()=>ro,getGroupUsers:()=>kn,getGroupUsersParams:()=>gu,getUserGroupsParams:()=>fu,save:()=>ub});var $=require("@budibase/backend-core");var Fe=require("@budibase/types"),Yt=require("@budibase/backend-core");async function cu(){let e=Yt.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Yt.context.getAuditLogsDB(),r;try{r=await t.get(Yt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Gn=require("@budibase/backend-core"),{ViewName:XI,SEPARATOR:ZI,DocumentType:eb,createView:tb}=Gn.db,rb=eb.USER+ZI;async function lu(){let e=Gn.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${rb}") && Array.isArray(doc.userGroups)) {
5
5
  for (let groupId of doc.userGroups) {
6
6
  emit("g_" + groupId, { email: doc.email, userId: doc._id })
7
7
  emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
8
8
  }
9
9
  }
10
- }`;await JI(e,t,YI.USER_BY_GROUP)}var pu=`${$.DocumentType.GROUP}${$.SEPARATOR}`;function cu(e,t={}){e||(e="");let r=e?.startsWith($.DocumentType.GROUP)?"":pu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${$.UNICODE_MAX}`}}function lu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${$.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${$.UNICODE_MAX}`,startkey_docid:n}}function ZI(){return`${pu}${$.utils.newid()}`}async function Gn(e,t){let r=$.tenancy.getGlobalDB();return(await $.db.queryView($.db.ViewName.USER_BY_GROUP,lu(e,t),r,uu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function qr(e){return e.users=await Gn(e._id),e}async function eb(e){let r=(await qr(e)).users?.map(o=>o._id),n=await $.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await $.users.bulkUpdateGlobalUsers(a)}async function du(){return(await $.tenancy.getGlobalDB().allDocs(cu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function tb(){let e=await du(),t=[];for(let r of e)t.push(qr(r));return await Promise.all(t)}async function rb(e){let r=await $.tenancy.getGlobalDB().get(e);return await qr(r)}async function nb(e,t={enriched:!0}){let n=await $.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(qr(o));return await Promise.all(a)}else return n}async function ab(e){return await $.tenancy.getGlobalDB().put(e)}async function ob(e){return await $.tenancy.getGlobalDB().bulkDocs(e)}async function sb(e,t){let r=$.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await eb(n),a}async function to(e){let t=e.toLowerCase(),n=(await du()).find(a=>a.name.toLowerCase()===t);if(n)return await qr(n)}var Le={};R(Le,{deleteAppBackupMetadata:()=>bb,fetchAppBackups:()=>hb,generateAppBackupID:()=>Ru,getAppBackupMetadata:()=>Sb,oldestBackupDate:()=>Eu,storeAppBackupMetadata:()=>Ab,updateAppBackupMetadata:()=>Ib});var z=require("@budibase/backend-core"),vu=require("@budibase/types");function Cr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Ht=require("@budibase/backend-core"),{ViewName:gu,AutomationViewMode:ro,SEPARATOR:Ze,DocumentType:mu,createView:yu}=Ht.db,ib=mu.AUTOMATION_LOG+Ze,fu=mu.APP_BACKUP+Ze;async function hu(){let e=Ht.context.getProdAppDB(),t=`function(doc) {
11
- if (doc._id.startsWith("${ib}")) {
10
+ }`;await tb(e,t,XI.USER_BY_GROUP)}var du=`${$.DocumentType.GROUP}${$.SEPARATOR}`;function fu(e,t={}){e||(e="");let r=e?.startsWith($.DocumentType.GROUP)?"":du;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${$.UNICODE_MAX}`}}function gu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${$.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${$.UNICODE_MAX}`,startkey_docid:n}}function nb(){return`${du}${$.utils.newid()}`}async function kn(e,t){let r=$.tenancy.getGlobalDB();return(await $.db.queryView($.db.ViewName.USER_BY_GROUP,gu(e,t),r,lu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function qr(e){return e.users=await kn(e._id),e}async function ab(e){let r=(await qr(e)).users?.map(o=>o._id),n=await $.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await $.users.bulkUpdateGlobalUsers(a)}async function mu(){return(await $.tenancy.getGlobalDB().allDocs(fu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function ob(){let e=await mu(),t=[];for(let r of e)t.push(qr(r));return await Promise.all(t)}async function sb(e){let r=await $.tenancy.getGlobalDB().get(e);return await qr(r)}async function ib(e,t={enriched:!0}){let n=await $.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(qr(o));return await Promise.all(a)}else return n}async function ub(e){return await $.tenancy.getGlobalDB().put(e)}async function pb(e){return await $.tenancy.getGlobalDB().bulkDocs(e)}async function cb(e,t){let r=$.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await ab(n),a}async function ro(e){let t=e.toLowerCase(),n=(await mu()).find(a=>a.name.toLowerCase()===t);if(n)return await qr(n)}var Le={};R(Le,{deleteAppBackupMetadata:()=>Eb,fetchAppBackups:()=>Sb,generateAppBackupID:()=>Ou,getAppBackupMetadata:()=>_b,oldestBackupDate:()=>xu,storeAppBackupMetadata:()=>wb,updateAppBackupMetadata:()=>vb});var z=require("@budibase/backend-core"),Ru=require("@budibase/types");function Cr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Ht=require("@budibase/backend-core"),{ViewName:hu,AutomationViewMode:no,SEPARATOR:Ze,DocumentType:Au,createView:Iu}=Ht.db,lb=Au.AUTOMATION_LOG+Ze,yu=Au.APP_BACKUP+Ze;async function bu(){let e=Ht.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${lb}")) {
12
12
  let autoId = doc.automationId + "${Ze}"
13
13
  let status = doc.status + "${Ze}"
14
- let autoKey = "${ro.AUTOMATION}${Ze}" + autoId + doc.createdAt
15
- let statusKey = "${ro.STATUS}${Ze}" + status + doc.createdAt
16
- let allKey = "${ro.ALL}${Ze}" + status + autoId + doc.createdAt
14
+ let autoKey = "${no.AUTOMATION}${Ze}" + autoId + doc.createdAt
15
+ let statusKey = "${no.STATUS}${Ze}" + status + doc.createdAt
16
+ let allKey = "${no.ALL}${Ze}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await yu(e,t,gu.AUTOMATION_LOGS)}async function Au(){let e=Ht.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${fu}") && doc.type && doc.trigger) {
21
+ }`;await Iu(e,t,hu.AUTOMATION_LOGS)}async function Su(){let e=Ht.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${yu}") && doc.type && doc.trigger) {
23
23
  let full = doc.appId + "${Ze}"
24
24
  full += doc.trigger.toLowerCase() + "${Ze}"
25
25
  full += doc.type.toLowerCase() + "${Ze}"
26
- emit("${fu}" + full + doc.timestamp)
26
+ emit("${yu}" + full + doc.timestamp)
27
27
  }
28
- }`;await yu(e,t,gu.APP_BACKUP_BY_TRIGGER)}var wu=require("@budibase/types");var Vr={};R(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Wr});var Ee={};R(Ee,{CLOUD_FREE_LICENSE:()=>pb,SELF_FREE_LICENSE:()=>no,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>cb});var ht=require("@budibase/types");var ut={};R(ut,{UNLIMITED:()=>ub,appBackupRetentionDays:()=>$r,apps:()=>Lr,automationLogRetentionDays:()=>Qr,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),ub=-1,Ur=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Dr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Br=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Nr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Gr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),kr=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Fr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Qr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),$r=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,pb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(200),...Fr(0)},static:{...Lr(te),...Ur(2e3),...Dr(5),...Br(5),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},no={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(0)},static:{...Ur(te),...Lr(te),...Dr(20),...Br(te),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},cb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(te)},static:{...Lr(te),...Ur(te),...Dr(te),...Br(te),...Nr(te),...Mr(te),...jr(te)}},constant:{...Qr(te),...$r(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Wr={};R(Wr,{getLicenseVersion:()=>lb,getProVersion:()=>bu});var Pt=require("@budibase/backend-core"),kn=N(require("fs")),Iu=N(require("path")),lb=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=Iu.default.join(Pt.objectStore.budibaseTempDir(),e);if(kn.default.existsSync(t))return kn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return kn.default.writeFileSync(t,r),r}}else return bu()},bu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};R(zt,{searchTable:()=>fb});var qt=require("@budibase/types"),Su=require("@budibase/backend-core");function fb(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:Su.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var gb=new Date(864e13).toISOString(),mb=1e3*60*60*24;async function Fn(e){let r=(await Qe.getCachedLicense()).quotas?.[wu.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(gb).toISOString():new Date(new Date().getTime()-mb*r).toISOString()}async function Eu(){return Fn(vu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var ao=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function yb(e,t,r={}){let n=await Eu(),a=z.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${z.db.SEPARATOR}${t.trigger}`;s+=`${z.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${z.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${z.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${ao}${o}${z.db.UNICODE_MAX}`,endkey:`${ao}${i}`}}async function _u(e,t){try{let r=z.db.getQueryIndex(z.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Au(),_u(e,t);throw r}}function Ru(e,t){return`${ao}${e}${z.db.SEPARATOR}${t}`}async function hb(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await yb(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await _u(r,o);let i=Cr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await z.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let d of i.data)f?._id===d.createdBy&&(d.createdBy=f);return i}async function Ab(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Ru(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=z.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function Ib(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function bb(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function Sb(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};R(Ct,{get:()=>vb,getCacheEnvVarID:()=>Ou,getEnvVarID:()=>Qn,update:()=>Eb});var $e=require("@budibase/backend-core"),Tu=N(require("lru-cache")),wb=1e3,xu=new Tu.default({max:wb});function Qn(){return $e.StaticDatabases.GLOBAL.docs.environmentVariables}function Ou(e){return`${$e.tenancy.getTenantId()}/${Qn()}/${e||""}`}async function vb(){let e=Qn(),t=$e.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Ou(r?._rev),o=xu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse($e.encryption.decrypt(r.variables,$e.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},xu.set(a,i),i}async function Eb(e){let t=Qn();return await $e.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:$e.encryption.encrypt(JSON.stringify(e.variables),$e.encryption.SecretOption.ENCRYPTION)})}var oo=new Ya(G.env.ACCOUNT_PORTAL_URL),so=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Pu=async e=>{let t,r;if(G.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[G.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=G.tenancy.getTenantId();r={[G.constants.Header.API_KEY]:G.env.ACCOUNT_PORTAL_API_KEY,[G.constants.Header.TENANT_ID]:n}}return e(r)},qu=async()=>Pu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await G.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,$n.StaticQuotaName.USERS,$n.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await oo.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await so(s);throw new G.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(G.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});G.env.isJest()&&(qu=jest.fn());var Jt=qu,_b=e=>Pu(async t=>{let r=await oo.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await so(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),io=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await oo.post("/api/license/activate",{headers:{[G.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new G.HTTPError("Invalid license key",400);if(n.status!==200){let a=await so(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var jo=require("@budibase/backend-core");var sa={};R(sa,{activateOfflineLicenseToken:()=>px,deleteOfflineLicenseToken:()=>cx,dev:()=>yn,enrichLicense:()=>wd,getIdentifier:()=>ko,getIdentifierBase64:()=>lx,getIdentifierFromBase64:()=>dx,getOfflineLicense:()=>Fo,getOfflineLicenseToken:()=>Id,signing:()=>Hr,verifyExpiry:()=>bd,verifyInstallation:()=>Sd});var Hr={};R(Hr,{sign:()=>xb,verifyLicenseToken:()=>Yr});var uo=N(require("jsonwebtoken")),Rb=`-----BEGIN PUBLIC KEY-----
28
+ }`;await Iu(e,t,hu.APP_BACKUP_BY_TRIGGER)}var _u=require("@budibase/types");var Vr={};R(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Wr});var Ee={};R(Ee,{CLOUD_FREE_LICENSE:()=>gb,SELF_FREE_LICENSE:()=>ao,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>mb});var ht=require("@budibase/types");var ut={};R(ut,{UNLIMITED:()=>fb,appBackupRetentionDays:()=>$r,apps:()=>Lr,automationLogRetentionDays:()=>Qr,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),fb=-1,Ur=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Dr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Br=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Nr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Gr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),kr=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Fr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Qr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),$r=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,gb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(200),...Fr(0)},static:{...Lr(te),...Ur(2e3),...Dr(5),...Br(5),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},ao={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(0)},static:{...Ur(te),...Lr(te),...Dr(20),...Br(te),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},mb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(te)},static:{...Lr(te),...Ur(te),...Dr(te),...Br(te),...Nr(te),...Mr(te),...jr(te)}},constant:{...Qr(te),...$r(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Wr={};R(Wr,{getLicenseVersion:()=>yb,getProVersion:()=>vu});var Pt=require("@budibase/backend-core"),Fn=N(require("fs")),wu=N(require("path")),yb=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=wu.default.join(Pt.objectStore.budibaseTempDir(),e);if(Fn.default.existsSync(t))return Fn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return Fn.default.writeFileSync(t,r),r}}else return vu()},vu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};R(zt,{searchTable:()=>hb});var qt=require("@budibase/types"),Eu=require("@budibase/backend-core");function hb(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:Eu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var Ab=new Date(864e13).toISOString(),Ib=1e3*60*60*24;async function Qn(e){let r=(await Qe.getCachedLicense()).quotas?.[_u.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(Ab).toISOString():new Date(new Date().getTime()-Ib*r).toISOString()}async function xu(){return Qn(Ru.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var oo=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function bb(e,t,r={}){let n=await xu(),a=z.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${z.db.SEPARATOR}${t.trigger}`;s+=`${z.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${z.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${z.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${oo}${o}${z.db.UNICODE_MAX}`,endkey:`${oo}${i}`}}async function Tu(e,t){try{let r=z.db.getQueryIndex(z.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Su(),Tu(e,t);throw r}}function Ou(e,t){return`${oo}${e}${z.db.SEPARATOR}${t}`}async function Sb(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await bb(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await Tu(r,o);let i=Cr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await z.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let d of i.data)f?._id===d.createdBy&&(d.createdBy=f);return i}async function wb(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Ou(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=z.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function vb(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Eb(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function _b(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};R(Ct,{get:()=>xb,getCacheEnvVarID:()=>Cu,getEnvVarID:()=>$n,update:()=>Tb});var $e=require("@budibase/backend-core"),qu=N(require("lru-cache")),Rb=1e3,Pu=new qu.default({max:Rb});function $n(){return $e.StaticDatabases.GLOBAL.docs.environmentVariables}function Cu(e){return`${$e.tenancy.getTenantId()}/${$n()}/${e||""}`}async function xb(){let e=$n(),t=$e.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Cu(r?._rev),o=Pu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse($e.encryption.decrypt(r.variables,$e.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Pu.set(a,i),i}async function Tb(e){let t=$n();return await $e.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:$e.encryption.encrypt(JSON.stringify(e.variables),$e.encryption.SecretOption.ENCRYPTION)})}var so=new Ha(G.env.ACCOUNT_PORTAL_URL),io=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Uu=async e=>{let t,r;if(G.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[G.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=G.tenancy.getTenantId();r={[G.constants.Header.API_KEY]:G.env.ACCOUNT_PORTAL_API_KEY,[G.constants.Header.TENANT_ID]:n}}return e(r)},Lu=async()=>Uu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await G.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,jn.StaticQuotaName.USERS,jn.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await so.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await io(s);throw new G.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(G.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});G.env.isJest()&&(Lu=jest.fn());var Jt=Lu,Ob=e=>Uu(async t=>{let r=await so.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await io(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),uo=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await so.post("/api/license/activate",{headers:{[G.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new G.HTTPError("Invalid license key",400);if(n.status!==200){let a=await io(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Wo=require("@budibase/backend-core");var ia={};R(ia,{activateOfflineLicenseToken:()=>fx,deleteOfflineLicenseToken:()=>gx,dev:()=>yn,enrichLicense:()=>_d,getIdentifier:()=>Fo,getIdentifierBase64:()=>mx,getIdentifierFromBase64:()=>yx,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>wd,signing:()=>Hr,verifyExpiry:()=>vd,verifyInstallation:()=>Ed});var Hr={};R(Hr,{sign:()=>qb,verifyLicenseToken:()=>Yr});var po=N(require("jsonwebtoken")),Pb=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,8 +34,20 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function Yr(e){return uo.default.verify(e,Rb,{algorithms:["RS256"]})}function xb(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var jn={};R(jn,{getFeatures:()=>po});var l=require("@budibase/types");var Tb={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS]},Ob={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI]};function po(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Tb);break;case l.Hosting.CLOUD:r=n(Ob);break}return r}var Wn={};R(Wn,{UNLIMITED:()=>g,getQuotas:()=>co});var K=require("@budibase/types");var p=ut,Cu=Ee,g=-1,zr=e=>e*1e6,Pb={[K.PlanType.FREE]:{...Cu.CLOUD_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},qb={[K.PlanType.FREE]:{...Cu.SELF_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:void 0,[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function co(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case K.Hosting.SELF:r=n(qb);break;case K.Hosting.CLOUD:r=n(Pb);break}return JSON.parse(JSON.stringify(r))}var Zt={};R(Zt,{appExists:()=>Cb,encoding:()=>Xt});var Uu=require("@budibase/backend-core");async function Cb(e){return(await Uu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Xt={};R(Xt,{base64ToObject:()=>Lb,objectToBase64:()=>Ub});function Ub(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Lb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var yd=require("@budibase/types"),dr=require("@budibase/backend-core"),hd=N(Hc()),Ad=N(Go());async function px(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function cx(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function Id(){return(await Ue.get()).offlineLicenseToken}async function ko(){let t=(await dr.installation.getInstall()).installId,r=dr.context.getTenantId(),n=await dr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function lx(){let e=await ko();return Xt.objectToBase64(e)}function dx(e){return Xt.base64ToObject(e)}function bd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Sd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function wd(e){let t=e.plan.type,r=yd.Hosting.SELF,n=po(r,t),a=co(r,t);return e.features=(0,hd.default)(e.features,n),e.quotas=(0,Ad.default)(e.quotas,a),e}async function Fo(){try{let e=await Id();if(e){let t=await Yr(e);return bd(t),await Sd(t),wd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};R(yn,{deleteDevLicense:()=>hx,getOfflineLicense:()=>mx,writeDevLicenseToDisk:()=>yx});var vd=require("@budibase/backend-core"),$o=require("path"),Ed=require("os"),Dt=N(require("fs"));var fx=vd.env.isTest()?".budibase-test":".budibase",Qo=(0,$o.join)((0,Ed.tmpdir)(),fx),gx="dev_license.txt",mn=(0,$o.join)(Qo,gx);if(!Dt.default.existsSync(Qo))try{Dt.default.mkdirSync(Qo)}catch{}function mx(){try{if(Dt.default.existsSync(mn)){let e=Dt.default.readFileSync(mn,{encoding:"utf-8"});return Yr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function yx(e){console.log(`Writing license to: ${mn}`),Dt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function hx(){Dt.default.rmSync(mn,{force:!0})}var Wo=async()=>{if(jo.env.OFFLINE_MODE)return Fo();let e=await Jt();return e||(e=yn.getOfflineLicense()),e},Vo=()=>jo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ko={};R(Ko,{activateLicenseKey:()=>Ax,deleteLicenseKey:()=>bx,getLicenseKey:()=>Ix});async function Ax(e){await io(e),await Ue.save({licenseKey:e}),await Lt()}async function Ix(){return(await Ue.get()).licenseKey}async function bx(){await Ue.save({licenseKey:void 0}),await Lt()}var hn=require("@budibase/backend-core"),ia=N(require("dd-trace")),_d=3600,Lt=async()=>{await Td(),await xd()},Rd=async(e,t)=>{let{populateLicense:r=Wo,populateFreeLicense:n=Vo}=t||{};return await ia.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Va(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ia.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ia.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:_d}),await i.store(o,s,_d),s)})};hn.env.isJest()&&(Rd=jest.fn());var xd=Rd,Td=async()=>{let e=hn.tenancy.getTenantId();await(await Va()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function ua(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Yo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await ua(fe.Feature.APP_BACKUPS),e(...t))}async function Ho(){return ge(fe.Feature.APP_BACKUPS)}async function zo(){return ge(fe.Feature.BRANDING)}async function Od(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function wx(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function vx(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function pa(){return ge(fe.Feature.AUDIT_LOGS)}async function Jo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function Ex(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Od())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var Xo=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function _x(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function Rx(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function xx(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var Tx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ox(e){return await zo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Tx}var la={};R(la,{enrichAIConfig:()=>Zo});var Px="budibase_ai";async function Zo(e){return await An()&&(e.config[Px]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Ve={};R(Ve,{addApp:()=>Dx,addAutomation:()=>Fx,addCustomAIConfig:()=>Qx,addGroup:()=>ts,addPlugin:()=>ns,addRow:()=>Nx,addRows:()=>Gx,addUsers:()=>fa,bustCache:()=>ru,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>su,getLicensedQuota:()=>qd,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>ss,incrementMany:()=>Nt,removeApp:()=>Bx,removeCustomAIConfig:()=>$x,removeCustomAIConfigs:()=>jx,removeGroup:()=>rs,removePlugin:()=>as,removeRow:()=>Mx,removeRows:()=>kx,removeUsers:()=>yr,set:()=>es,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,updatePluginCount:()=>os,updateUsage:()=>fr,usageLimitIsExceeded:()=>Lx,utils:()=>Pr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Pd({change:1,name:e,type:t,opts:r}),Nt=e=>Pd(e),Pd=async e=>{let t=Array.isArray(e)?e:[e];await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},je=(e,t,r={})=>fr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return fr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},es=async(e,t,r)=>Xe.setUsage(r,e,t),qx=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Cx=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},Ux=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await qx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===d)&&await Cx(t,n,c,o)}}else i[d]=void 0;return i},fr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await qd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:y,app:v,breakdown:C}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);y+=d.usageChange,v!=null&&(v+=d.usageChange),C!=null&&(C+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await Ux(d.type,d.name,y,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&y>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(y=Math.max(0,y),v&&(v=Math.max(0,v)),C&&(C=Math.max(0,C),s={...s,[d.name]:C}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(y=await L(),v=y),o={...o,[d.name]:y},i={...i,[d.name]:v}}}catch(y){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,y),y}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},qd=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Lx=async(e,t)=>{try{return await fr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var gr=require("@budibase/types"),Cd=require("@budibase/backend-core"),Ud=async()=>{let e=await Cd.db.getAllApps({dev:!0});return e?e.length:0},Dx=async(e,{appId:t}={})=>Te(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{fn:e,valueFn:Ud,id:t}),Bx=async({appId:e}={})=>je(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{valueFn:Ud,id:e});var rt=require("@budibase/types"),Nx=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),Mx=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),Gx=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),kx=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var da=require("@budibase/types"),Fx=async(e,{automationId:t}={})=>Te(da.MonthlyQuotaName.AUTOMATIONS,da.QuotaUsageType.MONTHLY,{fn:e,id:t});var mr=require("@budibase/types"),ts=async e=>Te(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC,{fn:e}),rs=async()=>je(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC);var St=require("@budibase/types"),ns=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),os=async e=>es(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),In=require("@budibase/backend-core");var fa=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:In.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}});let a=await Nt(n);return await Jt(),a},yr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}}),await Mt(r),await Jt()};var We=require("@budibase/types"),ss=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),Qx=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),$x=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),jx=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};R(lt,{addAppBuilder:()=>Hx,db:()=>at,removeAppBuilder:()=>zx});var Sn=require("@budibase/backend-core");var J={};R(J,{addAppBuilder:()=>ls,addUsers:()=>us,adjustGroupCreatorsQuotas:()=>Yx,cleanupApp:()=>Kx,enrichUserRolesFromGroups:()=>Vx,fetch:()=>bn,get:()=>kt,getBulk:()=>kd,getGroupBuilderAppIds:()=>Gd,getGroupRoleId:()=>Wx,remove:()=>is,removeAppBuilder:()=>ds,removeUsers:()=>ps,save:()=>hr,updateGroupApps:()=>cs});var q=require("@budibase/backend-core");var Ld=require("@budibase/backend-core"),ga=class extends Ld.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Nd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[q.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await q.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw q.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Md(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Gd(e,t){if(!e.userGroups)return[];let r=await Md(e.userGroups,t?.groups),n=t?.appId?q.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function Wx(e,t,r){if(!e.userGroups)return null;let n=await Md(e.userGroups,r?.groups),a=q.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Nd(n,t))}async function Vx(e){if(!e||!e.userGroups)return e;let t=await kd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await q.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Nd(t,a);o&&(e.roles[a]=o)});let n=await Gd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function bn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function kd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Dd(e){if(await V.getByName(e))throw new ga(e)}async function Bd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await q.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await q.userUtils.creatorsInList(n)).filter(o=>o).length}async function hr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Dd(e.name),t.push(q.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Dd(e.name),t.push(q.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Bd(o)),Object.values(e.roles).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(q.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ts(a);{let o=await a();if(n>0)await fa(0,n);else if(n<0){let i=await Bd(e),s=Math.abs(n)-i;s>0&&await yr(0,s)}return o}}async function is(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=q.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(v=>i.get(v._id)))).map(v=>({...v,userGroups:v.userGroups.filter(C=>C!==e)})),m=(await q.userUtils.creatorsInList(f)).filter(v=>v).length,y=s.length-m;y&&(a=()=>yr(0,y))}let o=await V.destroy(e,t);return await q.events.group.deleted(r),await rs(),await a(),o}async function us(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await q.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await q.userUtils.creatorsInList(a)).filter(m=>m).length,d=a.length-f;d&&await fa(0,d)}let s=[];for(let c of t)s.push(q.cache.user.invalidateUser(c));return await Promise.all(s),await q.events.group.usersAdded(o.length,r),o}async function ps(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await q.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await q.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await yr(0,f)}let i=[];for(let s of t)i.push(q.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await q.events.group.usersDeleted(a.length,r),a}async function cs(e,t){let r=await kt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await hr(r)}async function Kx(e){let t=await bn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function ls(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await hr(n))}async function ds(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await hr(n))}async function Yx(){if(!await Jo()){let e=q.tenancy.getGlobalDB(),r=(await bn()||[]).filter(n=>Object.values(n?.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(m=>m!==n._id)})),c=(await q.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await yr(0,f)}}}Sn.users.UserDB.init(Ve,J,xe);var at=Sn.users.UserDB;async function Hx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function zx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var ya={};R(ya,{logs:()=>bs});var bs={};R(bs,{logSearch:()=>oT,oldestLogDate:()=>Kd,storeLog:()=>sT});var Vd=require("@budibase/types"),ma=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var Fd=require("@budibase/backend-core");async function Qd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Fd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:Jx,DocumentType:$d,AutomationViewMode:fs,ViewName:Xx,getQueryIndex:Zx}=pe.db,eT=new Date(0).toISOString(),tT=100,gs=async()=>Fn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function jd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${fs.ALL}${dt}${i}${o}`:r?s=`${fs.STATUS}${dt}${i}`:n?s=`${fs.AUTOMATION}${dt}${o}`:s=`${$d.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${Jx}`,endkey:`${s}${e}`}}function ms(e){let t=wt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function rT(e,t,r){return`${$d.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function ys(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=jd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Cr(s,{paginate:r?.paginate,pageSize:9})}async function hs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=jd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(Zx(Xx.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await hu(),hs(e,t,r);throw o}return Cr(a,{paginate:!0,pageSize:9})}async function Wd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=ms(t),i=new Date().toISOString(),s=rT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function As(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Qd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function nT(){let e=await gs();try{return await ys(eT,e,{docs:!1,paginate:!1,limit:tT})}catch{return{data:[],hasNextPage:!1}}}async function Is(){let e=pe.context.getProdAppDB();try{let t=await nT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await As(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Kd=gs;async function aT(e,t,r,n){let a,o=new Date().toISOString(),i=await Kd();return(!e||e<i)&&(e=i),r||t?a=await hs(e,o,{automationId:r,status:t,page:n}):a=await ys(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function oT(e){return await Is(),await aT(e.startDate,e.status,e.automationId,e.page)}async function sT(e,t){if(!ma.db.isProdAppID(ma.context.getAppId()))return;let r=ms(t),n=await Wd(e,t);r===Vd.AutomationStatus.ERROR&&await As([n]),await Is()}var ha={};R(ha,{checkPluginQuotas:()=>pT,deletePlugin:()=>uT,storePlugin:()=>iT});var Jd=require("@budibase/types"),oe=require("@budibase/backend-core");var Yd=N(require("fs")),Hd=require("path");function zd(e,t){return Yd.default.readFileSync((0,Hd.join)(e,t),"utf8")}async function iT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Jd.PluginType.DATASOURCE){let js=zd(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ns(write)}async function uT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await as()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function pT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await os(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};R(ot,{fetch:()=>lT,fetchValues:()=>dT,isEncryptionKeyAvailable:()=>cT,isValid:()=>ef,remove:()=>gT,update:()=>fT});var wn=require("@budibase/types"),Xd=require("@budibase/backend-core");function cT(){return!!Xd.env.ENCRYPTION_KEY}async function lT(){let e=await Ct.get();return Object.keys(e.variables)}async function dT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function Zd(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function fT(e,t){if(ef(e))await Zd(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function gT(e){await Zd(t=>(delete t[e],t))}function ef(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};R(vt,{definitions:()=>_T,download:()=>ET,fetch:()=>vT,write:()=>ST});var Ia=require("@budibase/types");var re=require("@budibase/backend-core"),Ke=require("@budibase/types");var tf=require("memorystream"),rf=new re.sql.Sql(Ke.SqlClient.SQL_LITE);async function mT(e,t,r){let n={operation:Ke.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ke.SortOrder.DESCENDING,type:Ke.SortType.STRING}}},a=rf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function yT(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function nf(e){e._id||(e._id=yT(e.timestamp)),e.type||(e.type=Ke.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function Ss(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await mT(e,t,a),i=zt.searchTable(),s=rf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await hT(),await iu(),await Ss(e,t,{isRetry:!0});throw a}}async function hT(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ke.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function af(e){let t=re.context.getAuditLogsDB(),r=new tf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new tf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
38
- `;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Aa=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),IT=En.constants.MIN_VALID_DATE.toISOString(),bT=En.constants.MAX_VALID_DATE.toISOString();function ws(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||IT,e.endDate=e.endDate||bT),e}async function of(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=ws(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function vs(e,t,r){let n={_id:e,status:Aa.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Es(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function sf(e,t){let r=Aa.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=Es(r)),n}async function ST(e,t,r){if(!await pa()||!Se.utils.isAudited(e))return;let n=sf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Ia.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await nf(o)}async function wT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(m=>m?._id===s.userId),f=o.find(m=>Se.db.isSameAppID(m?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||vs(s.userId,"user",s.fallback)};s.appId&&(d.app=f||vs(s.appId,"app",s.fallback)),i.push(d)}return i}async function vT(e){if(!await pa())throw new Error("Audit logs not available - license required.");let t=await of(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ss(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await wT(r.rows)}}function ET(e){return e=ws(e),af(e)}function _T(){let e=Object.entries(Ia.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Es(r[1]);return t}var ba={};R(ba,{applications:()=>Ts,roles:()=>Rs,users:()=>_s});var _s={};R(_s,{roleCheck:()=>xT});function RT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function xT(e,t){return await ct()||RT(e,t),e}var Rs={};R(Rs,{assign:()=>TT,unAssign:()=>OT});var _n=require("@budibase/backend-core");async function TT(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await at.bulkUpdate(r)}async function OT(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Ts={};R(Ts,{buildExportFn:()=>qT,buildImportFn:()=>PT});var xs=require("@budibase/backend-core");function PT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await xs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function qT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await xs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var st=require("@budibase/backend-core"),Ie=require("@budibase/types");var Os=require("@budibase/backend-core"),uf;function pf(){uf=Os.queue.createQueue(Os.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return uf}var cf=require("path"),lf=N(require("fs"));async function Ps(e,t={}){return Le.storeAppBackupMetadata(e,t)}function df(e){let t=new Date().toISOString();switch(e){case Ie.AppBackupStatus.COMPLETE:case Ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function CT(e,t,r,n){let a=await Sa(e);return await Le.storeAppBackupMetadata({...a,...df(t),contents:r,status:t,type:Ie.AppBackupType.BACKUP},{filename:n,docId:e})}async function UT(e,t,r){let n=await Sa(e);return await Le.storeAppBackupMetadata({...n,...df(r),status:r,type:Ie.AppBackupType.RESTORE,trigger:Ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Sa(e){return Le.getAppBackupMetadata(e)}async function LT(e,t){return Le.updateAppBackupMetadata(e,t)}async function DT(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function BT(e,t){return Le.fetchAppBackups(e,t)}async function ff(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function NT(e){let{stream:t}=await ff(e),r=(0,cf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=lf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function MT(e,t,r={}){let n;try{n=await Ps({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,Ie.AppBackupType.BACKUP,t,r?.name),n.id}async function GT(e,t,r,n){let a=await Sa(t),o;try{o=await Ps({appId:e,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var kT={isEnabled:Ho,triggerAppRestore:Re(GT),triggerAppBackup:Re(MT),getBackupDownloadStream:Re(ff),downloadAppBackup:Re(NT),fetchAppBackups:Re(BT),storeAppBackupMetadata:Re(Ps),updateBackupStatus:Re(CT),updateRestoreStatus:Re(UT),getAppBackup:Re(Sa),updateAppBackup:Re(LT),deleteAppBackup:Re(DT)},ft=kT;var Cs={};R(Cs,{init:()=>qs});var se=require("@budibase/backend-core");var Ye=require("@budibase/types");var Ar=N(require("fs"));async function qs(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return $T(t,e);if(r.import)return QT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function FT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function gf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ye.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),d=`${o}/backup-${i}.tar.gz`,m=se.objectStore.ObjectStoreBuckets.BACKUPS,y=Ar.default.createReadStream(c);await se.objectStore.streamUpload({bucket:m,filename:d,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ye.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ar.default.existsSync(c)&&Ar.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ye.AppBackupStatus.FAILED)}}async function QT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ye.AppBackupStatus.STARTED);await gf(Ye.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await FT(c);let m=Ye.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(y){se.logging.logAlert("App restore error",y),m=Ye.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,m),Ar.default.existsSync(d)&&Ar.default.rmSync(d,{force:!0})})}async function $T(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ye.AppBackupStatus.STARTED);return gf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var jT=async e=>{pf(),await qs(e.processing)},Ne={...ft,processing:Cs,init:jT,getBackupQueue:Ft};var mf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};R(ve,{create:()=>NN,find:()=>BN,get:()=>DN,remove:()=>GN,update:()=>MN});var Nh=N(xi()),gt=require("@budibase/backend-core");var Mh=require("@budibase/types");async function DN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,Mh.SearchIndex.USER);r.setIndexBuilder(gt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function BN(e){return await gt.users.getById(e)}async function NN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,Nh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function MN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function GN(e){return await at.destroy(e)}var Er={};R(Er,{create:()=>kN});var Gh=N(xi());var kh=require("@budibase/backend-core");async function kN(e){let t=await to(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new kh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Gh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var $t={};R($t,{logRequest:()=>$N,logResponse:()=>jN});var Qh=N(Fh()),Et=require("@budibase/backend-core"),{DocWritethrough:FN}=Et.cache.docWritethrough;function QN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Qh.default)().format("YYYYMMDD")}`}var $h=async()=>{let e=Et.context.getScimDBName();return new FN(Et.db.getDB(e),QN())};async function $N(e){let t=Date.now().toString();return await(await $h()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function jN(e,t){await(await $h()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Li={};R(Li,{doInScimContext:()=>qi,feature:()=>H,internalGroupOnly:()=>Ba,licensing:()=>jh,requireSCIM:()=>Ci,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var _t=require("@budibase/backend-core");var La=require("@budibase/types"),WN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=no,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(La.StaticQuotaName.USERS,La.QuotaUsageType.STATIC)}return r()},jh=WN;var H={};R(H,{requireFeature:()=>VN,requireFeatures:()=>KN});var VN=e=>async(t,r)=>{await ua(e),await r()},KN=(...e)=>async(t,r)=>{await Yo(e),await r()};var Da=require("@budibase/backend-core");var qi=async(e,t)=>{let r;return Da.env.DISABLE_SCIM_CALLS||(r=await $t.logRequest({...e.request.toJSON(),body:e.request.body})),await Da.context.doInScimContext(async()=>{let n=await t();return r&&await $t.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Ci=async(e,t)=>{await Xo(),await t()};var Wh=require("@budibase/backend-core");var Tn=e=>Ui(Wh.users.getById,e,!0),On=e=>Ui(V.get,e,!0),Ba=e=>Ui(V.get,e,!1);function Ui(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var Ki={};R(Ki,{ai:()=>oA,appBackups:()=>jA,auditLogs:()=>LA,environmentVariables:()=>RA,groups:()=>hA,scim:()=>bI,users:()=>_I});var Mi={};R(Mi,{LargeLanguageModel:()=>Rr});var Xh=require("@budibase/backend-core"),Rt=require("@budibase/types"),Zh=require("@budibase/shared-core");var Di=N(require("openai"));function _r(e){return`Summarize this text:
37
+ `;function Yr(e){return po.default.verify(e,Pb,{algorithms:["RS256"]})}function qb(e,t){return po.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Wn={};R(Wn,{getFeatures:()=>co});var l=require("@budibase/types");var Cb={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS]},Ub={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI]};function co(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Cb);break;case l.Hosting.CLOUD:r=n(Ub);break}return r}var Vn={};R(Vn,{UNLIMITED:()=>g,getQuotas:()=>lo});var K=require("@budibase/types");var p=ut,Du=Ee,g=-1,zr=e=>e*1e6,Lb={[K.PlanType.FREE]:{...Du.CLOUD_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},Db={[K.PlanType.FREE]:{...Du.SELF_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:void 0,[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function lo(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case K.Hosting.SELF:r=n(Db);break;case K.Hosting.CLOUD:r=n(Lb);break}return JSON.parse(JSON.stringify(r))}var Zt={};R(Zt,{appExists:()=>Bb,encoding:()=>Xt});var Bu=require("@budibase/backend-core");async function Bb(e){return(await Bu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Xt={};R(Xt,{base64ToObject:()=>Mb,objectToBase64:()=>Nb});function Nb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Mb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Id=require("@budibase/types"),dr=require("@budibase/backend-core"),bd=N(Xc()),Sd=N(ko());async function fx(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function gx(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function wd(){return(await Ue.get()).offlineLicenseToken}async function Fo(){let t=(await dr.installation.getInstall()).installId,r=dr.context.getTenantId(),n=await dr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function mx(){let e=await Fo();return Xt.objectToBase64(e)}function yx(e){return Xt.base64ToObject(e)}function vd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Ed(e){let t=await Fo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function _d(e){let t=e.plan.type,r=Id.Hosting.SELF,n=co(r,t),a=lo(r,t);return e.features=(0,bd.default)(e.features,n),e.quotas=(0,Sd.default)(e.quotas,a),e}async function Qo(){try{let e=await wd();if(e){let t=await Yr(e);return vd(t),await Ed(t),_d(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};R(yn,{deleteDevLicense:()=>Sx,getOfflineLicense:()=>Ix,writeDevLicenseToDisk:()=>bx});var Rd=require("@budibase/backend-core"),jo=require("path"),xd=require("os"),Dt=N(require("fs"));var hx=Rd.env.isTest()?".budibase-test":".budibase",$o=(0,jo.join)((0,xd.tmpdir)(),hx),Ax="dev_license.txt",mn=(0,jo.join)($o,Ax);if(!Dt.default.existsSync($o))try{Dt.default.mkdirSync($o)}catch{}function Ix(){try{if(Dt.default.existsSync(mn)){let e=Dt.default.readFileSync(mn,{encoding:"utf-8"});return Yr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function bx(e){console.log(`Writing license to: ${mn}`),Dt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function Sx(){Dt.default.rmSync(mn,{force:!0})}var Vo=async()=>{if(Wo.env.OFFLINE_MODE)return Qo();let e=await Jt();return e||(e=yn.getOfflineLicense()),e},Ko=()=>Wo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Yo={};R(Yo,{activateLicenseKey:()=>wx,deleteLicenseKey:()=>Ex,getLicenseKey:()=>vx});async function wx(e){await uo(e),await Ue.save({licenseKey:e}),await Lt()}async function vx(){return(await Ue.get()).licenseKey}async function Ex(){await Ue.save({licenseKey:void 0}),await Lt()}var hn=require("@budibase/backend-core"),ua=N(require("dd-trace")),Td=3600,Lt=async()=>{await qd(),await Pd()},Od=async(e,t)=>{let{populateLicense:r=Vo,populateFreeLicense:n=Ko}=t||{};return await ua.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ua.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ua.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Td}),await i.store(o,s,Td),s)})};hn.env.isJest()&&(Od=jest.fn());var Pd=Od,qd=async()=>{let e=hn.tenancy.getTenantId();await(await Ka()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function pa(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Ho(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await pa(fe.Feature.APP_BACKUPS),e(...t))}async function zo(){return ge(fe.Feature.APP_BACKUPS)}async function Jo(){return ge(fe.Feature.BRANDING)}async function Cd(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function Rx(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function xx(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function ca(){return ge(fe.Feature.AUDIT_LOGS)}async function Xo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function Tx(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Cd())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var Zo=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Ox(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function Px(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function qx(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var Cx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ux(e){return await Jo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Cx}var da={};R(da,{enrichAIConfig:()=>es});var Lx="budibase_ai";async function es(e){return await An()&&(e.config[Lx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Ve={};R(Ve,{addApp:()=>Gx,addAutomation:()=>Wx,addCustomAIConfig:()=>Vx,addGroup:()=>rs,addPlugin:()=>as,addRow:()=>Fx,addRows:()=>$x,addUsers:()=>ga,bustCache:()=>ou,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>pu,getLicensedQuota:()=>Ld,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>is,incrementMany:()=>Nt,removeApp:()=>kx,removeCustomAIConfig:()=>Kx,removeCustomAIConfigs:()=>Yx,removeGroup:()=>ns,removePlugin:()=>os,removeRow:()=>Qx,removeRows:()=>jx,removeUsers:()=>yr,set:()=>ts,setAllUsage:()=>eo,setAppUsageValue:()=>Za,setUsage:()=>su,setUsagePerApp:()=>iu,updatePluginCount:()=>ss,updateUsage:()=>fr,usageLimitIsExceeded:()=>Mx,utils:()=>Pr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Ud({change:1,name:e,type:t,opts:r}),Nt=e=>Ud(e),Ud=async e=>{let t=Array.isArray(e)?e:[e];await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},je=(e,t,r={})=>fr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return fr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},ts=async(e,t,r)=>Xe.setUsage(r,e,t),Dx=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Bx=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},Nx=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Dx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===d)&&await Bx(t,n,c,o)}}else i[d]=void 0;return i},fr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await Ld(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:y,app:v,breakdown:C}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);y+=d.usageChange,v!=null&&(v+=d.usageChange),C!=null&&(C+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await Nx(d.type,d.name,y,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&y>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(y=Math.max(0,y),v&&(v=Math.max(0,v)),C&&(C=Math.max(0,C),s={...s,[d.name]:C}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(y=await L(),v=y),o={...o,[d.name]:y},i={...i,[d.name]:v}}}catch(y){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,y),y}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},Ld=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Mx=async(e,t)=>{try{return await fr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var gr=require("@budibase/types"),Dd=require("@budibase/backend-core"),Bd=async()=>{let e=await Dd.db.getAllApps({dev:!0});return e?e.length:0},Gx=async(e,{appId:t}={})=>Te(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{fn:e,valueFn:Bd,id:t}),kx=async({appId:e}={})=>je(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{valueFn:Bd,id:e});var rt=require("@budibase/types"),Fx=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),Qx=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),$x=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),jx=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var fa=require("@budibase/types"),Wx=async(e,{automationId:t}={})=>Te(fa.MonthlyQuotaName.AUTOMATIONS,fa.QuotaUsageType.MONTHLY,{fn:e,id:t});var mr=require("@budibase/types"),rs=async e=>Te(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC,{fn:e}),ns=async()=>je(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC);var St=require("@budibase/types"),as=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),os=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),ss=async e=>ts(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),In=require("@budibase/backend-core");var ga=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:In.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}});let a=await Nt(n);return await Jt(),a},yr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}}),await Mt(r),await Jt()};var We=require("@budibase/types"),is=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),Vx=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),Kx=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),Yx=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};R(lt,{addAppBuilder:()=>Zx,db:()=>at,removeAppBuilder:()=>eT});var Sn=require("@budibase/backend-core");var J={};R(J,{addAppBuilder:()=>ds,addUsers:()=>ps,adjustGroupCreatorsQuotas:()=>Xx,cleanupApp:()=>Jx,enrichUserRolesFromGroups:()=>zx,fetch:()=>bn,get:()=>kt,getBulk:()=>$d,getGroupBuilderAppIds:()=>Qd,getGroupRoleId:()=>Hx,remove:()=>us,removeAppBuilder:()=>fs,removeUsers:()=>cs,save:()=>hr,updateGroupApps:()=>ls});var q=require("@budibase/backend-core");var Nd=require("@budibase/backend-core"),ma=class extends Nd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function kd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[q.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await q.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw q.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Fd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Qd(e,t){if(!e.userGroups)return[];let r=await Fd(e.userGroups,t?.groups),n=t?.appId?q.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function Hx(e,t,r){if(!e.userGroups)return null;let n=await Fd(e.userGroups,r?.groups),a=q.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await kd(n,t))}async function zx(e){if(!e||!e.userGroups)return e;let t=await $d(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await q.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await kd(t,a);o&&(e.roles[a]=o)});let n=await Qd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function bn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function $d(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Md(e){if(await V.getByName(e))throw new ma(e)}async function Gd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await q.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await q.userUtils.creatorsInList(n)).filter(o=>o).length}async function hr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Md(e.name),t.push(q.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Md(e.name),t.push(q.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Gd(o)),Object.values(e.roles).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(q.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await rs(a);{let o=await a();if(n>0)await ga(0,n);else if(n<0){let i=await Gd(e),s=Math.abs(n)-i;s>0&&await yr(0,s)}return o}}async function us(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=q.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(v=>i.get(v._id)))).map(v=>({...v,userGroups:v.userGroups.filter(C=>C!==e)})),m=(await q.userUtils.creatorsInList(f)).filter(v=>v).length,y=s.length-m;y&&(a=()=>yr(0,y))}let o=await V.destroy(e,t);return await q.events.group.deleted(r),await ns(),await a(),o}async function ps(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await q.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await q.userUtils.creatorsInList(a)).filter(m=>m).length,d=a.length-f;d&&await ga(0,d)}let s=[];for(let c of t)s.push(q.cache.user.invalidateUser(c));return await Promise.all(s),await q.events.group.usersAdded(o.length,r),o}async function cs(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await q.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await q.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await yr(0,f)}let i=[];for(let s of t)i.push(q.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await q.events.group.usersDeleted(a.length,r),a}async function ls(e,t){let r=await kt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await hr(r)}async function Jx(e){let t=await bn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function ds(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await hr(n))}async function fs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await hr(n))}async function Xx(){if(!await Xo()){let e=q.tenancy.getGlobalDB(),r=(await bn()||[]).filter(n=>Object.values(n?.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(m=>m!==n._id)})),c=(await q.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await yr(0,f)}}}Sn.users.UserDB.init(Ve,J,xe);var at=Sn.users.UserDB;async function Zx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function eT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var ha={};R(ha,{logs:()=>Ss});var Ss={};R(Ss,{logSearch:()=>pT,oldestLogDate:()=>zd,storeLog:()=>cT});var Hd=require("@budibase/types"),ya=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var jd=require("@budibase/backend-core");async function Wd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||jd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:tT,DocumentType:Vd,AutomationViewMode:gs,ViewName:rT,getQueryIndex:nT}=pe.db,aT=new Date(0).toISOString(),oT=100,ms=async()=>Qn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Kd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${gs.ALL}${dt}${i}${o}`:r?s=`${gs.STATUS}${dt}${i}`:n?s=`${gs.AUTOMATION}${dt}${o}`:s=`${Vd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${tT}`,endkey:`${s}${e}`}}function ys(e){let t=wt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function sT(e,t,r){return`${Vd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function hs(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Kd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Cr(s,{paginate:r?.paginate,pageSize:9})}async function As(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Kd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(nT(rT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await bu(),As(e,t,r);throw o}return Cr(a,{paginate:!0,pageSize:9})}async function Yd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=ys(t),i=new Date().toISOString(),s=sT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function Is(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Wd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function iT(){let e=await ms();try{return await hs(aT,e,{docs:!1,paginate:!1,limit:oT})}catch{return{data:[],hasNextPage:!1}}}async function bs(){let e=pe.context.getProdAppDB();try{let t=await iT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Is(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var zd=ms;async function uT(e,t,r,n){let a,o=new Date().toISOString(),i=await zd();return(!e||e<i)&&(e=i),r||t?a=await As(e,o,{automationId:r,status:t,page:n}):a=await hs(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function pT(e){return await bs(),await uT(e.startDate,e.status,e.automationId,e.page)}async function cT(e,t){if(!ya.db.isProdAppID(ya.context.getAppId()))return;let r=ys(t),n=await Yd(e,t);r===Hd.AutomationStatus.ERROR&&await Is([n]),await bs()}var Aa={};R(Aa,{checkPluginQuotas:()=>fT,deletePlugin:()=>dT,storePlugin:()=>lT});var ef=require("@budibase/types"),oe=require("@budibase/backend-core");var Jd=N(require("fs")),Xd=require("path");function Zd(e,t){return Jd.default.readFileSync((0,Xd.join)(e,t),"utf8")}async function lT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===ef.PluginType.DATASOURCE){let js=Zd(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await as(write)}async function dT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await os()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function fT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ss(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};R(ot,{fetch:()=>mT,fetchValues:()=>yT,isEncryptionKeyAvailable:()=>gT,isValid:()=>nf,remove:()=>AT,update:()=>hT});var wn=require("@budibase/types"),tf=require("@budibase/backend-core");function gT(){return!!tf.env.ENCRYPTION_KEY}async function mT(){let e=await Ct.get();return Object.keys(e.variables)}async function yT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function rf(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function hT(e,t){if(nf(e))await rf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function AT(e){await rf(t=>(delete t[e],t))}function nf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};R(vt,{definitions:()=>OT,download:()=>TT,fetch:()=>xT,write:()=>_T});var ba=require("@budibase/types");var re=require("@budibase/backend-core"),Ke=require("@budibase/types");var af=require("memorystream"),of=new re.sql.Sql(Ke.SqlClient.SQL_LITE);async function IT(e,t,r){let n={operation:Ke.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ke.SortOrder.DESCENDING,type:Ke.SortType.STRING}}},a=of._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function bT(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function sf(e){e._id||(e._id=bT(e.timestamp)),e.type||(e.type=Ke.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function ws(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await IT(e,t,a),i=zt.searchTable(),s=of.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await ST(),await cu(),await ws(e,t,{isRetry:!0});throw a}}async function ST(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ke.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function uf(e){let t=re.context.getAuditLogsDB(),r=new af,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new af;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
38
+ `;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Ia=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),vT=En.constants.MIN_VALID_DATE.toISOString(),ET=En.constants.MAX_VALID_DATE.toISOString();function vs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||vT,e.endDate=e.endDate||ET),e}async function pf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=vs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Es(e,t,r){let n={_id:e,status:Ia.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function _s(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function cf(e,t){let r=Ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=_s(r)),n}async function _T(e,t,r){if(!await ca()||!Se.utils.isAudited(e))return;let n=cf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||ba.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await sf(o)}async function RT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(m=>m?._id===s.userId),f=o.find(m=>Se.db.isSameAppID(m?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||Es(s.userId,"user",s.fallback)};s.appId&&(d.app=f||Es(s.appId,"app",s.fallback)),i.push(d)}return i}async function xT(e){if(!await ca())throw new Error("Audit logs not available - license required.");let t=await pf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ws(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await RT(r.rows)}}function TT(e){return e=vs(e),uf(e)}function OT(){let e=Object.entries(ba.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=_s(r[1]);return t}var Sa={};R(Sa,{applications:()=>Os,roles:()=>xs,users:()=>Rs});var Rs={};R(Rs,{roleCheck:()=>qT});function PT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function qT(e,t){return await ct()||PT(e,t),e}var xs={};R(xs,{assign:()=>CT,unAssign:()=>UT});var _n=require("@budibase/backend-core");async function CT(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await at.bulkUpdate(r)}async function UT(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Os={};R(Os,{buildExportFn:()=>DT,buildImportFn:()=>LT});var Ts=require("@budibase/backend-core");function LT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Ts.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function DT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Ts.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var st=require("@budibase/backend-core"),Ie=require("@budibase/types");var Ps=require("@budibase/backend-core"),lf;function df(){lf=Ps.queue.createQueue(Ps.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return lf}var ff=require("path"),gf=N(require("fs"));async function qs(e,t={}){return Le.storeAppBackupMetadata(e,t)}function mf(e){let t=new Date().toISOString();switch(e){case Ie.AppBackupStatus.COMPLETE:case Ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function BT(e,t,r,n){let a=await wa(e);return await Le.storeAppBackupMetadata({...a,...mf(t),contents:r,status:t,type:Ie.AppBackupType.BACKUP},{filename:n,docId:e})}async function NT(e,t,r){let n=await wa(e);return await Le.storeAppBackupMetadata({...n,...mf(r),status:r,type:Ie.AppBackupType.RESTORE,trigger:Ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function wa(e){return Le.getAppBackupMetadata(e)}async function MT(e,t){return Le.updateAppBackupMetadata(e,t)}async function GT(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function kT(e,t){return Le.fetchAppBackups(e,t)}async function yf(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function FT(e){let{stream:t}=await yf(e),r=(0,ff.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=gf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function QT(e,t,r={}){let n;try{n=await qs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,Ie.AppBackupType.BACKUP,t,r?.name),n.id}async function $T(e,t,r,n){let a=await wa(t),o;try{o=await qs({appId:e,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var jT={isEnabled:zo,triggerAppRestore:Re($T),triggerAppBackup:Re(QT),getBackupDownloadStream:Re(yf),downloadAppBackup:Re(FT),fetchAppBackups:Re(kT),storeAppBackupMetadata:Re(qs),updateBackupStatus:Re(BT),updateRestoreStatus:Re(NT),getAppBackup:Re(wa),updateAppBackup:Re(MT),deleteAppBackup:Re(GT)},ft=jT;var Us={};R(Us,{init:()=>Cs});var se=require("@budibase/backend-core");var Ye=require("@budibase/types");var Ar=N(require("fs"));async function Cs(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return KT(t,e);if(r.import)return VT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function WT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function hf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ye.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),d=`${o}/backup-${i}.tar.gz`,m=se.objectStore.ObjectStoreBuckets.BACKUPS,y=Ar.default.createReadStream(c);await se.objectStore.streamUpload({bucket:m,filename:d,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ye.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ar.default.existsSync(c)&&Ar.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ye.AppBackupStatus.FAILED)}}async function VT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ye.AppBackupStatus.STARTED);await hf(Ye.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await WT(c);let m=Ye.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(y){se.logging.logAlert("App restore error",y),m=Ye.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,m),Ar.default.existsSync(d)&&Ar.default.rmSync(d,{force:!0})})}async function KT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ye.AppBackupStatus.STARTED);return hf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var YT=async e=>{df(),await Cs(e.processing)},Ne={...ft,processing:Us,init:YT,getBackupQueue:Ft};var Af=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};R(ve,{create:()=>FN,find:()=>kN,get:()=>GN,remove:()=>$N,update:()=>QN});var kh=N(Ti()),gt=require("@budibase/backend-core");var Fh=require("@budibase/types");async function GN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,Fh.SearchIndex.USER);r.setIndexBuilder(gt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function kN(e){return await gt.users.getById(e)}async function FN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,kh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function QN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function $N(e){return await at.destroy(e)}var Er={};R(Er,{create:()=>jN});var Qh=N(Ti());var $h=require("@budibase/backend-core");async function jN(e){let t=await ro(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new $h.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Qh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var $t={};R($t,{logRequest:()=>KN,logResponse:()=>YN});var Wh=N(jh()),Et=require("@budibase/backend-core"),{DocWritethrough:WN}=Et.cache.docWritethrough;function VN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Wh.default)().format("YYYYMMDD")}`}var Vh=async()=>{let e=Et.context.getScimDBName();return new WN(Et.db.getDB(e),VN())};async function KN(e){let t=Date.now().toString();return await(await Vh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function YN(e,t){await(await Vh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Di={};R(Di,{doInScimContext:()=>Ci,feature:()=>H,internalGroupOnly:()=>Na,licensing:()=>Kh,requireSCIM:()=>Ui,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var _t=require("@budibase/backend-core");var Da=require("@budibase/types"),HN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=ao,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(Da.StaticQuotaName.USERS,Da.QuotaUsageType.STATIC)}return r()},Kh=HN;var H={};R(H,{requireFeature:()=>zN,requireFeatures:()=>JN});var zN=e=>async(t,r)=>{await pa(e),await r()},JN=(...e)=>async(t,r)=>{await Ho(e),await r()};var Ba=require("@budibase/backend-core");var Ci=async(e,t)=>{let r;return Ba.env.DISABLE_SCIM_CALLS||(r=await $t.logRequest({...e.request.toJSON(),body:e.request.body})),await Ba.context.doInScimContext(async()=>{let n=await t();return r&&await $t.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Ui=async(e,t)=>{await Zo(),await t()};var Yh=require("@budibase/backend-core");var Tn=e=>Li(Yh.users.getById,e,!0),On=e=>Li(V.get,e,!0),Na=e=>Li(V.get,e,!1);function Li(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var zi={};R(zi,{ai:()=>pA,appBackups:()=>YA,auditLogs:()=>MA,environmentVariables:()=>PA,groups:()=>SA,scim:()=>EI,users:()=>OI});var nA=require("@budibase/types");var Gi={};R(Gi,{LargeLanguageModel:()=>Rr});var tA=require("@budibase/backend-core"),Rt=require("@budibase/types"),rA=require("@budibase/shared-core");var Bi=N(require("openai"));function _r(e){return`Summarize this text:
39
39
  ${e}.
40
- Only return the summary.`}function Vh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function Kh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function Yh(e){return`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
41
- ${e}`}function Hh(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function zh(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function Jh(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Di.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Di.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var Bi=N(require("@anthropic-ai/sdk"));var Ma=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Bi.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Bi.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var HN={OpenAI:jt,Anthropic:Ma,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Ni(e,t){return t.map(r=>e[r]).join(" ")}var Rr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await Xh.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={config:{}});let n=await Zo(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=HN[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return _r(Ni(r,t.columns));case Rt.AIOperationEnum.CLEAN_DATA:return Kh(r[t.column]);case Rt.AIOperationEnum.TRANSLATE:return Hh(r[t.column],t.language);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Vh(Ni(r,t.columns),t.categories.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return zh(r[t.column]);case Rt.AIOperationEnum.PROMPT:return t.prompt;case Rt.AIOperationEnum.SEARCH_WEB:return Jh(Ni(r,t.columns));default:throw Zh.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await ss(r.tokensUsed||0),r.message}};async function eA(e){let{prompt:t}=e.request.body,n=await(await Rr.forCurrentTenant("gpt-4o-mini")).run(Yh(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}var tA=require("@budibase/types"),rA=N(require("@koa/router")),nA=require("@budibase/backend-core"),aA=new rA.default;aA.post("/api/ai/cron",H.requireFeature(tA.Feature.BUDIBASE_AI),nA.auth.builderOrAdmin,eA);var oA=aA;async function sA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await hr(t);e.body={_id:r.id,_rev:r.rev}}async function iA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await us(t,r)),n&&(o=await ps(t,n)),e.body={added:a,removed:o}}async function uA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await cs(t,{appsToAdd:r,appsToRemove:n})}async function pA(e){e.body={data:await bn()}}async function cA(e){let{groupId:t,rev:r}=e.params;try{await is(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function lA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function dA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Gn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function fA(e){let{groupId:t,appId:r}=e.params;await ls(t,r),e.body={message:"Group app builder access updated."}}async function gA(e){let{groupId:t,appId:r}=e.params;await ds(t,r),e.body={message:"group app builder access removed."}}var mA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),yA=new mA.default;function XN(){return it.auth.joiValidator.body(Oe.default.object({_id:Oe.default.string().optional(),_rev:Oe.default.string().optional(),color:Oe.default.string().required(),icon:Oe.default.string().required(),name:Oe.default.string().trim().required().max(50),role:Oe.default.string().optional(),users:Oe.default.array().optional(),apps:Oe.default.array().optional(),roles:Oe.default.object().optional(),createdAt:Oe.default.string().optional(),updatedAt:Oe.default.string().optional()}).required())}yA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),XN(),sA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),pA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ba("groupId"),cA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,lA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,dA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ba("groupId"),iA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),uA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),fA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),gA);var hA=yA;var Gi=require("@budibase/types");var ki=require("@budibase/backend-core");async function AA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function IA(e){e.body={variables:await ot.fetch()}}async function bA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Gi.AppEnvironment.PRODUCTION];r!==n&&a.push(Gi.AppEnvironment.DEVELOPMENT),await ki.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function SA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function wA(e){let t=e.params.varName;await ot.remove(t),await ki.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Wt=require("@budibase/backend-core"),EA=N(require("@koa/router")),Pn=N(require("joi")),_A=new EA.default;function vA(){return Wt.auth.joiValidator.body(Pn.default.object({name:Pn.default.string().optional(),production:Pn.default.string().required(),development:Pn.default.string().required()}))}_A.get("/api/env/variables/status",Wt.auth.builderOrAdmin,AA).get("/api/env/variables",Wt.auth.builderOrAdmin,IA).post("/api/env/variables",Wt.auth.builderOrAdmin,vA(),bA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,vA(),SA).delete("/api/env/variables/:varName",Wt.auth.builderOrAdmin,wA);var RA=_A;var Fi=require("@budibase/backend-core");async function xA(e){let t=e.request.body,r=await vt.fetch(t);await Fi.events.auditLog.filtered(t),e.body=r}async function TA(e){let t=e.request.body,{stream:r}=vt.download(t);await Fi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function OA(e){e.body={events:vt.definitions()}}var qA=require("@budibase/types"),Vt=require("@budibase/backend-core"),CA=N(require("@koa/router")),Ge=N(require("joi"));function PA(){return Vt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(qA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var UA=new CA.default;UA.post("/api/global/auditlogs/search",Vt.auth.adminOnly,PA(),xA).get("/api/global/auditlogs/download",Vt.auth.adminOnly,Vt.middleware.querystringToBody,PA(),TA).get("/api/global/auditlogs/definitions",Vt.auth.adminOnly,OA);var LA=UA;var Qi=require("@budibase/types");var DA=require("@budibase/backend-core");async function xr(e,t){await Zt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function BA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Qi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function NA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await DA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function MA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function GA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Qi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function kA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function FA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var QA=N(require("@koa/router")),Kt=N(require("joi")),Ga=require("@budibase/types"),xt=require("@budibase/backend-core"),$A=new QA.default;function rM(){return xt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Ga.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Ga.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}$A.post("/api/apps/:appId/backups",xt.auth.builderOrAdmin,BA).post("/api/apps/:appId/backups/search",xt.auth.builderOrAdmin,rM(),GA).get("/api/apps/:appId/backups/:backupId/file",xt.auth.builderOrAdmin,FA).patch("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,kA).delete("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,MA).post("/api/apps/:appId/backups/:backupId/import",xt.auth.builderOrAdmin,NA);var jA=$A;var II=N(require("@koa/router"));var ka=require("scim-patch");var VA=require("@budibase/backend-core");function WA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var KA=async e=>{let t=WA(e,"pageSize")??20,r=WA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},YA=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},HA=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof VA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function nM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var zA=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,ka.patchBodyValidation)(n)}catch{}if(nM(n))return $i(e);let a;try{a=(0,ka.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},$i=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var lI=N(cI()),dI=require("@budibase/shared-core"),Fa=require("scim-patch");var Qa=require("scim2-parse-filter");function fI(e,t){for(let r of t.split(","))delete e[r]}var gI=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Qa.filter)((0,Qa.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{fI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},mI=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await Er.create(t);e.body=ne.group.toScimGroupResponse(r)},yI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&fI(n,a),e.body=n},hI=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},AI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Fa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,lI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Fa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let m of d)s.push(await ve.find(m.value));break;case"remove":case"Remove":for(let m of d)c.push(await ve.find(m.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:dI.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var qn=require("@budibase/types"),Pe=new II.default({prefix:"/api/global/scim/v2"});Pe.use(Ci);Pe.use(qi);Pe.get("/users",KA);Pe.get("/users/:id",Tn("id"),YA);Pe.post("/users",HA);Pe.patch("/users/:id",Tn("id"),zA);Pe.delete("/users/:id",Tn("id"),$i);Pe.get("/groups",gI);Pe.post("/groups",H.requireFeature(qn.Feature.USER_GROUPS),mI);Pe.get("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),yI);Pe.delete("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),hI);Pe.patch("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),AI);var bI=Pe;var vI=N(require("@koa/router"));var ji=require("@budibase/backend-core");async function SI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function wI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Wi=require("@budibase/types"),Vi=require("@budibase/backend-core"),EI=new vI.default;EI.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),SI).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),wI);var _I=EI;var ne={};R(ne,{group:()=>Hi,user:()=>Yi});var Yi={};R(Yi,{fromScimUser:()=>CM,toScimUserResponse:()=>OM,userFilters:()=>UM});var $a=require("@budibase/types"),RI=require("scim2-parse-filter"),xI=require("@budibase/backend-core"),TI=require("@budibase/shared-core"),{unreachable:TM}=TI.utils,OM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===$a.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},PM=e=>!!e?.id;function qM(e){if(xI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var CM=e=>{let t=PM(e)?e:void 0,r=qM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:TM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?$a.UserStatus.ACTIVE:$a.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},UM=e=>{let t={equal:{}},r=(0,RI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Hi={};R(Hi,{fromScimGroup:()=>BM,toScimGroupResponse:()=>LM});var LM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),DM=e=>!!e?.id,BM=e=>{let t=DM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
40
+ Only return the summary.`}function Hh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function zh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function Jh(e){return`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
41
+ ${e}`}function Xh(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function Zh(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function eA(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Bi.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Bi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var Ni=N(require("@anthropic-ai/sdk"));var Ga=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Ni.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Ni.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var ZN={OpenAI:jt,Anthropic:Ga,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Mi(e,t){return t.map(r=>e[r]).join(" ")}var Rr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await tA.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={config:{}});let n=await es(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=ZN[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return _r(Mi(r,t.columns));case Rt.AIOperationEnum.CLEAN_DATA:return zh(r[t.column]);case Rt.AIOperationEnum.TRANSLATE:return Xh(r[t.column],t.language);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Hh(Mi(r,t.columns),t.categories.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return Zh(r[t.column]);case Rt.AIOperationEnum.PROMPT:return t.prompt;case Rt.AIOperationEnum.SEARCH_WEB:return eA(Mi(r,t.columns));default:throw rA.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await is(r.tokensUsed||0),r.message}};var Pn=require("@budibase/backend-core"),aA=N(require("openai"));async function oA(e){let{prompt:t}=e.request.body,n=await(await Rr.forCurrentTenant("gpt-4o-mini")).run(Jh(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}var eM=/```(?:\w+)?\n([\s\S]+?)\n```/;async function sA(e){await Pn.features.isEnabled(nA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Pn.env.OPENAI_API_KEY||e.throw(500,"OpenAI API key is not set");let t=new aA.default({apiKey:Pn.env.OPENAI_API_KEY}),{prompt:r}=e.request.body,a=(await t.chat.completions.create({model:"gpt-4o",messages:[{role:"system",content:`
42
+ You are a helpful expert in writing JavaScript. A user is asking you for help
43
+ writing some JavaScript for their application.
44
+
45
+ Your reply MUST only contain JavaScript code. No explanations,
46
+ no markdown, no delimiters around it. It is crucial for it to only
47
+ be the code itself.
48
+
49
+ The code you are to return is a JavaScript function, except without
50
+ the function signature, opening brace, and closing brace. Just the
51
+ content of the function. The wrapper around the function is
52
+ generated elsewhere.
53
+ `},{role:"user",content:r}]})).choices[0].message.content,o=a.match(eM);o&&(a=o[1]),e.body={code:a}}var iA=require("@budibase/types"),uA=N(require("@koa/router")),ki=require("@budibase/backend-core"),Fi=new uA.default;Fi.post("/api/ai/cron",H.requireFeature(iA.Feature.BUDIBASE_AI),ki.auth.builderOrAdmin,oA);Fi.post("/api/ai/js",ki.auth.builderOrAdmin,sA);var pA=Fi;async function cA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await hr(t);e.body={_id:r.id,_rev:r.rev}}async function lA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ps(t,r)),n&&(o=await cs(t,n)),e.body={added:a,removed:o}}async function dA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ls(t,{appsToAdd:r,appsToRemove:n})}async function fA(e){e.body={data:await bn()}}async function gA(e){let{groupId:t,rev:r}=e.params;try{await us(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function mA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function yA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await kn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function hA(e){let{groupId:t,appId:r}=e.params;await ds(t,r),e.body={message:"Group app builder access updated."}}async function AA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"group app builder access removed."}}var IA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),bA=new IA.default;function nM(){return it.auth.joiValidator.body(Oe.default.object({_id:Oe.default.string().optional(),_rev:Oe.default.string().optional(),color:Oe.default.string().required(),icon:Oe.default.string().required(),name:Oe.default.string().trim().required().max(50),role:Oe.default.string().optional(),users:Oe.default.array().optional(),apps:Oe.default.array().optional(),roles:Oe.default.object().optional(),createdAt:Oe.default.string().optional(),updatedAt:Oe.default.string().optional()}).required())}bA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),nM(),cA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),fA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Na("groupId"),gA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,mA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,yA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Na("groupId"),lA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),dA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),hA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),AA);var SA=bA;var Qi=require("@budibase/types");var $i=require("@budibase/backend-core");async function wA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function vA(e){e.body={variables:await ot.fetch()}}async function EA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Qi.AppEnvironment.PRODUCTION];r!==n&&a.push(Qi.AppEnvironment.DEVELOPMENT),await $i.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function _A(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function RA(e){let t=e.params.varName;await ot.remove(t),await $i.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Wt=require("@budibase/backend-core"),TA=N(require("@koa/router")),qn=N(require("joi")),OA=new TA.default;function xA(){return Wt.auth.joiValidator.body(qn.default.object({name:qn.default.string().optional(),production:qn.default.string().required(),development:qn.default.string().required()}))}OA.get("/api/env/variables/status",Wt.auth.builderOrAdmin,wA).get("/api/env/variables",Wt.auth.builderOrAdmin,vA).post("/api/env/variables",Wt.auth.builderOrAdmin,xA(),EA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,xA(),_A).delete("/api/env/variables/:varName",Wt.auth.builderOrAdmin,RA);var PA=OA;var ji=require("@budibase/backend-core");async function qA(e){let t=e.request.body,r=await vt.fetch(t);await ji.events.auditLog.filtered(t),e.body=r}async function CA(e){let t=e.request.body,{stream:r}=vt.download(t);await ji.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function UA(e){e.body={events:vt.definitions()}}var DA=require("@budibase/types"),Vt=require("@budibase/backend-core"),BA=N(require("@koa/router")),Ge=N(require("joi"));function LA(){return Vt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(DA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var NA=new BA.default;NA.post("/api/global/auditlogs/search",Vt.auth.adminOnly,LA(),qA).get("/api/global/auditlogs/download",Vt.auth.adminOnly,Vt.middleware.querystringToBody,LA(),CA).get("/api/global/auditlogs/definitions",Vt.auth.adminOnly,UA);var MA=NA;var Wi=require("@budibase/types");var GA=require("@budibase/backend-core");async function xr(e,t){await Zt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function kA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Wi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function FA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await GA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function QA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function $A(e){let t=e.params.appId;await xr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Wi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function jA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function WA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var VA=N(require("@koa/router")),Kt=N(require("joi")),ka=require("@budibase/types"),xt=require("@budibase/backend-core"),KA=new VA.default;function iM(){return xt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(ka.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(ka.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}KA.post("/api/apps/:appId/backups",xt.auth.builderOrAdmin,kA).post("/api/apps/:appId/backups/search",xt.auth.builderOrAdmin,iM(),$A).get("/api/apps/:appId/backups/:backupId/file",xt.auth.builderOrAdmin,WA).patch("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,jA).delete("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,QA).post("/api/apps/:appId/backups/:backupId/import",xt.auth.builderOrAdmin,FA);var YA=KA;var vI=N(require("@koa/router"));var Fa=require("scim-patch");var zA=require("@budibase/backend-core");function HA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var JA=async e=>{let t=HA(e,"pageSize")??20,r=HA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},XA=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},ZA=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof zA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function uM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var eI=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,Fa.patchBodyValidation)(n)}catch{}if(uM(n))return Vi(e);let a;try{a=(0,Fa.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},Vi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var mI=N(gI()),yI=require("@budibase/shared-core"),Qa=require("scim-patch");var $a=require("scim2-parse-filter");function hI(e,t){for(let r of t.split(","))delete e[r]}var AI=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,$a.filter)((0,$a.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{hI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},II=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await Er.create(t);e.body=ne.group.toScimGroupResponse(r)},bI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&hI(n,a),e.body=n},SI=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},wI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Qa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,mI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Qa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let m of d)s.push(await ve.find(m.value));break;case"remove":case"Remove":for(let m of d)c.push(await ve.find(m.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:yI.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var Cn=require("@budibase/types"),Pe=new vI.default({prefix:"/api/global/scim/v2"});Pe.use(Ui);Pe.use(Ci);Pe.get("/users",JA);Pe.get("/users/:id",Tn("id"),XA);Pe.post("/users",ZA);Pe.patch("/users/:id",Tn("id"),eI);Pe.delete("/users/:id",Tn("id"),Vi);Pe.get("/groups",AI);Pe.post("/groups",H.requireFeature(Cn.Feature.USER_GROUPS),II);Pe.get("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),bI);Pe.delete("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),SI);Pe.patch("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),wI);var EI=Pe;var xI=N(require("@koa/router"));var Ki=require("@budibase/backend-core");async function _I(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function RI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Yi=require("@budibase/types"),Hi=require("@budibase/backend-core"),TI=new xI.default;TI.post("/api/global/users/:userId/app/:appId/builder",Hi.auth.builderOrAdmin,H.requireFeatures(Yi.Feature.APP_BUILDERS),_I).delete("/api/global/users/:userId/app/:appId/builder",Hi.auth.builderOrAdmin,H.requireFeatures(Yi.Feature.APP_BUILDERS),RI);var OI=TI;var ne={};R(ne,{group:()=>Xi,user:()=>Ji});var Ji={};R(Ji,{fromScimUser:()=>NM,toScimUserResponse:()=>LM,userFilters:()=>MM});var ja=require("@budibase/types"),PI=require("scim2-parse-filter"),qI=require("@budibase/backend-core"),CI=require("@budibase/shared-core"),{unreachable:UM}=CI.utils,LM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===ja.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},DM=e=>!!e?.id;function BM(e){if(qI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var NM=e=>{let t=DM(e)?e:void 0,r=BM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:UM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?ja.UserStatus.ACTIVE:ja.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},MM=e=>{let t={equal:{}},r=(0,PI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Xi={};R(Xi,{fromScimGroup:()=>FM,toScimGroupResponse:()=>GM});var GM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),kM=e=>!!e?.id,FM=e=>{let t=kM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "dist"
5
5
  ],
6
6
  "license": "UNLICENSED",
7
- "version": "3.5.1",
7
+ "version": "3.5.3",
8
8
  "description": "Budibase Pro (Backend)",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -71,5 +71,5 @@
71
71
  }
72
72
  }
73
73
  },
74
- "gitHead": "e64de415ddc908b22282579f37fcead199ab1b78"
74
+ "gitHead": "0f586f33c25c04b35a7dc72b7217fdbaa3e843c0"
75
75
  }