@budibase/pro 3.5.2 → 3.6.0

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 Nb=Object.create;var Bn=Object.defineProperty;var Mb=Object.getOwnPropertyDescriptor;var Gb=Object.getOwnPropertyNames;var kb=Object.getPrototypeOf,Fb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Bn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Gb(t))!Fb.call(e,a)&&a!==r&&Bn(e,a,{get:()=>t[a],enumerable:!(n=Mb(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?Nb(kb(e)):{},tu(t||!e||!e.__esModule?Bn(r,"default",{value:e,enumerable:!0}):r,e)),$b=e=>tu(Bn({},"__esModule",{value:!0}),e);var Hn=u((sG,Mu)=>{"use strict";function FI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Mu.exports=FI});var go=u((iG,Gu)=>{"use strict";var $I=typeof global=="object"&&global&&global.Object===Object&&global;Gu.exports=$I});var Ae=u((uG,ku)=>{"use strict";var QI=go(),jI=typeof self=="object"&&self&&self.Object===Object&&self,WI=QI||jI||Function("return this")();ku.exports=WI});var Ut=u((pG,Fu)=>{"use strict";var VI=Ae(),YI=VI.Symbol;Fu.exports=YI});var Wu=u((cG,ju)=>{"use strict";var $u=Ut(),Qu=Object.prototype,KI=Qu.hasOwnProperty,HI=Qu.toString,Zr=$u?$u.toStringTag:void 0;function zI(e){var t=KI.call(e,Zr),r=e[Zr];try{e[Zr]=void 0;var n=!0}catch{}var a=HI.call(e);return n&&(t?e[Zr]=r:delete e[Zr]),a}ju.exports=zI});var Yu=u((lG,Vu)=>{"use strict";var JI=Object.prototype,XI=JI.toString;function ZI(e){return XI.call(e)}Vu.exports=ZI});var bt=u((dG,zu)=>{"use strict";var Ku=Ut(),eS=Wu(),tS=Yu(),rS="[object Null]",nS="[object Undefined]",Hu=Ku?Ku.toStringTag:void 0;function aS(e){return e==null?e===void 0?nS:rS:Hu&&Hu in Object(e)?eS(e):tS(e)}zu.exports=aS});var _e=u((fG,Ju)=>{"use strict";function oS(e){return e!=null&&typeof e=="object"}Ju.exports=oS});var Zu=u((gG,Xu)=>{"use strict";var sS=bt(),iS=_e(),uS="[object Arguments]";function pS(e){return iS(e)&&sS(e)==uS}Xu.exports=pS});var en=u((mG,rp)=>{"use strict";var ep=Zu(),cS=_e(),tp=Object.prototype,lS=tp.hasOwnProperty,dS=tp.propertyIsEnumerable,fS=ep(function(){return arguments}())?ep:function(e){return cS(e)&&lS.call(e,"callee")&&!dS.call(e,"callee")};rp.exports=fS});var de=u((yG,np)=>{"use strict";var gS=Array.isArray;np.exports=gS});var ip=u((hG,sp)=>{"use strict";var ap=Ut(),mS=en(),yS=de(),op=ap?ap.isConcatSpreadable:void 0;function hS(e){return yS(e)||mS(e)||!!(op&&e&&e[op])}sp.exports=hS});var mo=u((AG,pp)=>{"use strict";var AS=Hn(),bS=ip();function up(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=bS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?up(s,t-1,r,n,a):AS(a,s):n||(a[a.length]=s)}return a}pp.exports=up});var tn=u((bG,cp)=>{"use strict";function IS(e){return e}cp.exports=IS});var zn=u((IG,lp)=>{"use strict";function SS(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)}lp.exports=SS});var yo=u((SG,fp)=>{"use strict";var wS=zn(),dp=Math.max;function vS(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=dp(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),wS(e,this,s)}}fp.exports=vS});var mp=u((wG,gp)=>{"use strict";function ES(e){return function(){return e}}gp.exports=ES});var De=u((vG,yp)=>{"use strict";function _S(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}yp.exports=_S});var rn=u((EG,hp)=>{"use strict";var xS=bt(),RS=De(),TS="[object AsyncFunction]",OS="[object Function]",PS="[object GeneratorFunction]",qS="[object Proxy]";function CS(e){if(!RS(e))return!1;var t=xS(e);return t==OS||t==PS||t==TS||t==qS}hp.exports=CS});var bp=u((_G,Ap)=>{"use strict";var US=Ae(),LS=US["__core-js_shared__"];Ap.exports=LS});var wp=u((xG,Sp)=>{"use strict";var ho=bp(),Ip=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function DS(e){return!!Ip&&Ip in e}Sp.exports=DS});var Ao=u((RG,vp)=>{"use strict";var BS=Function.prototype,NS=BS.toString;function MS(e){if(e!=null){try{return NS.call(e)}catch{}try{return e+""}catch{}}return""}vp.exports=MS});var _p=u((TG,Ep)=>{"use strict";var GS=rn(),kS=wp(),FS=De(),$S=Ao(),QS=/[\\^$.*+?()[\]{}|]/g,jS=/^\[object .+?Constructor\]$/,WS=Function.prototype,VS=Object.prototype,YS=WS.toString,KS=VS.hasOwnProperty,HS=RegExp("^"+YS.call(KS).replace(QS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function zS(e){if(!FS(e)||kS(e))return!1;var t=GS(e)?HS:jS;return t.test($S(e))}Ep.exports=zS});var Rp=u((OG,xp)=>{"use strict";function JS(e,t){return e?.[t]}xp.exports=JS});var It=u((PG,Tp)=>{"use strict";var XS=_p(),ZS=Rp();function ew(e,t){var r=ZS(e,t);return XS(r)?r:void 0}Tp.exports=ew});var bo=u((qG,Op)=>{"use strict";var tw=It(),rw=function(){try{var e=tw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Op.exports=rw});var Cp=u((CG,qp)=>{"use strict";var nw=mp(),Pp=bo(),aw=tn(),ow=Pp?function(e,t){return Pp(e,"toString",{configurable:!0,enumerable:!1,value:nw(t),writable:!0})}:aw;qp.exports=ow});var Io=u((UG,Up)=>{"use strict";var sw=800,iw=16,uw=Date.now;function pw(e){var t=0,r=0;return function(){var n=uw(),a=iw-(n-r);if(r=n,a>0){if(++t>=sw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Up.exports=pw});var Jn=u((LG,Lp)=>{"use strict";var cw=Cp(),lw=Io(),dw=lw(cw);Lp.exports=dw});var So=u((DG,Dp)=>{"use strict";var fw=tn(),gw=yo(),mw=Jn();function yw(e,t){return mw(gw(e,t,fw),e+"")}Dp.exports=yw});var nn=u((BG,Bp)=>{"use strict";var hw=It(),Aw=hw(Object,"create");Bp.exports=Aw});var Gp=u((NG,Mp)=>{"use strict";var Np=nn();function bw(){this.__data__=Np?Np(null):{},this.size=0}Mp.exports=bw});var Fp=u((MG,kp)=>{"use strict";function Iw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}kp.exports=Iw});var Qp=u((GG,$p)=>{"use strict";var Sw=nn(),ww="__lodash_hash_undefined__",vw=Object.prototype,Ew=vw.hasOwnProperty;function _w(e){var t=this.__data__;if(Sw){var r=t[e];return r===ww?void 0:r}return Ew.call(t,e)?t[e]:void 0}$p.exports=_w});var Wp=u((kG,jp)=>{"use strict";var xw=nn(),Rw=Object.prototype,Tw=Rw.hasOwnProperty;function Ow(e){var t=this.__data__;return xw?t[e]!==void 0:Tw.call(t,e)}jp.exports=Ow});var Yp=u((FG,Vp)=>{"use strict";var Pw=nn(),qw="__lodash_hash_undefined__";function Cw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Pw&&t===void 0?qw:t,this}Vp.exports=Cw});var Hp=u(($G,Kp)=>{"use strict";var Uw=Gp(),Lw=Fp(),Dw=Qp(),Bw=Wp(),Nw=Yp();function tr(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])}}tr.prototype.clear=Uw;tr.prototype.delete=Lw;tr.prototype.get=Dw;tr.prototype.has=Bw;tr.prototype.set=Nw;Kp.exports=tr});var Jp=u((QG,zp)=>{"use strict";function Mw(){this.__data__=[],this.size=0}zp.exports=Mw});var rr=u((jG,Xp)=>{"use strict";function Gw(e,t){return e===t||e!==e&&t!==t}Xp.exports=Gw});var an=u((WG,Zp)=>{"use strict";var kw=rr();function Fw(e,t){for(var r=e.length;r--;)if(kw(e[r][0],t))return r;return-1}Zp.exports=Fw});var tc=u((VG,ec)=>{"use strict";var $w=an(),Qw=Array.prototype,jw=Qw.splice;function Ww(e){var t=this.__data__,r=$w(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():jw.call(t,r,1),--this.size,!0}ec.exports=Ww});var nc=u((YG,rc)=>{"use strict";var Vw=an();function Yw(e){var t=this.__data__,r=Vw(t,e);return r<0?void 0:t[r][1]}rc.exports=Yw});var oc=u((KG,ac)=>{"use strict";var Kw=an();function Hw(e){return Kw(this.__data__,e)>-1}ac.exports=Hw});var ic=u((HG,sc)=>{"use strict";var zw=an();function Jw(e,t){var r=this.__data__,n=zw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}sc.exports=Jw});var on=u((zG,uc)=>{"use strict";var Xw=Jp(),Zw=tc(),ev=nc(),tv=oc(),rv=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=Xw;nr.prototype.delete=Zw;nr.prototype.get=ev;nr.prototype.has=tv;nr.prototype.set=rv;uc.exports=nr});var Xn=u((JG,pc)=>{"use strict";var nv=It(),av=Ae(),ov=nv(av,"Map");pc.exports=ov});var dc=u((XG,lc)=>{"use strict";var cc=Hp(),sv=on(),iv=Xn();function uv(){this.size=0,this.__data__={hash:new cc,map:new(iv||sv),string:new cc}}lc.exports=uv});var gc=u((ZG,fc)=>{"use strict";function pv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}fc.exports=pv});var sn=u((ek,mc)=>{"use strict";var cv=gc();function lv(e,t){var r=e.__data__;return cv(t)?r[typeof t=="string"?"string":"hash"]:r.map}mc.exports=lv});var hc=u((tk,yc)=>{"use strict";var dv=sn();function fv(e){var t=dv(this,e).delete(e);return this.size-=t?1:0,t}yc.exports=fv});var bc=u((rk,Ac)=>{"use strict";var gv=sn();function mv(e){return gv(this,e).get(e)}Ac.exports=mv});var Sc=u((nk,Ic)=>{"use strict";var yv=sn();function hv(e){return yv(this,e).has(e)}Ic.exports=hv});var vc=u((ak,wc)=>{"use strict";var Av=sn();function bv(e,t){var r=Av(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}wc.exports=bv});var Zn=u((ok,Ec)=>{"use strict";var Iv=dc(),Sv=hc(),wv=bc(),vv=Sc(),Ev=vc();function ar(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])}}ar.prototype.clear=Iv;ar.prototype.delete=Sv;ar.prototype.get=wv;ar.prototype.has=vv;ar.prototype.set=Ev;Ec.exports=ar});var xc=u((sk,_c)=>{"use strict";var _v="__lodash_hash_undefined__";function xv(e){return this.__data__.set(e,_v),this}_c.exports=xv});var Tc=u((ik,Rc)=>{"use strict";function Rv(e){return this.__data__.has(e)}Rc.exports=Rv});var wo=u((uk,Oc)=>{"use strict";var Tv=Zn(),Ov=xc(),Pv=Tc();function ea(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Tv;++t<r;)this.add(e[t])}ea.prototype.add=ea.prototype.push=Ov;ea.prototype.has=Pv;Oc.exports=ea});var qc=u((pk,Pc)=>{"use strict";function qv(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}Pc.exports=qv});var Uc=u((ck,Cc)=>{"use strict";function Cv(e){return e!==e}Cc.exports=Cv});var Dc=u((lk,Lc)=>{"use strict";function Uv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Lc.exports=Uv});var Nc=u((dk,Bc)=>{"use strict";var Lv=qc(),Dv=Uc(),Bv=Dc();function Nv(e,t,r){return t===t?Bv(e,t,r):Lv(e,Dv,r)}Bc.exports=Nv});var vo=u((fk,Mc)=>{"use strict";var Mv=Nc();function Gv(e,t){var r=e==null?0:e.length;return!!r&&Mv(e,t,0)>-1}Mc.exports=Gv});var kc=u((gk,Gc)=>{"use strict";function kv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Gc.exports=kv});var Eo=u((mk,Fc)=>{"use strict";function Fv(e,t){return e.has(t)}Fc.exports=Fv});var _o=u((yk,$c)=>{"use strict";var $v=It(),Qv=Ae(),jv=$v(Qv,"Set");$c.exports=jv});var xo=u((hk,Qc)=>{"use strict";function Wv(){}Qc.exports=Wv});var ta=u((Ak,jc)=>{"use strict";function Vv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}jc.exports=Vv});var Vc=u((bk,Wc)=>{"use strict";var Ro=_o(),Yv=xo(),Kv=ta(),Hv=1/0,zv=Ro&&1/Kv(new Ro([,-0]))[1]==Hv?function(e){return new Ro(e)}:Yv;Wc.exports=zv});var Kc=u((Ik,Yc)=>{"use strict";var Jv=wo(),Xv=vo(),Zv=kc(),eE=Eo(),tE=Vc(),rE=ta(),nE=200;function aE(e,t,r){var n=-1,a=Xv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Zv;else if(o>=nE){var f=t?null:tE(e);if(f)return rE(f);i=!1,a=eE,c=new Jv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],y=t?t(d):d;if(d=r||d!==0?d:0,i&&y===y){for(var m=c.length;m--;)if(c[m]===y)continue e;t&&c.push(y),s.push(d)}else a(c,y,r)||(c!==s&&c.push(y),s.push(d))}return s}Yc.exports=aE});var ra=u((Sk,Hc)=>{"use strict";var oE=9007199254740991;function sE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=oE}Hc.exports=sE});var or=u((wk,zc)=>{"use strict";var iE=rn(),uE=ra();function pE(e){return e!=null&&uE(e.length)&&!iE(e)}zc.exports=pE});var To=u((vk,Jc)=>{"use strict";var cE=or(),lE=_e();function dE(e){return lE(e)&&cE(e)}Jc.exports=dE});var Zc=u((Ek,Xc)=>{"use strict";var fE=mo(),gE=So(),mE=Kc(),yE=To(),hE=gE(function(e){return mE(fE(e,1,yE,!0))});Xc.exports=hE});var tl=u((_k,el)=>{"use strict";var AE=on();function bE(){this.__data__=new AE,this.size=0}el.exports=bE});var nl=u((xk,rl)=>{"use strict";function IE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}rl.exports=IE});var ol=u((Rk,al)=>{"use strict";function SE(e){return this.__data__.get(e)}al.exports=SE});var il=u((Tk,sl)=>{"use strict";function wE(e){return this.__data__.has(e)}sl.exports=wE});var pl=u((Ok,ul)=>{"use strict";var vE=on(),EE=Xn(),_E=Zn(),xE=200;function RE(e,t){var r=this.__data__;if(r instanceof vE){var n=r.__data__;if(!EE||n.length<xE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new _E(n)}return r.set(e,t),this.size=r.size,this}ul.exports=RE});var un=u((Pk,cl)=>{"use strict";var TE=on(),OE=tl(),PE=nl(),qE=ol(),CE=il(),UE=pl();function sr(e){var t=this.__data__=new TE(e);this.size=t.size}sr.prototype.clear=OE;sr.prototype.delete=PE;sr.prototype.get=qE;sr.prototype.has=CE;sr.prototype.set=UE;cl.exports=sr});var pn=u((qk,dl)=>{"use strict";var ll=bo();function LE(e,t,r){t=="__proto__"&&ll?ll(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}dl.exports=LE});var Oo=u((Ck,fl)=>{"use strict";var DE=pn(),BE=rr();function NE(e,t,r){(r!==void 0&&!BE(e[t],r)||r===void 0&&!(t in e))&&DE(e,t,r)}fl.exports=NE});var ml=u((Uk,gl)=>{"use strict";function ME(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}}gl.exports=ME});var Po=u((Lk,yl)=>{"use strict";var GE=ml(),kE=GE();yl.exports=kE});var qo=u((cn,ir)=>{"use strict";var FE=Ae(),Il=typeof cn=="object"&&cn&&!cn.nodeType&&cn,hl=Il&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,$E=hl&&hl.exports===Il,Al=$E?FE.Buffer:void 0,bl=Al?Al.allocUnsafe:void 0;function QE(e,t){if(t)return e.slice();var r=e.length,n=bl?bl(r):new e.constructor(r);return e.copy(n),n}ir.exports=QE});var Co=u((Dk,Sl)=>{"use strict";var jE=Ae(),WE=jE.Uint8Array;Sl.exports=WE});var na=u((Bk,vl)=>{"use strict";var wl=Co();function VE(e){var t=new e.constructor(e.byteLength);return new wl(t).set(new wl(e)),t}vl.exports=VE});var Uo=u((Nk,El)=>{"use strict";var YE=na();function KE(e,t){var r=t?YE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}El.exports=KE});var ur=u((Mk,_l)=>{"use strict";function HE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}_l.exports=HE});var ln=u((Gk,Rl)=>{"use strict";var zE=De(),xl=Object.create,JE=function(){function e(){}return function(t){if(!zE(t))return{};if(xl)return xl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rl.exports=JE});var Lo=u((kk,Tl)=>{"use strict";function XE(e,t){return function(r){return e(t(r))}}Tl.exports=XE});var aa=u((Fk,Ol)=>{"use strict";var ZE=Lo(),e_=ZE(Object.getPrototypeOf,Object);Ol.exports=e_});var oa=u(($k,Pl)=>{"use strict";var t_=Object.prototype;function r_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||t_;return e===r}Pl.exports=r_});var Do=u((Qk,ql)=>{"use strict";var n_=ln(),a_=aa(),o_=oa();function s_(e){return typeof e.constructor=="function"&&!o_(e)?n_(a_(e)):{}}ql.exports=s_});var Ul=u((jk,Cl)=>{"use strict";function i_(){return!1}Cl.exports=i_});var fn=u((dn,pr)=>{"use strict";var u_=Ae(),p_=Ul(),Bl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,Ll=Bl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,c_=Ll&&Ll.exports===Bl,Dl=c_?u_.Buffer:void 0,l_=Dl?Dl.isBuffer:void 0,d_=l_||p_;pr.exports=d_});var Bo=u((Wk,Ml)=>{"use strict";var f_=bt(),g_=aa(),m_=_e(),y_="[object Object]",h_=Function.prototype,A_=Object.prototype,Nl=h_.toString,b_=A_.hasOwnProperty,I_=Nl.call(Object);function S_(e){if(!m_(e)||f_(e)!=y_)return!1;var t=g_(e);if(t===null)return!0;var r=b_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Nl.call(r)==I_}Ml.exports=S_});var kl=u((Vk,Gl)=>{"use strict";var w_=bt(),v_=ra(),E_=_e(),__="[object Arguments]",x_="[object Array]",R_="[object Boolean]",T_="[object Date]",O_="[object Error]",P_="[object Function]",q_="[object Map]",C_="[object Number]",U_="[object Object]",L_="[object RegExp]",D_="[object Set]",B_="[object String]",N_="[object WeakMap]",M_="[object ArrayBuffer]",G_="[object DataView]",k_="[object Float32Array]",F_="[object Float64Array]",$_="[object Int8Array]",Q_="[object Int16Array]",j_="[object Int32Array]",W_="[object Uint8Array]",V_="[object Uint8ClampedArray]",Y_="[object Uint16Array]",K_="[object Uint32Array]",j={};j[k_]=j[F_]=j[$_]=j[Q_]=j[j_]=j[W_]=j[V_]=j[Y_]=j[K_]=!0;j[__]=j[x_]=j[M_]=j[R_]=j[G_]=j[T_]=j[O_]=j[P_]=j[q_]=j[C_]=j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=!1;function H_(e){return E_(e)&&v_(e.length)&&!!j[w_(e)]}Gl.exports=H_});var sa=u((Yk,Fl)=>{"use strict";function z_(e){return function(t){return e(t)}}Fl.exports=z_});var ia=u((gn,cr)=>{"use strict";var J_=go(),$l=typeof gn=="object"&&gn&&!gn.nodeType&&gn,mn=$l&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,X_=mn&&mn.exports===$l,No=X_&&J_.process,Z_=function(){try{var e=mn&&mn.require&&mn.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();cr.exports=Z_});var ua=u((Kk,Wl)=>{"use strict";var ex=kl(),tx=sa(),Ql=ia(),jl=Ql&&Ql.isTypedArray,rx=jl?tx(jl):ex;Wl.exports=rx});var Mo=u((Hk,Vl)=>{"use strict";function nx(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Vl.exports=nx});var Go=u((zk,Yl)=>{"use strict";var ax=pn(),ox=rr(),sx=Object.prototype,ix=sx.hasOwnProperty;function ux(e,t,r){var n=e[t];(!(ix.call(e,t)&&ox(n,r))||r===void 0&&!(t in e))&&ax(e,t,r)}Yl.exports=ux});var lr=u((Jk,Kl)=>{"use strict";var px=Go(),cx=pn();function lx(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?cx(r,s,c):px(r,s,c)}return r}Kl.exports=lx});var zl=u((Xk,Hl)=>{"use strict";function dx(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Hl.exports=dx});var yn=u((Zk,Jl)=>{"use strict";var fx=9007199254740991,gx=/^(?:0|[1-9]\d*)$/;function mx(e,t){var r=typeof e;return t=t??fx,!!t&&(r=="number"||r!="symbol"&&gx.test(e))&&e>-1&&e%1==0&&e<t}Jl.exports=mx});var ko=u((eF,Xl)=>{"use strict";var yx=zl(),hx=en(),Ax=de(),bx=fn(),Ix=yn(),Sx=ua(),wx=Object.prototype,vx=wx.hasOwnProperty;function Ex(e,t){var r=Ax(e),n=!r&&hx(e),a=!r&&!n&&bx(e),o=!r&&!n&&!a&&Sx(e),i=r||n||a||o,s=i?yx(e.length,String):[],c=s.length;for(var f in e)(t||vx.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ix(f,c)))&&s.push(f);return s}Xl.exports=Ex});var ed=u((tF,Zl)=>{"use strict";function _x(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Zl.exports=_x});var rd=u((rF,td)=>{"use strict";var xx=De(),Rx=oa(),Tx=ed(),Ox=Object.prototype,Px=Ox.hasOwnProperty;function qx(e){if(!xx(e))return Tx(e);var t=Rx(e),r=[];for(var n in e)n=="constructor"&&(t||!Px.call(e,n))||r.push(n);return r}td.exports=qx});var dr=u((nF,nd)=>{"use strict";var Cx=ko(),Ux=rd(),Lx=or();function Dx(e){return Lx(e)?Cx(e,!0):Ux(e)}nd.exports=Dx});var od=u((aF,ad)=>{"use strict";var Bx=lr(),Nx=dr();function Mx(e){return Bx(e,Nx(e))}ad.exports=Mx});var ld=u((oF,cd)=>{"use strict";var sd=Oo(),Gx=qo(),kx=Uo(),Fx=ur(),$x=Do(),id=en(),ud=de(),Qx=To(),jx=fn(),Wx=rn(),Vx=De(),Yx=Bo(),Kx=ua(),pd=Mo(),Hx=od();function zx(e,t,r,n,a,o,i){var s=pd(e,r),c=pd(t,r),f=i.get(c);if(f){sd(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,y=d===void 0;if(y){var m=ud(c),w=!m&&jx(c),T=!m&&!w&&Kx(c);d=c,m||w||T?ud(s)?d=s:Qx(s)?d=Fx(s):w?(y=!1,d=Gx(c,!0)):T?(y=!1,d=kx(c,!0)):d=[]:Yx(c)||id(c)?(d=s,id(s)?d=Hx(s):(!Vx(s)||Wx(s))&&(d=$x(c))):y=!1}y&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),sd(e,r,d)}cd.exports=zx});var gd=u((sF,fd)=>{"use strict";var Jx=un(),Xx=Oo(),Zx=Po(),eR=ld(),tR=De(),rR=dr(),nR=Mo();function dd(e,t,r,n,a){e!==t&&Zx(t,function(o,i){if(a||(a=new Jx),tR(o))eR(e,t,i,r,dd,n,a);else{var s=n?n(nR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),Xx(e,i,s)}},rR)}fd.exports=dd});var yd=u((iF,md)=>{"use strict";var aR=rr(),oR=or(),sR=yn(),iR=De();function uR(e,t,r){if(!iR(r))return!1;var n=typeof t;return(n=="number"?oR(r)&&sR(t,r.length):n=="string"&&t in r)?aR(r[t],e):!1}md.exports=uR});var Ad=u((uF,hd)=>{"use strict";var pR=So(),cR=yd();function lR(e){return pR(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&&cR(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})}hd.exports=lR});var Fo=u((pF,bd)=>{"use strict";var dR=gd(),fR=Ad(),gR=fR(function(e,t,r){dR(e,t,r)});bd.exports=gR});var wf=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 Ds=u((q$,vf)=>{"use strict";vf.exports={}});var Rf=u((C$,xf)=>{"use strict";var ie=wf(),ZT=Ds(),Ef=Array.prototype.push;function eO(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Bs(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function _f(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function tO(e){return function(t){return e({},t)}}function rO(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&&Ef.apply(i,o),t!=n&&Ef.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ns(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 Ms(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:ZT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,y=a?r.runInContext():void 0,m=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},w=m.ary,T=m.assign,D=m.clone,L=m.curry,U=m.forEach,k=m.isArray,Ie=m.isError,ee=m.isFunction,ke=m.isWeakMap,He=m.keys,ze=m.rearg,W=m.toInteger,B=m.toPath,Tt=He(ie.aryMethod),Dn={castArray:function(v){return function(){var A=arguments[0];return k(A)?v(_f(A)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var A=arguments[0],b=arguments[1],E=v(A,b),q=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,q&&q<=b?E:Bs(E,b)):E}},mixin:function(v){return function(A){var b=this;if(!ee(b))return v(b,Object(A));var E=[];return U(He(A),function(q){ee(A[q])&&E.push([q,b.prototype[q]])}),v(b,Object(A)),U(E,function(q){var Z=q[1];ee(Z)?b.prototype[q[0]]=Z:delete b.prototype[q[0]]}),b}},nthArg:function(v){return function(A){var b=A<0?1:W(A)+1;return L(v(A),b)}},rearg:function(v){return function(A,b){var E=b?b.length:0;return L(v(A,b),E)}},runInContext:function(v){return function(A){return Ms(e,v(A),n)}}};function R(v,A){if(i.cap){var b=ie.iterateeRearg[v];if(b)return K(A,b);var E=!a&&ie.iterateeAry[v];if(E)return M(A,E)}return A}function S(v,A,b){return c||i.curry&&b>1?L(A,b):A}function h(v,A,b){if(i.fixed&&(f||!ie.skipFixed[v])){var E=ie.methodSpread[v],q=E&&E.start;return q===void 0?w(A,b):rO(A,q)}return A}function _(v,A,b){return i.rearg&&b>1&&(d||!ie.skipRearg[v])?ze(A,ie.methodRearg[v]||ie.aryRearg[b]):A}function I(v,A){A=B(A);for(var b=-1,E=A.length,q=E-1,Z=D(Object(v)),me=Z;me!=null&&++b<E;){var Ce=A[b],Je=me[Ce];Je!=null&&!(ee(Je)||Ie(Je)||ke(Je))&&(me[Ce]=D(b==q?Je:Object(Je))),me=me[Ce]}return Z}function P(v){return F.runInContext.convert(v)(void 0)}function O(v,A){var b=ie.aliasToReal[v]||v,E=ie.remap[b]||b,q=n;return function(Z){var me=a?y:m,Ce=a?y[E]:A,Je=T(T({},q),Z);return Ms(me,b,Ce,Je)}}function M(v,A){return X(v,function(b){return typeof b=="function"?Bs(b,A):b})}function K(v,A){return X(v,function(b){var E=A.length;return eO(ze(Bs(b,E),A),E)})}function X(v,A){return function(){var b=arguments.length;if(!b)return v();for(var E=Array(b);b--;)E[b]=arguments[b];var q=i.rearg?0:b-1;return E[q]=A(E[q]),v.apply(void 0,E)}}function ae(v,A,b){var E,q=ie.aliasToReal[v]||v,Z=A,me=Dn[q];return me?Z=me(A):i.immutable&&(ie.mutate.array[q]?Z=Ns(A,_f):ie.mutate.object[q]?Z=Ns(A,tO(A)):ie.mutate.set[q]&&(Z=Ns(A,I))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(q==Je){var eu=ie.methodSpread[q],Bb=eu&&eu.afterRearg;return E=Bb?h(q,_(q,Z,Ce),Ce):_(q,h(q,Z,Ce),Ce),E=R(q,E),E=S(q,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=O(q,A),E.placeholder=A.placeholder=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(v){U(ie.aryMethod[v],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),U(He(F),function(v){var A=F[v];if(typeof A=="function"){for(var b=qe.length;b--;)if(qe[b][0]==v)return;A.convert=O(v,A),qe.push([v,A])}}),U(qe,function(v){F[v[0]]=v[1]}),F.convert=P,F.placeholder=F,U(He(F),function(v){U(ie.realToAlias[v]||[],function(A){F[A]=F[v]})}),F}xf.exports=Ms});var Gs=u((U$,Tf)=>{"use strict";var nO=It(),aO=Ae(),oO=nO(aO,"WeakMap");Tf.exports=oO});var ks=u((L$,Pf)=>{"use strict";var Of=Gs(),sO=Of&&new Of;Pf.exports=sO});var Fs=u((D$,Cf)=>{"use strict";var iO=tn(),qf=ks(),uO=qf?function(e,t){return qf.set(e,t),e}:iO;Cf.exports=uO});var On=u((B$,Uf)=>{"use strict";var pO=ln(),cO=De();function lO(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=pO(e.prototype),n=e.apply(r,t);return cO(n)?n:r}}Uf.exports=lO});var Df=u((N$,Lf)=>{"use strict";var dO=On(),fO=Ae(),gO=1;function mO(e,t,r){var n=t&gO,a=dO(e);function o(){var i=this&&this!==fO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Lf.exports=mO});var $s=u((M$,Bf)=>{"use strict";var yO=Math.max;function hO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=yO(o-i,0),d=Array(c+f),y=!n;++s<c;)d[s]=t[s];for(;++a<i;)(y||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Bf.exports=hO});var Qs=u((G$,Nf)=>{"use strict";var AO=Math.max;function bO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=AO(o-s,0),y=Array(d+f),m=!n;++a<d;)y[a]=e[a];for(var w=a;++c<f;)y[w+c]=t[c];for(;++i<s;)(m||a<o)&&(y[w+r[i]]=e[a++]);return y}Nf.exports=bO});var Gf=u((k$,Mf)=>{"use strict";function IO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Mf.exports=IO});var Ea=u((F$,kf)=>{"use strict";function SO(){}kf.exports=SO});var xa=u(($$,Ff)=>{"use strict";var wO=ln(),vO=Ea(),EO=4294967295;function _a(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=EO,this.__views__=[]}_a.prototype=wO(vO.prototype);_a.prototype.constructor=_a;Ff.exports=_a});var Ws=u((Q$,Qf)=>{"use strict";var $f=ks(),_O=xo(),xO=$f?function(e){return $f.get(e)}:_O;Qf.exports=xO});var Wf=u((j$,jf)=>{"use strict";var RO={};jf.exports=RO});var Kf=u((W$,Yf)=>{"use strict";var Vf=Wf(),TO=Object.prototype,OO=TO.hasOwnProperty;function PO(e){for(var t=e.name+"",r=Vf[t],n=OO.call(Vf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Yf.exports=PO});var Vs=u((V$,Hf)=>{"use strict";var qO=ln(),CO=Ea();function Ra(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ra.prototype=qO(CO.prototype);Ra.prototype.constructor=Ra;Hf.exports=Ra});var Jf=u((Y$,zf)=>{"use strict";var UO=xa(),LO=Vs(),DO=ur();function BO(e){if(e instanceof UO)return e.clone();var t=new LO(e.__wrapped__,e.__chain__);return t.__actions__=DO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}zf.exports=BO});var eg=u((K$,Zf)=>{"use strict";var NO=xa(),Xf=Vs(),MO=Ea(),GO=de(),kO=_e(),FO=Jf(),$O=Object.prototype,QO=$O.hasOwnProperty;function Ta(e){if(kO(e)&&!GO(e)&&!(e instanceof NO)){if(e instanceof Xf)return e;if(QO.call(e,"__wrapped__"))return FO(e)}return new Xf(e)}Ta.prototype=MO.prototype;Ta.prototype.constructor=Ta;Zf.exports=Ta});var rg=u((H$,tg)=>{"use strict";var jO=xa(),WO=Ws(),VO=Kf(),YO=eg();function KO(e){var t=VO(e),r=YO[t];if(typeof r!="function"||!(t in jO.prototype))return!1;if(e===r)return!0;var n=WO(r);return!!n&&e===n[0]}tg.exports=KO});var Ys=u((z$,ng)=>{"use strict";var HO=Fs(),zO=Io(),JO=zO(HO);ng.exports=JO});var og=u((J$,ag)=>{"use strict";var XO=/\{\n\/\* \[wrapped with (.+)\] \*/,ZO=/,? & /;function eP(e){var t=e.match(XO);return t?t[1].split(ZO):[]}ag.exports=eP});var ig=u((X$,sg)=>{"use strict";var tP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function rP(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(tP,`{
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
+ `)}sg.exports=rP});var Oa=u((Z$,ug)=>{"use strict";function nP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}ug.exports=nP});var cg=u((eQ,pg)=>{"use strict";var aP=Oa(),oP=vo(),sP=1,iP=2,uP=8,pP=16,cP=32,lP=64,dP=128,fP=256,gP=512,mP=[["ary",dP],["bind",sP],["bindKey",iP],["curry",uP],["curryRight",pP],["flip",gP],["partial",cP],["partialRight",lP],["rearg",fP]];function yP(e,t){return aP(mP,function(r){var n="_."+r[0];t&r[1]&&!oP(e,n)&&e.push(n)}),e.sort()}pg.exports=yP});var Ks=u((tQ,lg)=>{"use strict";var hP=og(),AP=ig(),bP=Jn(),IP=cg();function SP(e,t,r){var n=t+"";return bP(e,AP(n,IP(hP(n),r)))}lg.exports=SP});var Hs=u((rQ,gg)=>{"use strict";var wP=rg(),vP=Ys(),EP=Ks(),_P=1,xP=2,RP=4,TP=8,dg=32,fg=64;function OP(e,t,r,n,a,o,i,s,c,f){var d=t&TP,y=d?i:void 0,m=d?void 0:i,w=d?o:void 0,T=d?void 0:o;t|=d?dg:fg,t&=~(d?fg:dg),t&RP||(t&=~(_P|xP));var D=[e,t,a,w,y,T,m,s,c,f],L=r.apply(void 0,D);return wP(e)&&vP(L,D),L.placeholder=n,EP(L,e,t)}gg.exports=OP});var zs=u((nQ,mg)=>{"use strict";function PP(e){var t=e;return t.placeholder}mg.exports=PP});var hg=u((aQ,yg)=>{"use strict";var qP=ur(),CP=yn(),UP=Math.min;function LP(e,t){for(var r=e.length,n=UP(t.length,r),a=qP(e);n--;){var o=t[n];e[n]=CP(o,r)?a[o]:void 0}return e}yg.exports=LP});var Pa=u((oQ,bg)=>{"use strict";var Ag="__lodash_placeholder__";function DP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,o[a++]=r)}return o}bg.exports=DP});var Js=u((sQ,wg)=>{"use strict";var BP=$s(),NP=Qs(),MP=Gf(),Ig=On(),GP=Hs(),kP=zs(),FP=hg(),$P=Pa(),QP=Ae(),jP=1,WP=2,VP=8,YP=16,KP=128,HP=512;function Sg(e,t,r,n,a,o,i,s,c,f){var d=t&KP,y=t&jP,m=t&WP,w=t&(VP|YP),T=t&HP,D=m?void 0:Ig(e);function L(){for(var U=arguments.length,k=Array(U),Ie=U;Ie--;)k[Ie]=arguments[Ie];if(w)var ee=kP(L),ke=MP(k,ee);if(n&&(k=BP(k,n,a,w)),o&&(k=NP(k,o,i,w)),U-=ke,w&&U<f){var He=$P(k,ee);return GP(e,t,Sg,L.placeholder,r,k,He,s,c,f-U)}var ze=y?r:this,W=m?ze[e]:e;return U=k.length,s?k=FP(k,s):T&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==QP&&this instanceof L&&(W=D||Ig(W)),W.apply(ze,k)}return L}wg.exports=Sg});var Eg=u((iQ,vg)=>{"use strict";var zP=zn(),JP=On(),XP=Js(),ZP=Hs(),eq=zs(),tq=Pa(),rq=Ae();function nq(e,t,r){var n=JP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=eq(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:tq(i,c);if(o-=f.length,o<r)return ZP(e,t,XP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==rq&&this instanceof a?n:e;return zP(d,this,i)}return a}vg.exports=nq});var xg=u((uQ,_g)=>{"use strict";var aq=zn(),oq=On(),sq=Ae(),iq=1;function uq(e,t,r,n){var a=t&iq,o=oq(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,y=Array(d+c),m=this&&this!==sq&&this instanceof i?o:e;++f<d;)y[f]=n[f];for(;c--;)y[f++]=arguments[++s];return aq(m,a?r:this,y)}return i}_g.exports=uq});var Cg=u((pQ,qg)=>{"use strict";var pq=$s(),cq=Qs(),Rg=Pa(),Tg="__lodash_placeholder__",Xs=1,lq=2,dq=4,Og=8,Pn=128,Pg=256,fq=Math.min;function gq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Xs|lq|Pn),i=n==Pn&&r==Og||n==Pn&&r==Pg&&e[7].length<=t[8]||n==(Pn|Pg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;n&Xs&&(e[2]=t[2],a|=r&Xs?0:dq);var s=t[3];if(s){var c=e[3];e[3]=c?pq(c,s,t[4]):s,e[4]=c?Rg(e[3],Tg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?cq(c,s,t[6]):s,e[6]=c?Rg(e[5],Tg):t[6]),s=t[7],s&&(e[7]=s),n&Pn&&(e[8]=e[8]==null?t[8]:fq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}qg.exports=gq});var Lg=u((cQ,Ug)=>{"use strict";var mq=/\s/;function yq(e){for(var t=e.length;t--&&mq.test(e.charAt(t)););return t}Ug.exports=yq});var Bg=u((lQ,Dg)=>{"use strict";var hq=Lg(),Aq=/^\s+/;function bq(e){return e&&e.slice(0,hq(e)+1).replace(Aq,"")}Dg.exports=bq});var Sr=u((dQ,Ng)=>{"use strict";var Iq=bt(),Sq=_e(),wq="[object Symbol]";function vq(e){return typeof e=="symbol"||Sq(e)&&Iq(e)==wq}Ng.exports=vq});var Fg=u((fQ,kg)=>{"use strict";var Eq=Bg(),Mg=De(),_q=Sr(),Gg=0/0,xq=/^[-+]0x[0-9a-f]+$/i,Rq=/^0b[01]+$/i,Tq=/^0o[0-7]+$/i,Oq=parseInt;function Pq(e){if(typeof e=="number")return e;if(_q(e))return Gg;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Eq(e);var r=Rq.test(e);return r||Tq.test(e)?Oq(e.slice(2),r?2:8):xq.test(e)?Gg:+e}kg.exports=Pq});var jg=u((gQ,Qg)=>{"use strict";var qq=Fg(),$g=1/0,Cq=17976931348623157e292;function Uq(e){if(!e)return e===0?e:0;if(e=qq(e),e===$g||e===-$g){var t=e<0?-1:1;return t*Cq}return e===e?e:0}Qg.exports=Uq});var Zs=u((mQ,Wg)=>{"use strict";var Lq=jg();function Dq(e){var t=Lq(e),r=t%1;return t===t?r?t-r:t:0}Wg.exports=Dq});var qa=u((yQ,zg)=>{"use strict";var Bq=Fs(),Nq=Df(),Mq=Eg(),Gq=Js(),kq=xg(),Fq=Ws(),$q=Cg(),Qq=Ys(),jq=Ks(),Vg=Zs(),Wq="Expected a function",Yg=1,Vq=2,ei=8,ti=16,ri=32,Kg=64,Hg=Math.max;function Yq(e,t,r,n,a,o,i,s){var c=t&Vq;if(!c&&typeof e!="function")throw new TypeError(Wq);var f=n?n.length:0;if(f||(t&=~(ri|Kg),n=a=void 0),i=i===void 0?i:Hg(Vg(i),0),s=s===void 0?s:Vg(s),f-=a?a.length:0,t&Kg){var d=n,y=a;n=a=void 0}var m=c?void 0:Fq(e),w=[e,t,r,n,a,d,y,o,i,s];if(m&&$q(w,m),e=w[0],t=w[1],r=w[2],n=w[3],a=w[4],s=w[9]=w[9]===void 0?c?0:e.length:Hg(w[9]-f,0),!s&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==Yg)var T=Nq(e,t,r);else t==ei||t==ti?T=Mq(e,t,s):(t==ri||t==(Yg|ri))&&!a.length?T=kq(e,t,r,n):T=Gq.apply(void 0,w);var D=m?Bq:Qq;return jq(D(T,w),e,t)}zg.exports=Yq});var Xg=u((hQ,Jg)=>{"use strict";var Kq=qa(),Hq=128;function zq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,Kq(e,Hq,void 0,void 0,void 0,void 0,t)}Jg.exports=zq});var em=u((AQ,Zg)=>{"use strict";var Jq=Lo(),Xq=Jq(Object.keys,Object);Zg.exports=Xq});var ni=u((bQ,tm)=>{"use strict";var Zq=oa(),eC=em(),tC=Object.prototype,rC=tC.hasOwnProperty;function nC(e){if(!Zq(e))return eC(e);var t=[];for(var r in Object(e))rC.call(e,r)&&r!="constructor"&&t.push(r);return t}tm.exports=nC});var wr=u((IQ,rm)=>{"use strict";var aC=ko(),oC=ni(),sC=or();function iC(e){return sC(e)?aC(e):oC(e)}rm.exports=iC});var ai=u((SQ,nm)=>{"use strict";var uC=lr(),pC=wr();function cC(e,t){return e&&uC(t,pC(t),e)}nm.exports=cC});var om=u((wQ,am)=>{"use strict";var lC=lr(),dC=dr();function fC(e,t){return e&&lC(t,dC(t),e)}am.exports=fC});var im=u((vQ,sm)=>{"use strict";function gC(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}sm.exports=gC});var oi=u((EQ,um)=>{"use strict";function mC(){return[]}um.exports=mC});var Ca=u((_Q,cm)=>{"use strict";var yC=im(),hC=oi(),AC=Object.prototype,bC=AC.propertyIsEnumerable,pm=Object.getOwnPropertySymbols,IC=pm?function(e){return e==null?[]:(e=Object(e),yC(pm(e),function(t){return bC.call(e,t)}))}:hC;cm.exports=IC});var dm=u((xQ,lm)=>{"use strict";var SC=lr(),wC=Ca();function vC(e,t){return SC(e,wC(e),t)}lm.exports=vC});var si=u((RQ,fm)=>{"use strict";var EC=Hn(),_C=aa(),xC=Ca(),RC=oi(),TC=Object.getOwnPropertySymbols,OC=TC?function(e){for(var t=[];e;)EC(t,xC(e)),e=_C(e);return t}:RC;fm.exports=OC});var mm=u((TQ,gm)=>{"use strict";var PC=lr(),qC=si();function CC(e,t){return PC(e,qC(e),t)}gm.exports=CC});var ii=u((OQ,ym)=>{"use strict";var UC=Hn(),LC=de();function DC(e,t,r){var n=t(e);return LC(e)?n:UC(n,r(e))}ym.exports=DC});var ui=u((PQ,hm)=>{"use strict";var BC=ii(),NC=Ca(),MC=wr();function GC(e){return BC(e,MC,NC)}hm.exports=GC});var bm=u((qQ,Am)=>{"use strict";var kC=ii(),FC=si(),$C=dr();function QC(e){return kC(e,$C,FC)}Am.exports=QC});var Sm=u((CQ,Im)=>{"use strict";var jC=It(),WC=Ae(),VC=jC(WC,"DataView");Im.exports=VC});var vm=u((UQ,wm)=>{"use strict";var YC=It(),KC=Ae(),HC=YC(KC,"Promise");wm.exports=HC});var Er=u((LQ,Pm)=>{"use strict";var pi=Sm(),ci=Xn(),li=vm(),di=_o(),fi=Gs(),Om=bt(),vr=Ao(),Em="[object Map]",zC="[object Object]",_m="[object Promise]",xm="[object Set]",Rm="[object WeakMap]",Tm="[object DataView]",JC=vr(pi),XC=vr(ci),ZC=vr(li),eU=vr(di),tU=vr(fi),$t=Om;(pi&&$t(new pi(new ArrayBuffer(1)))!=Tm||ci&&$t(new ci)!=Em||li&&$t(li.resolve())!=_m||di&&$t(new di)!=xm||fi&&$t(new fi)!=Rm)&&($t=function(e){var t=Om(e),r=t==zC?e.constructor:void 0,n=r?vr(r):"";if(n)switch(n){case JC:return Tm;case XC:return Em;case ZC:return _m;case eU:return xm;case tU:return Rm}return t});Pm.exports=$t});var Cm=u((DQ,qm)=>{"use strict";var rU=Object.prototype,nU=rU.hasOwnProperty;function aU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&nU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}qm.exports=aU});var Lm=u((BQ,Um)=>{"use strict";var oU=na();function sU(e,t){var r=t?oU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Um.exports=sU});var Bm=u((NQ,Dm)=>{"use strict";var iU=/\w*$/;function uU(e){var t=new e.constructor(e.source,iU.exec(e));return t.lastIndex=e.lastIndex,t}Dm.exports=uU});var Fm=u((MQ,km)=>{"use strict";var Nm=Ut(),Mm=Nm?Nm.prototype:void 0,Gm=Mm?Mm.valueOf:void 0;function pU(e){return Gm?Object(Gm.call(e)):{}}km.exports=pU});var Qm=u((GQ,$m)=>{"use strict";var cU=na(),lU=Lm(),dU=Bm(),fU=Fm(),gU=Uo(),mU="[object Boolean]",yU="[object Date]",hU="[object Map]",AU="[object Number]",bU="[object RegExp]",IU="[object Set]",SU="[object String]",wU="[object Symbol]",vU="[object ArrayBuffer]",EU="[object DataView]",_U="[object Float32Array]",xU="[object Float64Array]",RU="[object Int8Array]",TU="[object Int16Array]",OU="[object Int32Array]",PU="[object Uint8Array]",qU="[object Uint8ClampedArray]",CU="[object Uint16Array]",UU="[object Uint32Array]";function LU(e,t,r){var n=e.constructor;switch(t){case vU:return cU(e);case mU:case yU:return new n(+e);case EU:return lU(e,r);case _U:case xU:case RU:case TU:case OU:case PU:case qU:case CU:case UU:return gU(e,r);case hU:return new n;case AU:case SU:return new n(e);case bU:return dU(e);case IU:return new n;case wU:return fU(e)}}$m.exports=LU});var Wm=u((kQ,jm)=>{"use strict";var DU=Er(),BU=_e(),NU="[object Map]";function MU(e){return BU(e)&&DU(e)==NU}jm.exports=MU});var Hm=u((FQ,Km)=>{"use strict";var GU=Wm(),kU=sa(),Vm=ia(),Ym=Vm&&Vm.isMap,FU=Ym?kU(Ym):GU;Km.exports=FU});var Jm=u(($Q,zm)=>{"use strict";var $U=Er(),QU=_e(),jU="[object Set]";function WU(e){return QU(e)&&$U(e)==jU}zm.exports=WU});var ty=u((QQ,ey)=>{"use strict";var VU=Jm(),YU=sa(),Xm=ia(),Zm=Xm&&Xm.isSet,KU=Zm?YU(Zm):VU;ey.exports=KU});var gi=u((jQ,oy)=>{"use strict";var HU=un(),zU=Oa(),JU=Go(),XU=ai(),ZU=om(),eL=qo(),tL=ur(),rL=dm(),nL=mm(),aL=ui(),oL=bm(),sL=Er(),iL=Cm(),uL=Qm(),pL=Do(),cL=de(),lL=fn(),dL=Hm(),fL=De(),gL=ty(),mL=wr(),yL=dr(),hL=1,AL=2,bL=4,ry="[object Arguments]",IL="[object Array]",SL="[object Boolean]",wL="[object Date]",vL="[object Error]",ny="[object Function]",EL="[object GeneratorFunction]",_L="[object Map]",xL="[object Number]",ay="[object Object]",RL="[object RegExp]",TL="[object Set]",OL="[object String]",PL="[object Symbol]",qL="[object WeakMap]",CL="[object ArrayBuffer]",UL="[object DataView]",LL="[object Float32Array]",DL="[object Float64Array]",BL="[object Int8Array]",NL="[object Int16Array]",ML="[object Int32Array]",GL="[object Uint8Array]",kL="[object Uint8ClampedArray]",FL="[object Uint16Array]",$L="[object Uint32Array]",$={};$[ry]=$[IL]=$[CL]=$[UL]=$[SL]=$[wL]=$[LL]=$[DL]=$[BL]=$[NL]=$[ML]=$[_L]=$[xL]=$[ay]=$[RL]=$[TL]=$[OL]=$[PL]=$[GL]=$[kL]=$[FL]=$[$L]=!0;$[vL]=$[ny]=$[qL]=!1;function Ua(e,t,r,n,a,o){var i,s=t&hL,c=t&AL,f=t&bL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!fL(e))return e;var d=cL(e);if(d){if(i=iL(e),!s)return tL(e,i)}else{var y=sL(e),m=y==ny||y==EL;if(lL(e))return eL(e,s);if(y==ay||y==ry||m&&!a){if(i=c||m?{}:pL(e),!s)return c?nL(e,ZU(i,e)):rL(e,XU(i,e))}else{if(!$[y])return a?e:{};i=uL(e,y,s)}}o||(o=new HU);var w=o.get(e);if(w)return w;o.set(e,i),gL(e)?e.forEach(function(L){i.add(Ua(L,t,r,L,e,o))}):dL(e)&&e.forEach(function(L,U){i.set(U,Ua(L,t,r,U,e,o))});var T=f?c?oL:aL:c?yL:mL,D=d?void 0:T(e);return zU(D||e,function(L,U){D&&(U=L,L=e[U]),JU(i,U,Ua(L,t,r,U,e,o))}),i}oy.exports=Ua});var iy=u((WQ,sy)=>{"use strict";var QL=gi(),jL=4;function WL(e){return QL(e,jL)}sy.exports=WL});var py=u((VQ,uy)=>{"use strict";var VL=qa(),YL=8;function mi(e,t,r){t=r?void 0:t;var n=VL(e,YL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=mi.placeholder,n}mi.placeholder={};uy.exports=mi});var ly=u((YQ,cy)=>{"use strict";var KL=bt(),HL=_e(),zL=Bo(),JL="[object DOMException]",XL="[object Error]";function ZL(e){if(!HL(e))return!1;var t=KL(e);return t==XL||t==JL||typeof e.message=="string"&&typeof e.name=="string"&&!zL(e)}cy.exports=ZL});var fy=u((KQ,dy)=>{"use strict";var eD=Er(),tD=_e(),rD="[object WeakMap]";function nD(e){return tD(e)&&eD(e)==rD}dy.exports=nD});var my=u((HQ,gy)=>{"use strict";function aD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}gy.exports=aD});var yi=u((zQ,yy)=>{"use strict";var oD=wo(),sD=my(),iD=Eo(),uD=1,pD=2;function cD(e,t,r,n,a,o){var i=r&uD,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 y=-1,m=!0,w=r&pD?new oD:void 0;for(o.set(e,t),o.set(t,e);++y<s;){var T=e[y],D=t[y];if(n)var L=i?n(D,T,y,t,e,o):n(T,D,y,e,t,o);if(L!==void 0){if(L)continue;m=!1;break}if(w){if(!sD(t,function(U,k){if(!iD(w,k)&&(T===U||a(T,U,r,n,o)))return w.push(k)})){m=!1;break}}else if(!(T===D||a(T,D,r,n,o))){m=!1;break}}return o.delete(e),o.delete(t),m}yy.exports=cD});var Ay=u((JQ,hy)=>{"use strict";function lD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}hy.exports=lD});var vy=u((XQ,wy)=>{"use strict";var by=Ut(),Iy=Co(),dD=rr(),fD=yi(),gD=Ay(),mD=ta(),yD=1,hD=2,AD="[object Boolean]",bD="[object Date]",ID="[object Error]",SD="[object Map]",wD="[object Number]",vD="[object RegExp]",ED="[object Set]",_D="[object String]",xD="[object Symbol]",RD="[object ArrayBuffer]",TD="[object DataView]",Sy=by?by.prototype:void 0,hi=Sy?Sy.valueOf:void 0;function OD(e,t,r,n,a,o,i){switch(r){case TD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case RD:return!(e.byteLength!=t.byteLength||!o(new Iy(e),new Iy(t)));case AD:case bD:case wD:return dD(+e,+t);case ID:return e.name==t.name&&e.message==t.message;case vD:case _D:return e==t+"";case SD:var s=gD;case ED:var c=n&yD;if(s||(s=mD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=hD,i.set(e,t);var d=fD(s(e),s(t),n,a,o,i);return i.delete(e),d;case xD:if(hi)return hi.call(e)==hi.call(t)}return!1}wy.exports=OD});var xy=u((ZQ,_y)=>{"use strict";var Ey=ui(),PD=1,qD=Object.prototype,CD=qD.hasOwnProperty;function UD(e,t,r,n,a,o){var i=r&PD,s=Ey(e),c=s.length,f=Ey(t),d=f.length;if(c!=d&&!i)return!1;for(var y=c;y--;){var m=s[y];if(!(i?m in t:CD.call(t,m)))return!1}var w=o.get(e),T=o.get(t);if(w&&T)return w==t&&T==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++y<c;){m=s[y];var U=e[m],k=t[m];if(n)var Ie=i?n(k,U,m,t,e,o):n(U,k,m,e,t,o);if(!(Ie===void 0?U===k||a(U,k,r,n,o):Ie)){D=!1;break}L||(L=m=="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}_y.exports=UD});var Ly=u((ej,Uy)=>{"use strict";var Ai=un(),LD=yi(),DD=vy(),BD=xy(),Ry=Er(),Ty=de(),Oy=fn(),ND=ua(),MD=1,Py="[object Arguments]",qy="[object Array]",La="[object Object]",GD=Object.prototype,Cy=GD.hasOwnProperty;function kD(e,t,r,n,a,o){var i=Ty(e),s=Ty(t),c=i?qy:Ry(e),f=s?qy:Ry(t);c=c==Py?La:c,f=f==Py?La:f;var d=c==La,y=f==La,m=c==f;if(m&&Oy(e)){if(!Oy(t))return!1;i=!0,d=!1}if(m&&!d)return o||(o=new Ai),i||ND(e)?LD(e,t,r,n,a,o):DD(e,t,c,r,n,a,o);if(!(r&MD)){var w=d&&Cy.call(e,"__wrapped__"),T=y&&Cy.call(t,"__wrapped__");if(w||T){var D=w?e.value():e,L=T?t.value():t;return o||(o=new Ai),a(D,L,r,n,o)}}return m?(o||(o=new Ai),BD(e,t,r,n,a,o)):!1}Uy.exports=kD});var bi=u((tj,Ny)=>{"use strict";var FD=Ly(),Dy=_e();function By(e,t,r,n,a){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:FD(e,t,r,n,By,a)}Ny.exports=By});var Gy=u((rj,My)=>{"use strict";var $D=un(),QD=bi(),jD=1,WD=2;function VD(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 y=new $D;if(n)var m=n(f,d,c,e,t,y);if(!(m===void 0?QD(d,f,jD|WD,n,y):m))return!1}}return!0}My.exports=VD});var Ii=u((nj,ky)=>{"use strict";var YD=De();function KD(e){return e===e&&!YD(e)}ky.exports=KD});var $y=u((aj,Fy)=>{"use strict";var HD=Ii(),zD=wr();function JD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,HD(a)]}return t}Fy.exports=JD});var Si=u((oj,Qy)=>{"use strict";function XD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Qy.exports=XD});var Wy=u((sj,jy)=>{"use strict";var ZD=Gy(),eB=$y(),tB=Si();function rB(e){var t=eB(e);return t.length==1&&t[0][2]?tB(t[0][0],t[0][1]):function(r){return r===e||ZD(r,e,t)}}jy.exports=rB});var Da=u((ij,Vy)=>{"use strict";var nB=de(),aB=Sr(),oB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,sB=/^\w*$/;function iB(e,t){if(nB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||aB(e)?!0:sB.test(e)||!oB.test(e)||t!=null&&e in Object(t)}Vy.exports=iB});var Hy=u((uj,Ky)=>{"use strict";var Yy=Zn(),uB="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(uB);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(wi.Cache||Yy),r}wi.Cache=Yy;Ky.exports=wi});var Jy=u((pj,zy)=>{"use strict";var pB=Hy(),cB=500;function lB(e){var t=pB(e,function(n){return r.size===cB&&r.clear(),n}),r=t.cache;return t}zy.exports=lB});var vi=u((cj,Xy)=>{"use strict";var dB=Jy(),fB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,gB=/\\(\\)?/g,mB=dB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(fB,function(r,n,a,o){t.push(a?o.replace(gB,"$1"):n||r)}),t});Xy.exports=mB});var Ei=u((lj,Zy)=>{"use strict";function yB(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=yB});var oh=u((dj,ah)=>{"use strict";var eh=Ut(),hB=Ei(),AB=de(),bB=Sr(),IB=1/0,th=eh?eh.prototype:void 0,rh=th?th.toString:void 0;function nh(e){if(typeof e=="string")return e;if(AB(e))return hB(e,nh)+"";if(bB(e))return rh?rh.call(e):"";var t=e+"";return t=="0"&&1/e==-IB?"-0":t}ah.exports=nh});var _i=u((fj,sh)=>{"use strict";var SB=oh();function wB(e){return e==null?"":SB(e)}sh.exports=wB});var xi=u((gj,ih)=>{"use strict";var vB=de(),EB=Da(),_B=vi(),xB=_i();function RB(e,t){return vB(e)?e:EB(e,t)?[e]:_B(xB(e))}ih.exports=RB});var _r=u((mj,uh)=>{"use strict";var TB=Sr(),OB=1/0;function PB(e){if(typeof e=="string"||TB(e))return e;var t=e+"";return t=="0"&&1/e==-OB?"-0":t}uh.exports=PB});var Ri=u((yj,ph)=>{"use strict";var qB=xi(),CB=_r();function UB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[CB(t[r++])];return r&&r==n?e:void 0}ph.exports=UB});var lh=u((hj,ch)=>{"use strict";var LB=Ri();function DB(e,t,r){var n=e==null?void 0:LB(e,t);return n===void 0?r:n}ch.exports=DB});var fh=u((Aj,dh)=>{"use strict";function BB(e,t){return e!=null&&t in Object(e)}dh.exports=BB});var mh=u((bj,gh)=>{"use strict";var NB=xi(),MB=en(),GB=de(),kB=yn(),FB=ra(),$B=_r();function QB(e,t,r){t=NB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=$B(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&&FB(a)&&kB(i,a)&&(GB(e)||MB(e)))}gh.exports=QB});var hh=u((Ij,yh)=>{"use strict";var jB=fh(),WB=mh();function VB(e,t){return e!=null&&WB(e,t,jB)}yh.exports=VB});var bh=u((Sj,Ah)=>{"use strict";var YB=bi(),KB=lh(),HB=hh(),zB=Da(),JB=Ii(),XB=Si(),ZB=_r(),eN=1,tN=2;function rN(e,t){return zB(e)&&JB(t)?XB(ZB(e),t):function(r){var n=KB(r,e);return n===void 0&&n===t?HB(r,e):YB(t,n,eN|tN)}}Ah.exports=rN});var Sh=u((wj,Ih)=>{"use strict";function nN(e){return function(t){return t?.[e]}}Ih.exports=nN});var vh=u((vj,wh)=>{"use strict";var aN=Ri();function oN(e){return function(t){return aN(t,e)}}wh.exports=oN});var _h=u((Ej,Eh)=>{"use strict";var sN=Sh(),iN=vh(),uN=Da(),pN=_r();function cN(e){return uN(e)?sN(pN(e)):iN(e)}Eh.exports=cN});var Ti=u((_j,xh)=>{"use strict";var lN=Wy(),dN=bh(),fN=tn(),gN=de(),mN=_h();function yN(e){return typeof e=="function"?e:e==null?fN:typeof e=="object"?gN(e)?dN(e[0],e[1]):lN(e):mN(e)}xh.exports=yN});var Th=u((xj,Rh)=>{"use strict";var hN=gi(),AN=Ti(),bN=1;function IN(e){return AN(typeof e=="function"?e:hN(e,bN))}Rh.exports=IN});var Ph=u((Rj,Oh)=>{"use strict";var SN=mo();function wN(e){var t=e==null?0:e.length;return t?SN(e,1):[]}Oh.exports=wN});var Ch=u((Tj,qh)=>{"use strict";var vN=Ph(),EN=yo(),_N=Jn();function xN(e){return _N(EN(e,void 0,vN),e+"")}qh.exports=xN});var Lh=u((Oj,Uh)=>{"use strict";var RN=qa(),TN=Ch(),ON=256,PN=TN(function(e,t){return RN(e,ON,void 0,void 0,void 0,t)});Uh.exports=PN});var Bh=u((Pj,Dh)=>{"use strict";var qN=Ei(),CN=ur(),UN=de(),LN=Sr(),DN=vi(),BN=_r(),NN=_i();function MN(e){return UN(e)?qN(e,BN):LN(e)?[e]:CN(DN(NN(e)))}Dh.exports=MN});var Mh=u((qj,Nh)=>{"use strict";Nh.exports={ary:Xg(),assign:ai(),clone:iy(),curry:py(),forEach:Oa(),isArray:de(),isError:ly(),isFunction:rn(),isWeakMap:fy(),iteratee:Th(),keys:ni(),rearg:Lh(),toInteger:Zs(),toPath:Bh()}});var kh=u((Cj,Gh)=>{"use strict";var GN=Rf(),kN=Mh();function FN(e,t,r){return GN(kN,e,t,r)}Gh.exports=FN});var Oi=u((Uj,$h)=>{"use strict";var $N=kh(),Fh=$N("merge",Fo());Fh.placeholder=Ds();$h.exports=Fh});var Yh=u((Pi,qi)=>{"use strict";(function(e,t){typeof Pi=="object"&&typeof qi<"u"?qi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Pi,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",y="year",m="date",w="Invalid Date",T=/^(\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(R){var S=["th","st","nd","rd"],h=R%100;return"["+R+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(R,S,h){var _=String(R);return!_||_.length>=S?R:""+Array(S+1-_.length).join(h)+R},k={s:U,z:function(R){var S=-R.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(I,2,"0")},m:function R(S,h){if(S.date()<h.date())return-R(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),I=S.clone().add(_,f),P=h-I<0,O=S.clone().add(_+(P?-1:1),f);return+(-(_+(h-I)/(P?I-O:O-I))||0)},a:function(R){return R<0?Math.ceil(R)||0:Math.floor(R)},p:function(R){return{M:f,y,w:c,d:s,D:m,h:i,m:o,s:a,ms:n,Q:d}[R]||String(R||"").toLowerCase().replace(/s$/,"")},u:function(R){return R===void 0}},Ie="en",ee={};ee[Ie]=L;var ke="$isDayjsObject",He=function(R){return R instanceof Tt||!(!R||!R[ke])},ze=function R(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var P=S.toLowerCase();ee[P]&&(I=P),h&&(ee[P]=h,I=P);var O=S.split("-");if(!I&&O.length>1)return R(O[0])}else{var M=S.name;ee[M]=S,I=M}return!_&&I&&(Ie=I),I||!_&&Ie},W=function(R,S){if(He(R))return R.clone();var h=typeof S=="object"?S:{};return h.date=R,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(R,S){return W(R,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function R(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=R.prototype;return S.parse=function(h){this.$d=function(_){var I=_.date,P=_.utc;if(I===null)return new Date(NaN);if(B.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var O=I.match(T);if(O){var M=O[2]-1||0,K=(O[7]||"0").substring(0,3);return P?new Date(Date.UTC(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,K)):new Date(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,K)}}return new Date(I)}(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()!==w},S.isSame=function(h,_){var I=W(h);return this.startOf(_)<=I&&I<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,I){return B.u(h)?this[_]:this.set(I,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var I=this,P=!!B.u(_)||_,O=B.p(h),M=function(b,E){var q=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return P?q:q.endOf(s)},K=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(P?[0,0,0,0]:[23,59,59,999]).slice(E)),I)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(O){case y:return P?M(1,0):M(31,11);case f:return P?M(1,ae):M(0,ae+1);case c:var v=this.$locale().weekStart||0,A=(X<v?X+7:X)-v;return M(P?F-A:F+(6-A),ae);case s:case m:return K(qe+"Hours",0);case i:return K(qe+"Minutes",1);case o:return K(qe+"Seconds",2);case a:return K(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var I,P=B.p(h),O="set"+(this.$u?"UTC":""),M=(I={},I[s]=O+"Date",I[m]=O+"Date",I[f]=O+"Month",I[y]=O+"FullYear",I[i]=O+"Hours",I[o]=O+"Minutes",I[a]=O+"Seconds",I[n]=O+"Milliseconds",I)[P],K=P===s?this.$D+(_-this.$W):_;if(P===f||P===y){var X=this.clone().set(m,1);X.$d[M](K),X.init(),this.$d=X.set(m,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](K);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 I,P=this;h=Number(h);var O=B.p(_),M=function(ae){var F=W(P);return B.w(F.date(F.date()+Math.round(ae*h)),P)};if(O===f)return this.set(f,this.$M+h);if(O===y)return this.set(y,this.$y+h);if(O===s)return M(1);if(O===c)return M(7);var K=(I={},I[o]=t,I[i]=r,I[a]=e,I)[O]||1,X=this.$d.getTime()+h*K;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,I=this.$locale();if(!this.isValid())return I.invalidDate||w;var P=h||"YYYY-MM-DDTHH:mm:ssZ",O=B.z(this),M=this.$H,K=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.meridiem,v=function(E,q,Z,me){return E&&(E[q]||E(_,P))||Z[q].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},b=qe||function(E,q,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return P.replace(D,function(E,q){return q||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 v(I.monthsShort,X,F,3);case"MMMM":return v(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return v(I.weekdaysMin,_.$W,ae,2);case"ddd":return v(I.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 b(M,K,!0);case"A":return b(M,K,!1);case"m":return String(K);case"mm":return B.s(K,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 O}return null}(E)||O.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,I){var P,O=this,M=B.p(_),K=W(h),X=(K.utcOffset()-this.utcOffset())*t,ae=this-K,F=function(){return B.m(O,K)};switch(M){case y:P=F()/12;break;case f:P=F();break;case d:P=F()/3;break;case c:P=(ae-X)/6048e5;break;case s:P=(ae-X)/864e5;break;case i:P=ae/r;break;case o:P=ae/t;break;case a:P=ae/e;break;default:P=ae}return I?P:B.a(P)},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 I=this.clone(),P=ze(h,_,!0);return P&&(I.$L=P),I},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()},R}(),Dn=Tt.prototype;return W.prototype=Dn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",y],["$D",m]].forEach(function(R){Dn[R[1]]=function(S){return this.$g(S,R[0],R[1])}}),W.extend=function(R,S){return R.$i||(R(S,Tt,W),R.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(R){return W(1e3*R)},W.en=ee[Ie],W.Ls=ee,W.p={},W})});var ab=u((kW,nb)=>{"use strict";function fM(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}nb.exports=fM});var sb=u((FW,ob)=>{"use strict";var gM=Po(),mM=wr();function yM(e,t){return e&&gM(e,t,mM)}ob.exports=yM});var ub=u(($W,ib)=>{"use strict";var hM=or();function AM(e,t){return function(r,n){if(r==null)return r;if(!hM(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}}ib.exports=AM});var cb=u((QW,pb)=>{"use strict";var bM=sb(),IM=ub(),SM=IM(bM);pb.exports=SM});var fb=u((jW,lb)=>{"use strict";var wM=cb();function vM(e,t,r,n){return wM(e,function(a,o,i){t(n,a,r(a),i)}),n}lb.exports=vM});var mb=u((WW,gb)=>{"use strict";var EM=ab(),_M=fb(),xM=Ti(),RM=de();function TM(e,t){return function(r,n){var a=RM(r)?EM:_M,o=t?t():{};return a(r,e,xM(n,2),o)}}gb.exports=TM});var hb=u((VW,yb)=>{"use strict";var OM=pn(),PM=mb(),qM=Object.prototype,CM=qM.hasOwnProperty,UM=PM(function(e,t,r){CM.call(e,r)?e[r].push(t):OM(e,r,[t])});yb.exports=UM});var WM={};x(WM,{Method:()=>Va,ai:()=>ki,api:()=>Ji,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,constants:()=>Kr,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,mappers:()=>ne,middleware:()=>Bi,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,sdk:()=>Ci,users:()=>lt,utils:()=>er});module.exports=$b(WM);var Va=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Va||{});var Ci={};x(Ci,{ai:()=>gr,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,users:()=>lt,utils:()=>er});var fa={};x(fa,{getBrandingConfig:()=>DR});var Re={};x(Re,{checkBackups:()=>xe,checkFeature:()=>la,checkFeatures:()=>zo,checkSCIM:()=>es,isAICustomConfigsEnabled:()=>UR,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>da,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isBudibaseAIEnabled:()=>In,isEnforceableSSO:()=>Ud,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>PR,isSyncAutomationsEnabled:()=>TR,isTriggerAutomationRunEnabled:()=>OR,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>qR,isViewReadonlyColumnsEnabled:()=>CR});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};x(tt,{cache:()=>$e,client:()=>At,features:()=>Yn,getFreeLicense:()=>Ko,getLicense:()=>Yo,keys:()=>Ho,offline:()=>pa,quotas:()=>Kn});var $e={};x($e,{getCachedLicense:()=>qd,invalidate:()=>Cd,refresh:()=>Lt});var Ya=require("@budibase/backend-core"),Pr,Qb=async()=>{Pr=await new Ya.redis.Client(Ya.redis.utils.Databases.LICENSES).init()},jb=async()=>{Pr&&await Pr.finish()};process.on("exit",async()=>{await jb()});var Ka=async()=>(Pr||await Qb(),Pr);var At={};x(At,{activateLicenseKey:()=>po,getLicense:()=>Xt,triggerQuota:()=>qI});var ru=N(require("node-fetch"));var nu=require("@budibase/backend-core"),Ha=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";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.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}},za=Ha;var Vn=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};x(Xe,{bustCache:()=>su,getCurrentUsageValues:()=>cu,getQuotaUsage:()=>Ot,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,utils:()=>Cr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Cr={};x(Cr,{generateBaseQuotaUsage:()=>Mn,generateNewMonthlyQuotas:()=>qr,generateNewQuotaUsage:()=>Xa,getBreakdownName:()=>kn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Gn,setQuotaReset:()=>Ja});var ue=require("@budibase/types"),Nn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ja=e=>{e.quotaReset=au()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Mn=()=>({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()]:qr()}}),Xa=()=>{let e={_id:Nn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...Mn(),apps:{}};return Gn(e),e},qr=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Gn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=qr()),e.monthly.current=e.monthly[t]},kn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Nn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Nn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Vb=le.Duration.fromSeconds(60).toMs(),{Writethrough:Yb}=le.cache.writethrough;function Kb(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 Za=()=>new Yb(le.tenancy.getGlobalDB(),Vb),su=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=Za(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Gn(t),Ja(t)}catch(r){if(r.status===404){t=Xa();let n=await e.put(t);t._rev=n.rev}else throw r}return Kb(t)},iu=async(e,t,r)=>to({name:t,type:r,values:{total:e}}),uu=async(e,t,r)=>{let n=Za(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=pu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},Hb=(e,t,r,n)=>{let a=kn(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},eo=(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]:Mn()});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]=qr(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=Hb(f,c,n.id,a));break}}return e},ou=(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,y=kn(s,n);return y&&n&&c.breakdown?.[y]&&(d=c.breakdown[y]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},zb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Jb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},pu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,zb(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,Jb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return eo(e,t,r,a,n)},to=async e=>{let t=Array.isArray(e)?e:[e],r=Za(),n=await Ot();for(let o of t)n=pu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},cu=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=ou(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=ou(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={};x(Ue,{destroy:()=>eI,get:()=>ro,save:()=>Zb});var yt=require("@budibase/backend-core"),Xb=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),Zb=async e=>{let t=await ro();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},ro=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Xb();throw t}},eI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await ro();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};x(V,{bulkSave:()=>dI,destroy:()=>fI,fetch:()=>uI,generateUserGroupID:()=>sI,get:()=>pI,getBulk:()=>cI,getByName:()=>no,getGroupUsers:()=>$n,getGroupUsersParams:()=>mu,getUserGroupsParams:()=>gu,save:()=>lI});var Q=require("@budibase/backend-core");var Fe=require("@budibase/types"),Ht=require("@budibase/backend-core");async function lu(){let e=Ht.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=Ht.context.getAuditLogsDB(),r;try{r=await t.get(Ht.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Fn=require("@budibase/backend-core"),{ViewName:tI,SEPARATOR:rI,DocumentType:nI,createView:aI}=Fn.db,oI=nI.USER+rI;async function du(){let e=Fn.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${oI}") && 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 aI(e,t,tI.USER_BY_GROUP)}var fu=`${Q.DocumentType.GROUP}${Q.SEPARATOR}`;function gu(e,t={}){e||(e="");let r=e?.startsWith(Q.DocumentType.GROUP)?"":fu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${Q.UNICODE_MAX}`}}function mu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${Q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${Q.UNICODE_MAX}`,startkey_docid:n}}function sI(){return`${fu}${Q.utils.newid()}`}async function $n(e,t){let r=Q.tenancy.getGlobalDB();return(await Q.db.queryView(Q.db.ViewName.USER_BY_GROUP,mu(e,t),r,du,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function Ur(e){return e.users=await $n(e._id),e}async function iI(e){let r=(await Ur(e)).users?.map(o=>o._id),n=await Q.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 Q.users.bulkUpdateGlobalUsers(a)}async function yu(){return(await Q.tenancy.getGlobalDB().allDocs(gu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function uI(){let e=await yu(),t=[];for(let r of e)t.push(Ur(r));return await Promise.all(t)}async function pI(e){let r=await Q.tenancy.getGlobalDB().get(e);return await Ur(r)}async function cI(e,t={enriched:!0}){let n=await Q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(Ur(o));return await Promise.all(a)}else return n}async function lI(e){return await Q.tenancy.getGlobalDB().put(e)}async function dI(e){return await Q.tenancy.getGlobalDB().bulkDocs(e)}async function fI(e,t){let r=Q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await iI(n),a}async function no(e){let t=e.toLowerCase(),n=(await yu()).find(a=>a.name.toLowerCase()===t);if(n)return await Ur(n)}var Le={};x(Le,{deleteAppBackupMetadata:()=>xI,fetchAppBackups:()=>vI,generateAppBackupID:()=>Pu,getAppBackupMetadata:()=>RI,oldestBackupDate:()=>Tu,storeAppBackupMetadata:()=>EI,updateAppBackupMetadata:()=>_I});var z=require("@budibase/backend-core"),Ru=require("@budibase/types");function Lr(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 zt=require("@budibase/backend-core"),{ViewName:Au,AutomationViewMode:ao,SEPARATOR:Ze,DocumentType:bu,createView:Iu}=zt.db,gI=bu.AUTOMATION_LOG+Ze,hu=bu.APP_BACKUP+Ze;async function Su(){let e=zt.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${gI}")) {
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 = "${ao.AUTOMATION}${Ze}" + autoId + doc.createdAt
15
+ let statusKey = "${ao.STATUS}${Ze}" + status + doc.createdAt
16
+ let allKey = "${ao.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,Au.AUTOMATION_LOGS)}async function wu(){let e=zt.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${hu}") && 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("${hu}" + 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,Au.APP_BACKUP_BY_TRIGGER)}var xu=require("@budibase/types");var Kr={};x(Kr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>Jt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Yr});var Ee={};x(Ee,{CLOUD_FREE_LICENSE:()=>yI,SELF_FREE_LICENSE:()=>oo,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>hI});var ht=require("@budibase/types");var ut={};x(ut,{UNLIMITED:()=>mI,appBackupRetentionDays:()=>Wr,apps:()=>Br,automationLogRetentionDays:()=>jr,automations:()=>$r,budibaseAICredits:()=>Qr,creators:()=>Mr,customAIConfigurations:()=>Vr,plugins:()=>kr,queries:()=>Fr,rows:()=>Dr,userGroups:()=>Gr,users:()=>Nr});var he=require("@budibase/types"),mI=-1,Dr=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Br=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Nr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Gr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),kr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Fr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),$r=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Qr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),jr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Wr=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Vr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,yI={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(200),...Qr(0)},static:{...Br(te),...Dr(2e3),...Nr(5),...Mr(5),...Gr(0),...kr(10),...Vr(0)}},constant:{...jr(1),...Wr(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},oo={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(te),...Qr(0)},static:{...Dr(te),...Br(te),...Nr(20),...Mr(te),...Gr(0),...kr(10),...Vr(0)}},constant:{...jr(1),...Wr(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},hI={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(te),...Qr(te)},static:{...Br(te),...Dr(te),...Nr(te),...Mr(te),...Gr(te),...kr(te),...Vr(te)}},constant:{...jr(te),...Wr(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Yr={};x(Yr,{getLicenseVersion:()=>AI,getProVersion:()=>Eu});var Pt=require("@budibase/backend-core"),Qn=N(require("fs")),vu=N(require("path")),AI=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=vu.default.join(Pt.objectStore.budibaseTempDir(),e);if(Qn.default.existsSync(t))return Qn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return Qn.default.writeFileSync(t,r),r}}else return Eu()},Eu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Jt={};x(Jt,{searchTable:()=>bI});var qt=require("@budibase/types"),_u=require("@budibase/backend-core");function bI(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:_u.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var II=new Date(864e13).toISOString(),SI=1e3*60*60*24;async function jn(e){let r=(await $e.getCachedLicense()).quotas?.[xu.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(II).toISOString():new Date(new Date().getTime()-SI*r).toISOString()}async function Tu(){return jn(Ru.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var so=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function wI(e,t,r={}){let n=await Tu(),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:`${so}${o}${z.db.UNICODE_MAX}`,endkey:`${so}${i}`}}async function Ou(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 wu(),Ou(e,t);throw r}}function Pu(e,t){return`${so}${e}${z.db.SEPARATOR}${t}`}async function vI(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await wI(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 Ou(r,o);let i=Lr(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 EI(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Pu(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 _I(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function xI(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function RI(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};x(Ct,{get:()=>OI,getCacheEnvVarID:()=>Uu,getEnvVarID:()=>Wn,update:()=>PI});var Qe=require("@budibase/backend-core"),Cu=N(require("lru-cache")),TI=1e3,qu=new Cu.default({max:TI});function Wn(){return Qe.StaticDatabases.GLOBAL.docs.environmentVariables}function Uu(e){return`${Qe.tenancy.getTenantId()}/${Wn()}/${e||""}`}async function OI(){let e=Wn(),t=Qe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Uu(r?._rev),o=qu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(Qe.encryption.decrypt(r.variables,Qe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},qu.set(a,i),i}async function PI(e){let t=Wn();return await Qe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Qe.encryption.encrypt(JSON.stringify(e.variables),Qe.encryption.SecretOption.ENCRYPTION)})}var io=new za(G.env.ACCOUNT_PORTAL_URL),uo=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{}},Lu=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)},Du=async()=>Lu(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,Vn.StaticQuotaName.USERS,Vn.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Yr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await io.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await uo(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()&&(Du=jest.fn());var Xt=Du,qI=e=>Lu(async t=>{let r=await io.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await uo(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),po=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await io.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 uo(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Vo=require("@budibase/backend-core");var pa={};x(pa,{activateOfflineLicenseToken:()=>mR,deleteOfflineLicenseToken:()=>yR,dev:()=>An,enrichLicense:()=>xd,getIdentifier:()=>$o,getIdentifierBase64:()=>hR,getIdentifierFromBase64:()=>AR,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>vd,signing:()=>Jr,verifyExpiry:()=>Ed,verifyInstallation:()=>_d});var Jr={};x(Jr,{sign:()=>UI,verifyLicenseToken:()=>zr});var co=N(require("jsonwebtoken")),CI=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,8 +34,119 @@ 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 zr(e){return co.default.verify(e,CI,{algorithms:["RS256"]})}function UI(e,t){return co.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Yn={};x(Yn,{getFeatures:()=>lo});var l=require("@budibase/types");var LI={[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]},DI={[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 lo(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(LI);break;case l.Hosting.CLOUD:r=n(DI);break}return r}var Kn={};x(Kn,{UNLIMITED:()=>g,getQuotas:()=>fo});var Y=require("@budibase/types");var p=ut,Bu=Ee,g=-1,Xr=e=>e*1e6,BI={[Y.PlanType.FREE]:{...Bu.CLOUD_FREE_LICENSE.quotas},[Y.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)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}}},NI={[Y.PlanType.FREE]:{...Bu.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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 fo(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 Y.Hosting.SELF:r=n(NI);break;case Y.Hosting.CLOUD:r=n(BI);break}return JSON.parse(JSON.stringify(r))}var er={};x(er,{appExists:()=>MI,encoding:()=>Zt});var Nu=require("@budibase/backend-core");async function MI(e){return(await Nu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};x(Zt,{base64ToObject:()=>kI,objectToBase64:()=>GI});function GI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function kI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Id=require("@budibase/types"),fr=require("@budibase/backend-core"),Sd=N(Zc()),wd=N(Fo());async function mR(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function yR(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function vd(){return(await Ue.get()).offlineLicenseToken}async function $o(){let t=(await fr.installation.getInstall()).installId,r=fr.context.getTenantId(),n=await fr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function hR(){let e=await $o();return Zt.objectToBase64(e)}function AR(e){return Zt.base64ToObject(e)}function Ed(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 _d(e){let t=await $o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function xd(e){let t=e.plan.type,r=Id.Hosting.SELF,n=lo(r,t),a=fo(r,t);return e.features=(0,Sd.default)(e.features,n),e.quotas=(0,wd.default)(e.quotas,a),e}async function Qo(){try{let e=await vd();if(e){let t=await zr(e);return Ed(t),await _d(t),xd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var An={};x(An,{deleteDevLicense:()=>vR,getOfflineLicense:()=>SR,writeDevLicenseToDisk:()=>wR});var Rd=require("@budibase/backend-core"),Wo=require("path"),Td=require("os"),Dt=N(require("fs"));var bR=Rd.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,Td.tmpdir)(),bR),IR="dev_license.txt",hn=(0,Wo.join)(jo,IR);if(!Dt.default.existsSync(jo))try{Dt.default.mkdirSync(jo)}catch{}function SR(){try{if(Dt.default.existsSync(hn)){let e=Dt.default.readFileSync(hn,{encoding:"utf-8"});return zr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function wR(e){console.log(`Writing license to: ${hn}`),Dt.default.writeFileSync(hn,e,{encoding:"utf-8"})}function vR(){Dt.default.rmSync(hn,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Qo();let e=await Xt();return e||(e=An.getOfflineLicense()),e},Ko=()=>Vo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ho={};x(Ho,{activateLicenseKey:()=>ER,deleteLicenseKey:()=>xR,getLicenseKey:()=>_R});async function ER(e){await po(e),await Ue.save({licenseKey:e}),await Lt()}async function _R(){return(await Ue.get()).licenseKey}async function xR(){await Ue.save({licenseKey:void 0}),await Lt()}var bn=require("@budibase/backend-core"),ca=N(require("dd-trace")),Od=3600,Lt=async()=>{await Cd(),await qd()},Pd=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:n=Ko}=t||{};return await ca.default.trace("getCachedLicense",async a=>{let o=bn.tenancy.getTenantId(),i=await Ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ca.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ca.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Od}),await i.store(o,s,Od),s)})};bn.env.isJest()&&(Pd=jest.fn());var qd=Pd,Cd=async()=>{let e=bn.tenancy.getTenantId();await(await Ka()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await $e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function la(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function xe(e){return async(...t)=>(await la(fe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return ge(fe.Feature.APP_BACKUPS)}async function Xo(){return ge(fe.Feature.BRANDING)}async function Ud(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function TR(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function OR(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function da(){return ge(fe.Feature.AUDIT_LOGS)}async function Zo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function PR(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ud())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=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 qR(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function CR(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function In(){return ge(fe.Feature.BUDIBASE_AI)}async function UR(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var LR={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 DR(e){return await Xo()?{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}:LR}var gr={};x(gr,{enrichAIConfig:()=>ts,generateJs:()=>MR});var Sn=require("@budibase/backend-core"),Ld=N(require("openai")),Dd=require("@budibase/string-templates"),BR="budibase_ai",NR=/```(?:\w+)?\n([\s\S]+?)\n```/;async function ts(e){return await In()&&(e.config[BR]={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}async function MR(e,t=[],r=[]){if(!Sn.env.OPENAI_API_KEY)throw new Sn.HTTPError("OpenAI API key is not set",500);let n=new Ld.default({apiKey:Sn.env.OPENAI_API_KEY}),a="You do not have access to any bindings in this request.";t&&t.length>0&&(a=`The bindings you have access to are:
38
+
39
+ ${t.map(({readableBinding:m})=>`- $("${m}")`).join(`
40
+ `)}`);let o="You do not have access to any snippets in this request.";r.length>0&&(o=`The snippets you have access to are:
41
+
42
+ ${r.map(({name:m,code:w})=>{let T=w.replace(/^\s*return /g,"");return`- snippets.${m} = ${T.trim()}`}).join(`
43
+ `)}`);let i=(0,Dd.getManifest)(),s=`You have access to the following helpers:
44
+
45
+ `;for(let m of Object.values(i))for(let[w,{args:T,description:D}]of Object.entries(m)){let L=`${w}(${T.join(", ")})`;s+=`- helpers.${L}: ${D.trim()}
46
+ `}let c=`
47
+ You are a helpful expert in writing JavaScript. A user is asking you for help
48
+ writing some JavaScript for their application.
49
+
50
+ Your reply MUST only contain JavaScript code. No explanations,
51
+ no markdown, no delimiters around it. It is crucial for it to only
52
+ be the code itself.
53
+
54
+ The JavaScript you write is going to be run in a sandboxed environment. It
55
+ only has access to the things I describe to you in this description. It does
56
+ not have access to things like \`fetch\` and \`window\`. It also does not have
57
+ access to the global scope. You can only use the variables and functions I
58
+ describe to you.
59
+
60
+ The code you are to return is a JavaScript function, except without
61
+ the function signature, opening brace, and closing brace. Just the
62
+ content of the function. The wrapper around the function is
63
+ generated elsewhere. Your code _must_ complete with a \`return\` statement.
64
+ It is incorrect for there to be no returns, or for the return to be
65
+ missing a value.
66
+
67
+ If you receive a request that is not to generate code, is abusive, is
68
+ inappropriate, is vague, is ambiguous, or is otherwise not useful, you should
69
+ respond with an empty string. Nothing else, just a completely blank response.
70
+ Your code is to write code and you should not attempt to do anything else.
71
+
72
+ The JavaScript code you're going to write has access to some special global
73
+ variables and functions that are not standard to JavaScript. These are:
74
+
75
+ - \`$\`: This function allows you to access a context object. The contents of
76
+ this object will be described later. It takes a string and can return data
77
+ of any primitive JS type. You are to infer the type and meaning of the data
78
+ from the string you pass to it. An example of how to call this function would
79
+ be \`$("Current User.firstName")\`. There are no other properties on \`$\`,
80
+ do not try to access them.
81
+ - \`helpers\`: An object that contains references to many utility functions.
82
+ A full list will be provided later. You should only use a helper if the
83
+ equivalent JavaScript would be more than 4 lines of code. If you're unsure,
84
+ err on the side of using plan JavaScript. All calls to helper functions look
85
+ like \`helpers.myFunctionName(args)\`.
86
+ - \`snippets\`: An object that contains references to many user-defined utility
87
+ functions. A full list will be provided later. If a solution is possible
88
+ using the provided snippets, you should use them. All calls to snippet
89
+ functions look like \`snippets.myFunctionName(args)\`.
90
+
91
+ What follows are some example responses, indented 2 spaces, with an explanation
92
+ beneath each of whether it's right or wrong.
93
+
94
+ console.log("Hello, world!")
95
+
96
+ This is incorrect but only because there is no return statement. All code you
97
+ produce must return a value.
98
+
99
+ const foo = "bar"
100
+ return foo
101
+
102
+ This is correct.
103
+
104
+ const length = $("Current User.firstName").length
105
+ return length
106
+
107
+ This is correct, and correctly uses a binding.
108
+
109
+ const name = $.get("Current User.firstName")
110
+ return name
111
+
112
+ This is incorrect, $.get is not a function.
113
+
114
+ return window.location.href;
115
+
116
+ This is incorrect, window is not available in our sandbox.
117
+
118
+ function main() {
119
+ return 4;
120
+ }
121
+ main();
122
+
123
+ This is incorrect, nothing is returned. It's fine to define functions but the
124
+ code you produce must return a value.
125
+
126
+ return helpers.sum(1, 2);
127
+
128
+ This is incorrect, helpers.sum exists but is trivially achieved in plain
129
+ JavaScript. You should only use helpers if the resulting code would be more
130
+ than 4 lines long in plain JavaScript.
131
+
132
+ return someVar.length;
133
+
134
+ This is incorrect because it references a variable that is not defined. When you
135
+ are asked to do something with some value, that value will be provided to you
136
+ as a binding.
137
+
138
+ return snippets.processForAccount(amount);
139
+
140
+ This is incorrect because it references an undefined variable "amount". It is
141
+ important that you never reference a variable that is not defined. If you need
142
+ a variable, it will be provided to you as a binding.
143
+
144
+ ${s}
145
+
146
+ ${o}
147
+
148
+ ${a}`,d=(await n.chat.completions.create({model:"gpt-4o",messages:[{role:"system",content:c},{role:"user",content:e}]})).choices[0].message.content,y=d.match(NR);return y&&(d=y[1]),d}var Ve={};x(Ve,{addApp:()=>QR,addAutomation:()=>HR,addCustomAIConfig:()=>zR,addGroup:()=>ns,addPlugin:()=>os,addRow:()=>WR,addRows:()=>YR,addUsers:()=>ma,bustCache:()=>su,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>cu,getLicensedQuota:()=>Nd,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>us,incrementMany:()=>Nt,removeApp:()=>jR,removeCustomAIConfig:()=>JR,removeCustomAIConfigs:()=>XR,removeGroup:()=>as,removePlugin:()=>ss,removeRow:()=>VR,removeRows:()=>KR,removeUsers:()=>Ar,set:()=>rs,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,updatePluginCount:()=>is,updateUsage:()=>mr,usageLimitIsExceeded:()=>$R,utils:()=>Cr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Bd({change:1,name:e,type:t,opts:r}),Nt=e=>Bd(e),Bd=async e=>{let t=Array.isArray(e)?e:[e];await mr(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 mr(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={})=>mr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return mr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},rs=async(e,t,r)=>Xe.setUsage(r,e,t),GR=(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]||{}:{}}},kR=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)}},FR=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await GR(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 m=s[f+1]||100;(!(c>=m)||c===d)&&await kR(t,n,c,o)}}else i[d]=void 0;return i},mr=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 Nd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:m,app:w,breakdown:T}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);m+=d.usageChange,w!=null&&(w+=d.usageChange),T!=null&&(T+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await FR(d.type,d.name,m,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&m>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(m=Math.max(0,m),w&&(w=Math.max(0,w)),T&&(T=Math.max(0,T),s={...s,[d.name]:T}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(m=await L(),w=m),o={...o,[d.name]:m},i={...i,[d.name]:w}}}catch(m){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,m),m}}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)},Nd=async(e,t,r)=>{let n=await $e.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")},$R=async(e,t)=>{try{return await mr({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 yr=require("@budibase/types"),Md=require("@budibase/backend-core"),Gd=async()=>{let e=await Md.db.getAllApps({dev:!0});return e?e.length:0},QR=async(e,{appId:t}={})=>Te(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{fn:e,valueFn:Gd,id:t}),jR=async({appId:e}={})=>je(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{valueFn:Gd,id:e});var rt=require("@budibase/types"),WR=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),VR=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),YR=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),KR=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var ga=require("@budibase/types"),HR=async(e,{automationId:t}={})=>Te(ga.MonthlyQuotaName.AUTOMATIONS,ga.QuotaUsageType.MONTHLY,{fn:e,id:t});var hr=require("@budibase/types"),ns=async e=>Te(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC);var St=require("@budibase/types"),os=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),ss=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),is=async e=>rs(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),wn=require("@budibase/backend-core");var ma=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:wn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}});let a=await Nt(n);return await Xt(),a},Ar=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}}),await Mt(r),await Xt()};var We=require("@budibase/types"),us=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),zR=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),JR=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),XR=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};x(lt,{addAppBuilder:()=>nT,db:()=>at,removeAppBuilder:()=>aT});var En=require("@budibase/backend-core");var J={};x(J,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>rT,cleanupApp:()=>tT,enrichUserRolesFromGroups:()=>eT,fetch:()=>vn,get:()=>kt,getBulk:()=>Vd,getGroupBuilderAppIds:()=>Wd,getGroupRoleId:()=>ZR,remove:()=>ps,removeAppBuilder:()=>gs,removeUsers:()=>ls,save:()=>br,updateGroupApps:()=>ds});var C=require("@budibase/backend-core");var kd=require("@budibase/backend-core"),ya=class extends kd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Qd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[C.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await C.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 C.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function jd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Wd(e,t){if(!e.userGroups)return[];let r=await jd(e.userGroups,t?.groups),n=t?.appId?C.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 ZR(e,t,r){if(!e.userGroups)return null;let n=await jd(e.userGroups,r?.groups),a=C.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Qd(n,t))}async function eT(e){if(!e||!e.userGroups)return e;let t=await Vd(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 C.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Qd(t,a);o&&(e.roles[a]=o)});let n=await Wd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function vn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function Vd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Fd(e){if(await V.getByName(e))throw new ya(e)}async function $d(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await C.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await C.userUtils.creatorsInList(n)).filter(o=>o).length}async function br(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Fd(e.name),t.push(C.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Fd(e.name),t.push(C.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await $d(o)),Object.values(e.roles).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(C.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ns(a);{let o=await a();if(n>0)await ma(0,n);else if(n<0){let i=await $d(e),s=Math.abs(n)-i;s>0&&await Ar(0,s)}return o}}async function ps(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=C.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(w=>i.get(w._id)))).map(w=>({...w,userGroups:w.userGroups.filter(T=>T!==e)})),y=(await C.userUtils.creatorsInList(f)).filter(w=>w).length,m=s.length-y;m&&(a=()=>Ar(0,m))}let o=await V.destroy(e,t);return await C.events.group.deleted(r),await as(),await a(),o}async function cs(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await C.userUtils.creatorsInList(a)).filter(y=>y).length,d=a.length-f;d&&await ma(0,d)}let s=[];for(let c of t)s.push(C.cache.user.invalidateUser(c));return await Promise.all(s),await C.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await C.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await Ar(0,f)}let i=[];for(let s of t)i.push(C.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await C.events.group.usersDeleted(a.length,r),a}async function ds(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 br(r)}async function tT(e){let t=await vn(),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 fs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await br(n))}async function gs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await br(n))}async function rT(){if(!await Zo()){let e=C.tenancy.getGlobalDB(),r=(await vn()||[]).filter(n=>Object.values(n?.roles||{}).includes(C.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(y=>y!==n._id)})),c=(await C.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await Ar(0,f)}}}En.users.UserDB.init(Ve,J,Re);var at=En.users.UserDB;async function nT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.addAppBuilder(e,t)}async function aT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.removeAppBuilder(e,t)}var Aa={};x(Aa,{logs:()=>ws});var ws={};x(ws,{logSearch:()=>fT,oldestLogDate:()=>Zd,storeLog:()=>gT});var Xd=require("@budibase/types"),ha=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var Yd=require("@budibase/backend-core");async function Kd(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||Yd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:oT,DocumentType:Hd,AutomationViewMode:ms,ViewName:sT,getQueryIndex:iT}=pe.db,uT=new Date(0).toISOString(),pT=100,ys=async()=>jn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function zd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${ms.ALL}${dt}${i}${o}`:r?s=`${ms.STATUS}${dt}${i}`:n?s=`${ms.AUTOMATION}${dt}${o}`:s=`${Hd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${oT}`,endkey:`${s}${e}`}}function hs(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 cT(e,t,r){return`${Hd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function As(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=zd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Lr(s,{paginate:r?.paginate,pageSize:9})}async function bs(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=zd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(iT(sT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Su(),bs(e,t,r);throw o}return Lr(a,{paginate:!0,pageSize:9})}async function Jd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=hs(t),i=new Date().toISOString(),s=cT(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 Kd(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 lT(){let e=await ys();try{return await As(uT,e,{docs:!1,paginate:!1,limit:pT})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=pe.context.getProdAppDB();try{let t=await lT();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=ys;async function dT(e,t,r,n){let a,o=new Date().toISOString(),i=await Zd();return(!e||e<i)&&(e=i),r||t?a=await bs(e,o,{automationId:r,status:t,page:n}):a=await As(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function fT(e){return await Ss(),await dT(e.startDate,e.status,e.automationId,e.page)}async function gT(e,t){if(!ha.db.isProdAppID(ha.context.getAppId()))return;let r=hs(t),n=await Jd(e,t);r===Xd.AutomationStatus.ERROR&&await Is([n]),await Ss()}var ba={};x(ba,{checkPluginQuotas:()=>hT,deletePlugin:()=>yT,storePlugin:()=>mT});var nf=require("@budibase/types"),oe=require("@budibase/backend-core");var ef=N(require("fs")),tf=require("path");function rf(e,t){return ef.default.readFileSync((0,tf.join)(e,t),"utf8")}async function mT(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===nf.PluginType.DATASOURCE){let js=rf(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 os(write)}async function yT(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 ss()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function hT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await is(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};x(ot,{fetch:()=>bT,fetchValues:()=>IT,isEncryptionKeyAvailable:()=>AT,isValid:()=>sf,remove:()=>wT,update:()=>ST});var _n=require("@budibase/types"),af=require("@budibase/backend-core");function AT(){return!!af.env.ENCRYPTION_KEY}async function bT(){let e=await Ct.get();return Object.keys(e.variables)}async function IT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case _n.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case _n.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function of(e){if(!(await tt.cache.getCachedLicense()).features.includes(_n.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 ST(e,t){if(sf(e))await of(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function wT(e){await of(t=>(delete t[e],t))}function sf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};x(vt,{definitions:()=>UT,download:()=>CT,fetch:()=>qT,write:()=>OT});var Sa=require("@budibase/types");var re=require("@budibase/backend-core"),Ye=require("@budibase/types");var uf=require("memorystream"),pf=new re.sql.Sql(Ye.SqlClient.SQL_LITE);async function vT(e,t,r){let n={operation:Ye.Operation.READ,table:Jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=pf._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 ET(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function cf(e){e._id||(e._id=ET(e.timestamp)),e.type||(e.type=Ye.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 vs(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await vT(e,t,a),i=Jt.searchTable(),s=pf.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 _T(),await lu(),await vs(e,t,{isRetry:!0});throw a}}async function _T(){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:Ye.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function lf(e){let t=re.context.getAuditLogsDB(),r=new uf,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 uf;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)+`
149
+ `;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Ia=require("@budibase/types"),xn=require("@budibase/string-templates"),Rn=require("@budibase/backend-core"),RT=Rn.constants.MIN_VALID_DATE.toISOString(),TT=Rn.constants.MAX_VALID_DATE.toISOString();function Es(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||RT,e.endDate=e.endDate||TT),e}async function df(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Rn.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=Es(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(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 xs(e){let t=(0,xn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,xn.processStringSync)(e,{})}return e}function ff(e,t){let r=Ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,xn.processStringSync)(r,t);return n.includes('""')&&(n=xs(r)),n}async function OT(e,t,r){if(!await da()||!Se.utils.isAudited(e))return;let n=ff(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Sa.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 cf(o)}async function PT(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(y=>y?._id===s.userId),f=o.find(y=>Se.db.isSameAppID(y?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||_s(s.userId,"user",s.fallback)};s.appId&&(d.app=f||_s(s.appId,"app",s.fallback)),i.push(d)}return i}async function qT(e){if(!await da())throw new Error("Audit logs not available - license required.");let t=await df(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await PT(r.rows)}}function CT(e){return e=Es(e),lf(e)}function UT(){let e=Object.entries(Sa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=xs(r[1]);return t}var wa={};x(wa,{applications:()=>Ps,roles:()=>Ts,users:()=>Rs});var Rs={};x(Rs,{roleCheck:()=>DT});function LT(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 DT(e,t){return await ct()||LT(e,t),e}var Ts={};x(Ts,{assign:()=>BT,unAssign:()=>NT});var Tn=require("@budibase/backend-core");async function BT(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=Tn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=Tn.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 NT(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=Tn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=Tn.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 Ps={};x(Ps,{buildExportFn:()=>GT,buildImportFn:()=>MT});var Os=require("@budibase/backend-core");function MT(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 Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function GT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Os.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"),be=require("@budibase/types");var qs=require("@budibase/backend-core"),gf;function mf(){gf=qs.queue.createQueue(qs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return gf}var yf=require("path"),hf=N(require("fs"));async function Cs(e,t={}){return Le.storeAppBackupMetadata(e,t)}function Af(e){let t=new Date().toISOString();switch(e){case be.AppBackupStatus.COMPLETE:case be.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case be.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case be.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function kT(e,t,r,n){let a=await va(e);return await Le.storeAppBackupMetadata({...a,...Af(t),contents:r,status:t,type:be.AppBackupType.BACKUP},{filename:n,docId:e})}async function FT(e,t,r){let n=await va(e);return await Le.storeAppBackupMetadata({...n,...Af(r),status:r,type:be.AppBackupType.RESTORE,trigger:be.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function va(e){return Le.getAppBackupMetadata(e)}async function $T(e,t){return Le.updateAppBackupMetadata(e,t)}async function QT(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 jT(e,t){return Le.fetchAppBackups(e,t)}async function bf(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 WT(e){let{stream:t}=await bf(e),r=(0,yf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=hf.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 VT(e,t,r={}){let n;try{n=await Cs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.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,be.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await va(t),o;try{o=await Cs({appId:e,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.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:Jo,triggerAppRestore:xe(YT),triggerAppBackup:xe(VT),getBackupDownloadStream:xe(bf),downloadAppBackup:xe(WT),fetchAppBackups:xe(jT),storeAppBackupMetadata:xe(Cs),updateBackupStatus:xe(kT),updateRestoreStatus:xe(FT),getAppBackup:xe(va),updateAppBackup:xe($T),deleteAppBackup:xe(QT)},ft=KT;var Ls={};x(Ls,{init:()=>Us});var se=require("@budibase/backend-core");var Ke=require("@budibase/types");var Ir=N(require("fs"));async function Us(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return JT(t,e);if(r.import)return zT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function HT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function If(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:Ke.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`,y=se.objectStore.ObjectStoreBuckets.BACKUPS,m=Ir.default.createReadStream(c);await se.objectStore.streamUpload({bucket:y,filename:d,stream:m,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ke.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ir.default.existsSync(c)&&Ir.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ke.AppBackupStatus.FAILED)}}async function zT(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,Ke.AppBackupStatus.STARTED);await If(Ke.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await HT(c);let y=Ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(m){se.logging.logAlert("App restore error",m),y=Ke.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,y),Ir.default.existsSync(d)&&Ir.default.rmSync(d,{force:!0})})}async function JT(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,Ke.AppBackupStatus.STARTED);return If(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var XT=async e=>{mf(),await Us(e.processing)},Ne={...ft,processing:Ls,init:XT,getBackupQueue:Ft};var Sf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};x(ve,{create:()=>WN,find:()=>jN,get:()=>QN,remove:()=>YN,update:()=>VN});var Qh=N(Oi()),gt=require("@budibase/backend-core");var jh=require("@budibase/types");async function QN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,jh.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 jN(e){return await gt.users.getById(e)}async function WN(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,Qh.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 VN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await at.destroy(e)}var xr={};x(xr,{create:()=>KN});var Wh=N(Oi());var Vh=require("@budibase/backend-core");async function KN(e){let t=await no(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new Vh.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,Wh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var Qt={};x(Qt,{logRequest:()=>JN,logResponse:()=>XN});var Kh=N(Yh()),Et=require("@budibase/backend-core"),{DocWritethrough:HN}=Et.cache.docWritethrough;function zN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Kh.default)().format("YYYYMMDD")}`}var Hh=async()=>{let e=Et.context.getScimDBName();return new HN(Et.db.getDB(e),zN())};async function JN(e){let t=Date.now().toString();return await(await Hh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function XN(e,t){await(await Hh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Bi={};x(Bi,{doInScimContext:()=>Ui,feature:()=>H,internalGroupOnly:()=>Ma,licensing:()=>zh,requireSCIM:()=>Li,scimGroupOnly:()=>Cn,scimUserOnly:()=>qn});var _t=require("@budibase/backend-core");var Ba=require("@budibase/types"),ZN=(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=oo,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(Ba.StaticQuotaName.USERS,Ba.QuotaUsageType.STATIC)}return r()},zh=ZN;var H={};x(H,{requireFeature:()=>eM,requireFeatures:()=>tM});var eM=e=>async(t,r)=>{await la(e),await r()},tM=(...e)=>async(t,r)=>{await zo(e),await r()};var Na=require("@budibase/backend-core");var Ui=async(e,t)=>{let r;return Na.env.DISABLE_SCIM_CALLS||(r=await Qt.logRequest({...e.request.toJSON(),body:e.request.body})),await Na.context.doInScimContext(async()=>{let n=await t();return r&&await Qt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Li=async(e,t)=>{await es(),await t()};var Jh=require("@budibase/backend-core");var qn=e=>Di(Jh.users.getById,e,!0),Cn=e=>Di(V.get,e,!0),Ma=e=>Di(V.get,e,!1);function Di(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 Ji={};x(Ji,{ai:()=>lA,appBackups:()=>zA,auditLogs:()=>kA,environmentVariables:()=>CA,groups:()=>vA,scim:()=>Rb,users:()=>Cb});var sA=require("@budibase/types");var ki={};x(ki,{LargeLanguageModel:()=>Tr});var aA=require("@budibase/backend-core"),xt=require("@budibase/types"),oA=require("@budibase/shared-core");var Ni=N(require("openai"));function Rr(e){return`Summarize this text:
39
150
  ${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});
151
+ Only return the summary.`}function Xh(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 eA(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:
152
+ ${e}`}function tA(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function rA(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function nA(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 Ni.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 Ni.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(Rr(t))}};var Mi=N(require("@anthropic-ai/sdk"));var ka=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Mi.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 Mi.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(Rr(t))}};var nM={OpenAI:jt,Anthropic:ka,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Gi(e,t){return t.map(r=>e[r]).join(" ")}var Tr=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 aA.configs.getAIConfig(),r=await In();if(!t&&!r)return;t||(t={config:{}});let n=await ts(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=nM[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 xt.AIOperationEnum.SUMMARISE_TEXT:return Rr(Gi(r,t.columns));case xt.AIOperationEnum.CLEAN_DATA:return Zh(r[t.column]);case xt.AIOperationEnum.TRANSLATE:return tA(r[t.column],t.language);case xt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xh(Gi(r,t.columns),t.categories.split(","));case xt.AIOperationEnum.SENTIMENT_ANALYSIS:return rA(r[t.column]);case xt.AIOperationEnum.PROMPT:return t.prompt;case xt.AIOperationEnum.SEARCH_WEB:return nA(Gi(r,t.columns));default:throw oA.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 us(r.tokensUsed||0),r.message}};var Wt=require("@budibase/backend-core");async function iA(e){let{prompt:t}=e.request.body,n=await(await Tr.forCurrentTenant("gpt-4o-mini")).run(eA(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function uA(e){await Wt.features.isEnabled(sA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Wt.env.OPENAI_API_KEY||e.throw(500,"OpenAI API key is not set"),await Wt.context.ensureSnippetContext();let r=Wt.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:a}=e.request.body,o=await gr.generateJs(n,a,r);e.body={code:o}}var pA=require("@budibase/types"),cA=N(require("@koa/router")),Fi=require("@budibase/backend-core"),$i=new cA.default;$i.post("/api/ai/cron",H.requireFeature(pA.Feature.BUDIBASE_AI),Fi.auth.builderOrAdmin,iA);$i.post("/api/ai/js",Fi.auth.builderOrAdmin,uA);var lA=$i;async function dA(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 br(t);e.body={_id:r.id,_rev:r.rev}}async function fA(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 cs(t,r)),n&&(o=await ls(t,n)),e.body={added:a,removed:o}}async function gA(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 ds(t,{appsToAdd:r,appsToRemove:n})}async function mA(e){e.body={data:await vn()}}async function yA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function hA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function AA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await $n(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 bA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function IA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var SA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),wA=new SA.default;function sM(){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())}wA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),sM(),dA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),mA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ma("groupId"),yA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,hA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,AA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ma("groupId"),fA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),gA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),bA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),IA);var vA=wA;var Qi=require("@budibase/types");var ji=require("@budibase/backend-core");async function EA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function _A(e){e.body={variables:await ot.fetch()}}async function xA(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 ji.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function RA(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 TA(e){let t=e.params.varName;await ot.remove(t),await ji.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Vt=require("@budibase/backend-core"),PA=N(require("@koa/router")),Un=N(require("joi")),qA=new PA.default;function OA(){return Vt.auth.joiValidator.body(Un.default.object({name:Un.default.string().optional(),production:Un.default.string().required(),development:Un.default.string().required()}))}qA.get("/api/env/variables/status",Vt.auth.builderOrAdmin,EA).get("/api/env/variables",Vt.auth.builderOrAdmin,_A).post("/api/env/variables",Vt.auth.builderOrAdmin,OA(),xA).patch("/api/env/variables/:varName",Vt.auth.builderOrAdmin,OA(),RA).delete("/api/env/variables/:varName",Vt.auth.builderOrAdmin,TA);var CA=qA;var Wi=require("@budibase/backend-core");async function UA(e){let t=e.request.body,r=await vt.fetch(t);await Wi.events.auditLog.filtered(t),e.body=r}async function LA(e){let t=e.request.body,{stream:r}=vt.download(t);await Wi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function DA(e){e.body={events:vt.definitions()}}var NA=require("@budibase/types"),Yt=require("@budibase/backend-core"),MA=N(require("@koa/router")),Ge=N(require("joi"));function BA(){return Yt.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(NA.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 GA=new MA.default;GA.post("/api/global/auditlogs/search",Yt.auth.adminOnly,BA(),UA).get("/api/global/auditlogs/download",Yt.auth.adminOnly,Yt.middleware.querystringToBody,BA(),LA).get("/api/global/auditlogs/definitions",Yt.auth.adminOnly,DA);var kA=GA;var Vi=require("@budibase/types");var FA=require("@budibase/backend-core");async function Or(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function $A(e){let t=e.params.appId;await Or(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Vi.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 QA(e){let t=e.params.appId;await Or(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 FA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function jA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function WA(e){let t=e.params.appId;await Or(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Vi.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 VA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function YA(e){let t=e.params.appId;await Or(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 KA=N(require("@koa/router")),Kt=N(require("joi")),Fa=require("@budibase/types"),Rt=require("@budibase/backend-core"),HA=new KA.default;function cM(){return Rt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Fa.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Fa.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}HA.post("/api/apps/:appId/backups",Rt.auth.builderOrAdmin,$A).post("/api/apps/:appId/backups/search",Rt.auth.builderOrAdmin,cM(),WA).get("/api/apps/:appId/backups/:backupId/file",Rt.auth.builderOrAdmin,YA).patch("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,VA).delete("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,jA).post("/api/apps/:appId/backups/:backupId/import",Rt.auth.builderOrAdmin,QA);var zA=HA;var xb=N(require("@koa/router"));var $a=require("scim-patch");var XA=require("@budibase/backend-core");function JA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var ZA=async e=>{let t=JA(e,"pageSize")??20,r=JA(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}},eb=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)},tb=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 XA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function lM(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 rb=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,$a.patchBodyValidation)(n)}catch{}if(lM(n))return Yi(e);let a;try{a=(0,$a.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)},Yi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var Ab=N(hb()),bb=require("@budibase/shared-core"),Qa=require("scim-patch");var ja=require("scim2-parse-filter");function Ib(e,t){for(let r of t.split(","))delete e[r]}var Sb=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,ja.filter)((0,ja.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{Ib(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},wb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await xr.create(t);e.body=ne.group.toScimGroupResponse(r)},vb=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&Ib(n,a),e.body=n},Eb=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},_b=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,Ab.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 y of d)s.push(await ve.find(y.value));break;case"remove":case"Remove":for(let y of d)c.push(await ve.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:bb.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 Ln=require("@budibase/types"),Pe=new xb.default({prefix:"/api/global/scim/v2"});Pe.use(Li);Pe.use(Ui);Pe.get("/users",ZA);Pe.get("/users/:id",qn("id"),eb);Pe.post("/users",tb);Pe.patch("/users/:id",qn("id"),rb);Pe.delete("/users/:id",qn("id"),Yi);Pe.get("/groups",Sb);Pe.post("/groups",H.requireFeature(Ln.Feature.USER_GROUPS),wb);Pe.get("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),vb);Pe.delete("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),Eb);Pe.patch("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),_b);var Rb=Pe;var Pb=N(require("@koa/router"));var Ki=require("@budibase/backend-core");async function Tb(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 Ob(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 Hi=require("@budibase/types"),zi=require("@budibase/backend-core"),qb=new Pb.default;qb.post("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Tb).delete("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Ob);var Cb=qb;var ne={};x(ne,{group:()=>Zi,user:()=>Xi});var Xi={};x(Xi,{fromScimUser:()=>kM,toScimUserResponse:()=>NM,userFilters:()=>FM});var Wa=require("@budibase/types"),Ub=require("scim2-parse-filter"),Lb=require("@budibase/backend-core"),Db=require("@budibase/shared-core"),{unreachable:BM}=Db.utils,NM=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===Wa.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},MM=e=>!!e?.id;function GM(e){if(Lb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var kM=e=>{let t=MM(e)?e:void 0,r=GM(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:BM(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?Wa.UserStatus.ACTIVE:Wa.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},FM=e=>{let t={equal:{}},r=(0,Ub.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 Zi={};x(Zi,{fromScimGroup:()=>jM,toScimGroupResponse:()=>$M});var $M=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}))}),QM=e=>!!e?.id,jM=e=>{let t=QM(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});
@@ -1,2 +1,3 @@
1
- import { AIConfig } from "@budibase/types";
1
+ import { AIConfig, EnrichedBinding, Snippet } from "@budibase/types";
2
2
  export declare function enrichAIConfig(aiConfig: AIConfig): Promise<AIConfig>;
3
+ export declare function generateJs(prompt: string, bindings?: EnrichedBinding[], snippets?: Snippet[]): Promise<string>;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "dist"
5
5
  ],
6
6
  "license": "UNLICENSED",
7
- "version": "3.5.2",
7
+ "version": "3.6.0",
8
8
  "description": "Budibase Pro (Backend)",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -53,7 +53,8 @@
53
53
  "test": "jest --coverage --runInBand",
54
54
  "test:watch": "jest --watch --runInBand",
55
55
  "license:update": "node scripts/licenses/updateLicense.js",
56
- "license:generate": "yarn run license:update && ts-node -r tsconfig-paths/register ./scripts/licenses/generate.ts"
56
+ "license:generate": "yarn run license:update && ts-node -r tsconfig-paths/register ./scripts/licenses/generate.ts",
57
+ "ai:js:test": "NODE_OPTIONS=\"--no-node-snapshot $NODE_OPTIONS\" ts-node --transpileOnly -r tsconfig-paths/register ./scripts/test-ai-js-gen.ts"
57
58
  },
58
59
  "nx": {
59
60
  "targets": {
@@ -71,5 +72,5 @@
71
72
  }
72
73
  }
73
74
  },
74
- "gitHead": "2d3a130fceeb689d3013606dde57bab8db41c586"
75
+ "gitHead": "fcc8291c1f2968ee7fd17bd47ee6ca19181a14a7"
75
76
  }