@gui-chat-plugin/spreadsheet 4.2.2 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/{core-N6tGCciU.cjs → core-BNJrg8mi.cjs} +1 -1
- package/dist/{core-BruPaeJh.js → core-Ct9CA5Ez.js} +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -2
- package/dist/engine/evaluator.d.ts +2 -0
- package/dist/engine/functions/reference-math.d.ts +7 -0
- package/dist/engine/numericCoercion.d.ts +4 -6
- package/dist/engine/registry.d.ts +6 -0
- package/dist/engine/sheetReference.d.ts +6 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/samples-CG_0qtLD.cjs +2 -0
- package/dist/{samples-DsRbpKBY.js → samples-tIlB6kNg.js} +1312 -1262
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +1 -1
- package/package.json +1 -1
- package/dist/samples-DNz8DMsV.cjs +0 -2
package/dist/vue.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-CG_0qtLD.cjs");let t=require("gui-chat-protocol"),n=require("vue"),r=require("gui-chat-protocol/vue");var i=new Set([`es`,`pt`,`fr`,`de`,`it`,`nl`,`ru`,`pl`,`tr`,`id`,`vi`,`th`]),a=new Set([`us`,`ca`,`ph`]);function o(e){for(let t of e){if(t.length===1)break;if(/^[a-z]{2}$/.test(t)||/^[0-9]{3}$/.test(t))return t}return``}function s(e){if(!e)return!1;let[t=``,...n]=e.toLowerCase().split(/[-_]/);if(t===`en`){let e=o(n);return e!==``&&!a.has(e)}return i.has(t)}function c(t,n,r){let i=-1,a=!1;for(let o=n;o<t.length;o++){let n=t[o];if(n===`"`&&!e.h(t,o))a=!a;else if(!a&&n===`[`&&(i++,i===r))return o+1}return-1}function l(t,n,r){let i=0,a=!1,o=0,s=1;for(let c=n;c<t.length;c++){let n=t[c];if(n===`"`&&!e.h(t,c)&&(a=!a),!a){if(n===`[`&&s++,n===`]`&&(s--,s===0))return-1;n===`{`&&o++,n===`}`&&o--,n===`,`&&o===0&&s===1&&i++}if(i===r&&n!==` `&&n!==`
|
|
2
2
|
`&&n!==` `&&n!==`[`&&n!==`,`)return c}return-1}function u(e,t,n,r){let i=`"name": ${JSON.stringify(t)}`,a=e.indexOf(i);if(a===-1)return-1;let o=e.indexOf(`"data": [`,a);if(o===-1)return-1;let s=c(e,o+9,n);return s===-1?-1:l(e,s,r)}var d={};d.version=`0.20.3`;var f=1200,p=1252,m,h=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],g={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},_=function(e){h.indexOf(e)!=-1&&(p=g[0]=e)};function v(){_(1252)}var y=function(e){f=e,_(e)};function b(){y(1200),v()}function x(e){for(var t=[],n=0;n<e.length>>1;++n)t[n]=String.fromCharCode(e.charCodeAt(2*n+1)+(e.charCodeAt(2*n)<<8));return t.join(``)}var S=function(e){return String.fromCharCode(e)},C=function(e){return String.fromCharCode(e)},w=null,T=!0,E=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`;function D(e){for(var t=``,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=0;l<e.length;)n=e.charCodeAt(l++),a=n>>2,r=e.charCodeAt(l++),o=(n&3)<<4|r>>4,i=e.charCodeAt(l++),s=(r&15)<<2|i>>6,c=i&63,isNaN(r)?s=c=64:isNaN(i)&&(c=64),t+=E.charAt(a)+E.charAt(o)+E.charAt(s)+E.charAt(c);return t}function O(e){for(var t=``,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=0;l<e.length;)n=e.charCodeAt(l++),n>255&&(n=95),a=n>>2,r=e.charCodeAt(l++),r>255&&(r=95),o=(n&3)<<4|r>>4,i=e.charCodeAt(l++),i>255&&(i=95),s=(r&15)<<2|i>>6,c=i&63,isNaN(r)?s=c=64:isNaN(i)&&(c=64),t+=E.charAt(a)+E.charAt(o)+E.charAt(s)+E.charAt(c);return t}function k(e){for(var t=``,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=0;l<e.length;)n=e[l++],a=n>>2,r=e[l++],o=(n&3)<<4|r>>4,i=e[l++],s=(r&15)<<2|i>>6,c=i&63,isNaN(r)?s=c=64:isNaN(i)&&(c=64),t+=E.charAt(a)+E.charAt(o)+E.charAt(s)+E.charAt(c);return t}function A(e){var t=``,n=0,r=0,i=0,a=0,o=0,s=0,c=0;if(e.slice(0,5)==`data:`){var l=e.slice(0,1024).indexOf(`;base64,`);l>-1&&(e=e.slice(l+8))}e=e.replace(/[^\w\+\/\=]/g,``);for(var l=0;l<e.length;)a=E.indexOf(e.charAt(l++)),o=E.indexOf(e.charAt(l++)),n=a<<2|o>>4,t+=String.fromCharCode(n),s=E.indexOf(e.charAt(l++)),r=(o&15)<<4|s>>2,s!==64&&(t+=String.fromCharCode(r)),c=E.indexOf(e.charAt(l++)),i=(s&3)<<6|c,c!==64&&(t+=String.fromCharCode(i));return t}var j=(function(){return typeof Buffer<`u`&&typeof process<`u`&&process.versions!==void 0&&!!process.versions.node})(),M=(function(){if(typeof Buffer<`u`){var e=!Buffer.from;if(!e)try{Buffer.from(`foo`,`utf8`)}catch{e=!0}return e?function(e,t){return t?new Buffer(e,t):new Buffer(e)}:Buffer.from.bind(Buffer)}return function(){}})(),N=(function(){if(typeof Buffer>`u`)return!1;var e=M([65,0]);return e?e.toString(`utf16le`).length==1:!1})();function ee(e){return j?Buffer.alloc?Buffer.alloc(e):new Buffer(e):typeof Uint8Array<`u`?new Uint8Array(e):Array(e)}function P(e){return j?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):typeof Uint8Array<`u`?new Uint8Array(e):Array(e)}var te=function(e){return j?M(e,`binary`):e.split(``).map(function(e){return e.charCodeAt(0)&255})};function ne(e){if(typeof ArrayBuffer>`u`)return te(e);for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),r=0;r!=e.length;++r)n[r]=e.charCodeAt(r)&255;return t}function re(e){if(Array.isArray(e))return e.map(function(e){return String.fromCharCode(e)}).join(``);for(var t=[],n=0;n<e.length;++n)t[n]=String.fromCharCode(e[n]);return t.join(``)}function ie(e){if(typeof Uint8Array>`u`)throw Error(`Unsupported`);return new Uint8Array(e)}var F=j?function(e){return Buffer.concat(e.map(function(e){return Buffer.isBuffer(e)?e:M(e)}))}:function(e){if(typeof Uint8Array<`u`){var t=0,n=0;for(t=0;t<e.length;++t)n+=e[t].length;var r=new Uint8Array(n),i=0;for(t=0,n=0;t<e.length;n+=i,++t)i=e[t].length,e[t]instanceof Uint8Array?r.set(e[t],n):typeof e[t]==`string`?r.set(new Uint8Array(te(e[t])),n):r.set(new Uint8Array(e[t]),n);return r}return[].concat.apply([],e.map(function(e){return Array.isArray(e)?e:[].slice.call(e)}))};function ae(e){for(var t=[],n=0,r=e.length+250,i=ee(e.length+255),a=0;a<e.length;++a){var o=e.charCodeAt(a);if(o<128)i[n++]=o;else if(o<2048)i[n++]=192|o>>6&31,i[n++]=128|o&63;else if(o>=55296&&o<57344){o=(o&1023)+64;var s=e.charCodeAt(++a)&1023;i[n++]=240|o>>8&7,i[n++]=128|o>>2&63,i[n++]=128|s>>6&15|(o&3)<<4,i[n++]=128|s&63}else i[n++]=224|o>>12&15,i[n++]=128|o>>6&63,i[n++]=128|o&63;n>r&&(t.push(i.slice(0,n)),n=0,i=ee(65535),r=65530)}return t.push(i.slice(0,n)),F(t)}var oe=/\u0000/g,se=/[\u0001-\u0006]/g;function ce(e){for(var t=``,n=e.length-1;n>=0;)t+=e.charAt(n--);return t}function le(e,t){var n=``+e;return n.length>=t?n:Lt(`0`,t-n.length)+n}function ue(e,t){var n=``+e;return n.length>=t?n:Lt(` `,t-n.length)+n}function de(e,t){var n=``+e;return n.length>=t?n:n+Lt(` `,t-n.length)}function fe(e,t){var n=``+Math.round(e);return n.length>=t?n:Lt(`0`,t-n.length)+n}function pe(e,t){var n=``+e;return n.length>=t?n:Lt(`0`,t-n.length)+n}var me=2**32;function he(e,t){return e>me||e<-me?fe(e,t):pe(Math.round(e),t)}function ge(e,t){return t||=0,e.length>=7+t&&(e.charCodeAt(t)|32)==103&&(e.charCodeAt(t+1)|32)==101&&(e.charCodeAt(t+2)|32)==110&&(e.charCodeAt(t+3)|32)==101&&(e.charCodeAt(t+4)|32)==114&&(e.charCodeAt(t+5)|32)==97&&(e.charCodeAt(t+6)|32)==108}var _e=[[`Sun`,`Sunday`],[`Mon`,`Monday`],[`Tue`,`Tuesday`],[`Wed`,`Wednesday`],[`Thu`,`Thursday`],[`Fri`,`Friday`],[`Sat`,`Saturday`]],ve=[[`J`,`Jan`,`January`],[`F`,`Feb`,`February`],[`M`,`Mar`,`March`],[`A`,`Apr`,`April`],[`M`,`May`,`May`],[`J`,`Jun`,`June`],[`J`,`Jul`,`July`],[`A`,`Aug`,`August`],[`S`,`Sep`,`September`],[`O`,`Oct`,`October`],[`N`,`Nov`,`November`],[`D`,`Dec`,`December`]];function ye(e){return e||={},e[0]=`General`,e[1]=`0`,e[2]=`0.00`,e[3]=`#,##0`,e[4]=`#,##0.00`,e[9]=`0%`,e[10]=`0.00%`,e[11]=`0.00E+00`,e[12]=`# ?/?`,e[13]=`# ??/??`,e[14]=`m/d/yy`,e[15]=`d-mmm-yy`,e[16]=`d-mmm`,e[17]=`mmm-yy`,e[18]=`h:mm AM/PM`,e[19]=`h:mm:ss AM/PM`,e[20]=`h:mm`,e[21]=`h:mm:ss`,e[22]=`m/d/yy h:mm`,e[37]=`#,##0 ;(#,##0)`,e[38]=`#,##0 ;[Red](#,##0)`,e[39]=`#,##0.00;(#,##0.00)`,e[40]=`#,##0.00;[Red](#,##0.00)`,e[45]=`mm:ss`,e[46]=`[h]:mm:ss`,e[47]=`mmss.0`,e[48]=`##0.0E+0`,e[49]=`@`,e[56]=`"上午/下午 "hh"時"mm"分"ss"秒 "`,e}var I={0:`General`,1:`0`,2:`0.00`,3:`#,##0`,4:`#,##0.00`,9:`0%`,10:`0.00%`,11:`0.00E+00`,12:`# ?/?`,13:`# ??/??`,14:`m/d/yy`,15:`d-mmm-yy`,16:`d-mmm`,17:`mmm-yy`,18:`h:mm AM/PM`,19:`h:mm:ss AM/PM`,20:`h:mm`,21:`h:mm:ss`,22:`m/d/yy h:mm`,37:`#,##0 ;(#,##0)`,38:`#,##0 ;[Red](#,##0)`,39:`#,##0.00;(#,##0.00)`,40:`#,##0.00;[Red](#,##0.00)`,45:`mm:ss`,46:`[h]:mm:ss`,47:`mmss.0`,48:`##0.0E+0`,49:`@`,56:`"上午/下午 "hh"時"mm"分"ss"秒 "`},be={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},xe={5:`"$"#,##0_);\\("$"#,##0\\)`,63:`"$"#,##0_);\\("$"#,##0\\)`,6:`"$"#,##0_);[Red]\\("$"#,##0\\)`,64:`"$"#,##0_);[Red]\\("$"#,##0\\)`,7:`"$"#,##0.00_);\\("$"#,##0.00\\)`,65:`"$"#,##0.00_);\\("$"#,##0.00\\)`,8:`"$"#,##0.00_);[Red]\\("$"#,##0.00\\)`,66:`"$"#,##0.00_);[Red]\\("$"#,##0.00\\)`,41:`_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)`,42:`_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)`,43:`_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)`,44:`_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)`};function Se(e,t,n){for(var r=e<0?-1:1,i=e*r,a=0,o=1,s=0,c=1,l=0,u=0,d=Math.floor(i);l<t&&(d=Math.floor(i),s=d*o+a,u=d*l+c,!(i-d<5e-8));)i=1/(i-d),a=o,o=s,c=l,l=u;if(u>t&&(l>t?(u=c,s=a):(u=l,s=o)),!n)return[0,r*s,u];var f=Math.floor(r*s/u);return[f,r*s-f*u,u]}function Ce(e){var t=e.toPrecision(16);if(t.indexOf(`e`)>-1){var n=t.slice(0,t.indexOf(`e`));return n=n.indexOf(`.`)>-1?n.slice(0,n.slice(0,2)==`0.`?17:16):n.slice(0,15)+Lt(`0`,n.length-15),n+t.slice(t.indexOf(`e`))}var r=t.indexOf(`.`)>-1?t.slice(0,t.slice(0,2)==`0.`?17:16):t.slice(0,15)+Lt(`0`,t.length-15);return Number(r)}function we(e,t,n){if(e>2958465||e<0)return null;e=Ce(e);var r=e|0,i=Math.floor(86400*(e-r)),a=0,o=[],s={D:r,T:i,u:86400*(e-r)-i,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(s.u)<1e-6&&(s.u=0),t&&t.date1904&&(r+=1462),s.u>.9999&&(s.u=0,++i==86400&&(s.T=i=0,++r,++s.D)),r===60)o=n?[1317,10,29]:[1900,2,29],a=3;else if(r===0)o=n?[1317,8,29]:[1900,1,0],a=6;else{r>60&&--r;var c=new Date(1900,0,1);c.setDate(c.getDate()+r-1),o=[c.getFullYear(),c.getMonth()+1,c.getDate()],a=c.getDay(),r<60&&(a=(a+6)%7),n&&(a=je(c,o))}return s.y=o[0],s.m=o[1],s.d=o[2],s.S=i%60,i=Math.floor(i/60),s.M=i%60,i=Math.floor(i/60),s.H=i,s.q=a,s}function Te(e){return e.indexOf(`.`)==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,`$1`)}function Ee(e){return e.indexOf(`E`)==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,`$1E`).replace(/(E[+-])(\d)$/,`$10$2`)}function De(e){var t=e<0?12:11,n=Te(e.toFixed(12));return n.length<=t||(n=e.toPrecision(10),n.length<=t)?n:e.toExponential(5)}function Oe(e){var t=Te(e.toFixed(11));return t.length>(e<0?12:11)||t===`0`||t===`-0`?e.toPrecision(6):t}function ke(e){if(!isFinite(e))return isNaN(e)?`#NUM!`:`#DIV/0!`;var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E);return Te(Ee((t>=-4&&t<=-1?e.toPrecision(10+t):Math.abs(t)<=9?De(e):t===10?e.toFixed(10).substr(0,12):Oe(e)).toUpperCase()))}function Ae(e,t){switch(typeof e){case`string`:return e;case`boolean`:return e?`TRUE`:`FALSE`;case`number`:return(e|0)===e?e.toString(10):ke(e);case`undefined`:return``;case`object`:if(e==null)return``;if(e instanceof Date)return ct(14,kt(e,t&&t.date1904),t)}throw Error(`unsupported value in General format: `+e)}function je(e,t){t[0]-=581;var n=e.getDay();return e<60&&(n=(n+6)%7),n}function Me(e,t,n,r){var i=``,a=0,o=0,s=n.y,c,l=0;switch(e){case 98:s=n.y+543;case 121:switch(t.length){case 1:case 2:c=s%100,l=2;break;default:c=s%1e4,l=4}break;case 109:switch(t.length){case 1:case 2:c=n.m,l=t.length;break;case 3:return ve[n.m-1][1];case 5:return ve[n.m-1][0];default:return ve[n.m-1][2]}break;case 100:switch(t.length){case 1:case 2:c=n.d,l=t.length;break;case 3:return _e[n.q][0];default:return _e[n.q][1]}break;case 104:switch(t.length){case 1:case 2:c=1+(n.H+11)%12,l=t.length;break;default:throw`bad hour format: `+t}break;case 72:switch(t.length){case 1:case 2:c=n.H,l=t.length;break;default:throw`bad hour format: `+t}break;case 77:switch(t.length){case 1:case 2:c=n.M,l=t.length;break;default:throw`bad minute format: `+t}break;case 115:if(t!=`s`&&t!=`ss`&&t!=`.0`&&t!=`.00`&&t!=`.000`)throw`bad second format: `+t;return n.u===0&&(t==`s`||t==`ss`)?le(n.S,t.length):(o=r>=2?r===3?1e3:100:r===1?10:1,a=Math.round(o*(n.S+n.u)),a>=60*o&&(a=0),t===`s`?a===0?`0`:``+a/o:(i=le(a,2+r),t===`ss`?i.substr(0,2):`.`+i.substr(2,t.length-1)));case 90:switch(t){case`[h]`:case`[hh]`:c=n.D*24+n.H;break;case`[m]`:case`[mm]`:c=(n.D*24+n.H)*60+n.M;break;case`[s]`:case`[ss]`:c=((n.D*24+n.H)*60+n.M)*60+(r==0?Math.round(n.S+n.u):n.S);break;default:throw`bad abstime format: `+t}l=t.length===3?1:2;break;case 101:c=s,l=1}return l>0?le(c,l):``}function Ne(e){var t=3;if(e.length<=t)return e;for(var n=e.length%t,r=e.substr(0,n);n!=e.length;n+=t)r+=(r.length>0?`,`:``)+e.substr(n,t);return r}var Pe=/%/g;function Fe(e,t,n){var r=t.replace(Pe,``),i=t.length-r.length;return et(e,r,n*10**(2*i))+Lt(`%`,i)}function Ie(e,t,n){for(var r=t.length-1;t.charCodeAt(r-1)===44;)--r;return et(e,t.substr(0,r),n/10**(3*(t.length-r)))}function Le(e,t){var n,r=e.indexOf(`E`)-e.indexOf(`.`)-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return`0.0E+0`;if(t<0)return`-`+Le(e,-t);var i=e.indexOf(`.`);i===-1&&(i=e.indexOf(`E`));var a=Math.floor(Math.log(t)*Math.LOG10E)%i;if(a<0&&(a+=i),n=(t/10**a).toPrecision(r+1+(i+a)%i),n.indexOf(`e`)===-1){var o=Math.floor(Math.log(t)*Math.LOG10E);for(n.indexOf(`.`)===-1?n=n.charAt(0)+`.`+n.substr(1)+`E+`+(o-n.length+a):n+=`E+`+(o-a);n.substr(0,2)===`0.`;)n=n.charAt(0)+n.substr(2,i)+`.`+n.substr(2+i),n=n.replace(/^0+([1-9])/,`$1`).replace(/^0+\./,`0.`);n=n.replace(/\+-/,`-`)}n=n.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(e,t,n,r){return t+n+r.substr(0,(i+a)%i)+`.`+r.substr(a)+`E`})}else n=t.toExponential(r);return e.match(/E\+00$/)&&n.match(/e[+-]\d$/)&&(n=n.substr(0,n.length-1)+`0`+n.charAt(n.length-1)),e.match(/E\-/)&&n.match(/e\+/)&&(n=n.replace(/e\+/,`e`)),n.replace(`e`,`E`)}var Re=/# (\?+)( ?)\/( ?)(\d+)/;function ze(e,t,n){var r=parseInt(e[4],10),i=Math.round(t*r),a=Math.floor(i/r),o=i-a*r,s=r;return n+(a===0?``:``+a)+` `+(o===0?Lt(` `,e[1].length+1+e[4].length):ue(o,e[1].length)+e[2]+`/`+e[3]+le(s,e[4].length))}function Be(e,t,n){return n+(t===0?``:``+t)+Lt(` `,e[1].length+2+e[4].length)}var Ve=/^#*0*\.([0#]+)/,He=/\)[^)]*[0#]/,Ue=/\(###\) ###\\?-####/;function We(e){for(var t=``,n,r=0;r!=e.length;++r)switch(n=e.charCodeAt(r)){case 35:break;case 63:t+=` `;break;case 48:t+=`0`;break;default:t+=String.fromCharCode(n)}return t}function Ge(e,t){var n=10**t;return``+Math.round(e*n)/n}function Ke(e,t){var n=e-Math.floor(e),r=10**t;return t<(``+Math.round(n*r)).length?0:Math.round(n*r)}function qe(e,t){return+(t<(``+Math.round((e-Math.floor(e))*10**t)).length)}function Je(e){return e<2147483647&&e>-2147483648?``+(e>=0?e|0:e-1|0):``+Math.floor(e)}function Ye(e,t,n){if(e.charCodeAt(0)===40&&!t.match(He)){var r=t.replace(/\( */,``).replace(/ \)/,``).replace(/\)/,``);return n>=0?Ye(`n`,r,n):`(`+Ye(`n`,r,-n)+`)`}if(t.charCodeAt(t.length-1)===44)return Ie(e,t,n);if(t.indexOf(`%`)!==-1)return Fe(e,t,n);if(t.indexOf(`E`)!==-1)return Le(t,n);if(t.charCodeAt(0)===36)return`$`+Ye(e,t.substr(t.charAt(1)==` `?2:1),n);var i,a,o,s,c=Math.abs(n),l=n<0?`-`:``;if(t.match(/^00+$/))return l+he(c,t.length);if(t.match(/^[#?]+$/))return i=he(n,0),i===`0`&&(i=``),i.length>t.length?i:We(t.substr(0,t.length-i.length))+i;if(a=t.match(Re))return ze(a,c,l);if(t.match(/^#+0+$/))return l+he(c,t.length-t.indexOf(`0`));if(a=t.match(Ve))return i=Ge(n,a[1].length).replace(/^([^\.]+)$/,`$1.`+We(a[1])).replace(/\.$/,`.`+We(a[1])).replace(/\.(\d*)$/,function(e,t){return`.`+t+Lt(`0`,We(a[1]).length-t.length)}),t.indexOf(`0.`)===-1?i.replace(/^0\./,`.`):i;if(t=t.replace(/^#+([0.])/,`$1`),a=t.match(/^(0*)\.(#*)$/))return l+Ge(c,a[2].length).replace(/\.(\d*[1-9])0*$/,`.$1`).replace(/^(-?\d*)$/,`$1.`).replace(/^0\./,a[1].length?`0.`:`.`);if(a=t.match(/^#{1,3},##0(\.?)$/))return l+Ne(he(c,0));if(a=t.match(/^#,##0\.([#0]*0)$/))return n<0?`-`+Ye(e,t,-n):Ne(``+(Math.floor(n)+qe(n,a[1].length)))+`.`+le(Ke(n,a[1].length),a[1].length);if(a=t.match(/^#,#*,#0/))return Ye(e,t.replace(/^#,#*,/,``),n);if(a=t.match(/^([0#]+)(\\?-([0#]+))+$/))return i=ce(Ye(e,t.replace(/[\\-]/g,``),n)),o=0,ce(ce(t.replace(/\\/g,``)).replace(/[0#]/g,function(e){return o<i.length?i.charAt(o++):e===`0`?`0`:``}));if(t.match(Ue))return i=Ye(e,`##########`,n),`(`+i.substr(0,3)+`) `+i.substr(3,3)+`-`+i.substr(6);var u=``;if(a=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return o=Math.min(a[4].length,7),s=Se(c,10**o-1,!1),i=``+l,u=et(`n`,a[1],s[1]),u.charAt(u.length-1)==` `&&(u=u.substr(0,u.length-1)+`0`),i+=u+a[2]+`/`+a[3],u=de(s[2],o),u.length<a[4].length&&(u=We(a[4].substr(a[4].length-u.length))+u),i+=u,i;if(a=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return o=Math.min(Math.max(a[1].length,a[4].length),7),s=Se(c,10**o-1,!0),l+(s[0]||(s[1]?``:`0`))+` `+(s[1]?ue(s[1],o)+a[2]+`/`+a[3]+de(s[2],o):Lt(` `,2*o+1+a[2].length+a[3].length));if(a=t.match(/^[#0?]+$/))return i=he(n,0),t.length<=i.length?i:We(t.substr(0,t.length-i.length))+i;if(a=t.match(/^([#0?]+)\.([#0]+)$/)){i=``+n.toFixed(Math.min(a[2].length,10)).replace(/([^0])0+$/,`$1`),o=i.indexOf(`.`);var d=t.indexOf(`.`)-o,f=t.length-i.length-d;return We(t.substr(0,d)+i+t.substr(t.length-f))}if(a=t.match(/^00,000\.([#0]*0)$/))return o=Ke(n,a[1].length),n<0?`-`+Ye(e,t,-n):Ne(Je(n)).replace(/^\d,\d{3}$/,`0$&`).replace(/^\d*$/,function(e){return`00,`+(e.length<3?le(0,3-e.length):``)+e})+`.`+le(o,a[1].length);switch(t){case`###,##0.00`:return Ye(e,`#,##0.00`,n);case`###,###`:case`##,###`:case`#,###`:var p=Ne(he(c,0));return p===`0`?``:l+p;case`###,###.00`:return Ye(e,`###,##0.00`,n).replace(/^0\./,`.`);case`#,###.00`:return Ye(e,`#,##0.00`,n).replace(/^0\./,`.`)}throw Error(`unsupported format |`+t+`|`)}function Xe(e,t,n){for(var r=t.length-1;t.charCodeAt(r-1)===44;)--r;return et(e,t.substr(0,r),n/10**(3*(t.length-r)))}function Ze(e,t,n){var r=t.replace(Pe,``),i=t.length-r.length;return et(e,r,n*10**(2*i))+Lt(`%`,i)}function Qe(e,t){var n,r=e.indexOf(`E`)-e.indexOf(`.`)-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return`0.0E+0`;if(t<0)return`-`+Qe(e,-t);var i=e.indexOf(`.`);i===-1&&(i=e.indexOf(`E`));var a=Math.floor(Math.log(t)*Math.LOG10E)%i;if(a<0&&(a+=i),n=(t/10**a).toPrecision(r+1+(i+a)%i),!n.match(/[Ee]/)){var o=Math.floor(Math.log(t)*Math.LOG10E);n.indexOf(`.`)===-1?n=n.charAt(0)+`.`+n.substr(1)+`E+`+(o-n.length+a):n+=`E+`+(o-a),n=n.replace(/\+-/,`-`)}n=n.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(e,t,n,r){return t+n+r.substr(0,(i+a)%i)+`.`+r.substr(a)+`E`})}else n=t.toExponential(r);return e.match(/E\+00$/)&&n.match(/e[+-]\d$/)&&(n=n.substr(0,n.length-1)+`0`+n.charAt(n.length-1)),e.match(/E\-/)&&n.match(/e\+/)&&(n=n.replace(/e\+/,`e`)),n.replace(`e`,`E`)}function $e(e,t,n){if(e.charCodeAt(0)===40&&!t.match(He)){var r=t.replace(/\( */,``).replace(/ \)/,``).replace(/\)/,``);return n>=0?$e(`n`,r,n):`(`+$e(`n`,r,-n)+`)`}if(t.charCodeAt(t.length-1)===44)return Xe(e,t,n);if(t.indexOf(`%`)!==-1)return Ze(e,t,n);if(t.indexOf(`E`)!==-1)return Qe(t,n);if(t.charCodeAt(0)===36)return`$`+$e(e,t.substr(t.charAt(1)==` `?2:1),n);var i,a,o,s,c=Math.abs(n),l=n<0?`-`:``;if(t.match(/^00+$/))return l+le(c,t.length);if(t.match(/^[#?]+$/))return i=``+n,n===0&&(i=``),i.length>t.length?i:We(t.substr(0,t.length-i.length))+i;if(a=t.match(Re))return Be(a,c,l);if(t.match(/^#+0+$/))return l+le(c,t.length-t.indexOf(`0`));if(a=t.match(Ve))return i=(``+n).replace(/^([^\.]+)$/,`$1.`+We(a[1])).replace(/\.$/,`.`+We(a[1])),i=i.replace(/\.(\d*)$/,function(e,t){return`.`+t+Lt(`0`,We(a[1]).length-t.length)}),t.indexOf(`0.`)===-1?i.replace(/^0\./,`.`):i;if(t=t.replace(/^#+([0.])/,`$1`),a=t.match(/^(0*)\.(#*)$/))return l+(``+c).replace(/\.(\d*[1-9])0*$/,`.$1`).replace(/^(-?\d*)$/,`$1.`).replace(/^0\./,a[1].length?`0.`:`.`);if(a=t.match(/^#{1,3},##0(\.?)$/))return l+Ne(``+c);if(a=t.match(/^#,##0\.([#0]*0)$/))return n<0?`-`+$e(e,t,-n):Ne(``+n)+`.`+Lt(`0`,a[1].length);if(a=t.match(/^#,#*,#0/))return $e(e,t.replace(/^#,#*,/,``),n);if(a=t.match(/^([0#]+)(\\?-([0#]+))+$/))return i=ce($e(e,t.replace(/[\\-]/g,``),n)),o=0,ce(ce(t.replace(/\\/g,``)).replace(/[0#]/g,function(e){return o<i.length?i.charAt(o++):e===`0`?`0`:``}));if(t.match(Ue))return i=$e(e,`##########`,n),`(`+i.substr(0,3)+`) `+i.substr(3,3)+`-`+i.substr(6);var u=``;if(a=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return o=Math.min(a[4].length,7),s=Se(c,10**o-1,!1),i=``+l,u=et(`n`,a[1],s[1]),u.charAt(u.length-1)==` `&&(u=u.substr(0,u.length-1)+`0`),i+=u+a[2]+`/`+a[3],u=de(s[2],o),u.length<a[4].length&&(u=We(a[4].substr(a[4].length-u.length))+u),i+=u,i;if(a=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return o=Math.min(Math.max(a[1].length,a[4].length),7),s=Se(c,10**o-1,!0),l+(s[0]||(s[1]?``:`0`))+` `+(s[1]?ue(s[1],o)+a[2]+`/`+a[3]+de(s[2],o):Lt(` `,2*o+1+a[2].length+a[3].length));if(a=t.match(/^[#0?]+$/))return i=``+n,t.length<=i.length?i:We(t.substr(0,t.length-i.length))+i;if(a=t.match(/^([#0]+)\.([#0]+)$/)){i=``+n.toFixed(Math.min(a[2].length,10)).replace(/([^0])0+$/,`$1`),o=i.indexOf(`.`);var d=t.indexOf(`.`)-o,f=t.length-i.length-d;return We(t.substr(0,d)+i+t.substr(t.length-f))}if(a=t.match(/^00,000\.([#0]*0)$/))return n<0?`-`+$e(e,t,-n):Ne(``+n).replace(/^\d,\d{3}$/,`0$&`).replace(/^\d*$/,function(e){return`00,`+(e.length<3?le(0,3-e.length):``)+e})+`.`+le(0,a[1].length);switch(t){case`###,###`:case`##,###`:case`#,###`:var p=Ne(``+c);return p===`0`?``:l+p;default:if(t.match(/\.[0#?]*$/))return $e(e,t.slice(0,t.lastIndexOf(`.`)),n)+We(t.slice(t.lastIndexOf(`.`)))}throw Error(`unsupported format |`+t+`|`)}function et(e,t,n){return(n|0)===n?$e(e,t,n):Ye(e,t,n)}function tt(e){for(var t=[],n=!1,r=0,i=0;r<e.length;++r)switch(e.charCodeAt(r)){case 34:n=!n;break;case 95:case 42:case 92:++r;break;case 59:t[t.length]=e.substr(i,r-i),i=r+1}if(t[t.length]=e.substr(i),n===!0)throw Error(`Format |`+e+`| unterminated string `);return t}var nt=/\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;function rt(e){for(var t=0,n=``,r=``;t<e.length;)switch(n=e.charAt(t)){case`G`:ge(e,t)&&(t+=6),t++;break;case`"`:for(;e.charCodeAt(++t)!==34&&t<e.length;);++t;break;case`\\`:t+=2;break;case`_`:t+=2;break;case`@`:++t;break;case`B`:case`b`:if(e.charAt(t+1)===`1`||e.charAt(t+1)===`2`)return!0;case`M`:case`D`:case`Y`:case`H`:case`S`:case`E`:case`m`:case`d`:case`y`:case`h`:case`s`:case`e`:case`g`:return!0;case`A`:case`a`:case`上`:if(e.substr(t,3).toUpperCase()===`A/P`||e.substr(t,5).toUpperCase()===`AM/PM`||e.substr(t,5).toUpperCase()===`上午/下午`)return!0;++t;break;case`[`:for(r=n;e.charAt(t++)!==`]`&&t<e.length;)r+=e.charAt(t);if(r.match(nt))return!0;break;case`.`:case`0`:case`#`:for(;t<e.length&&(`0#?.,E+-%`.indexOf(n=e.charAt(++t))>-1||n==`\\`&&e.charAt(t+1)==`-`&&`0#`.indexOf(e.charAt(t+2))>-1););break;case`?`:for(;e.charAt(++t)===n;);break;case`*`:++t,(e.charAt(t)==` `||e.charAt(t)==`*`)&&++t;break;case`(`:case`)`:++t;break;case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:for(;t<e.length&&`0123456789`.indexOf(e.charAt(++t))>-1;);break;case` `:++t;break;default:++t}return!1}function it(e,t,n,r){for(var i=[],a=``,o=0,s=``,c=`t`,l,u,d,f=`H`;o<e.length;)switch(s=e.charAt(o)){case`G`:if(!ge(e,o))throw Error(`unrecognized character `+s+` in `+e);i[i.length]={t:`G`,v:`General`},o+=7;break;case`"`:for(a=``;(d=e.charCodeAt(++o))!==34&&o<e.length;)a+=String.fromCharCode(d);i[i.length]={t:`t`,v:a},++o;break;case`\\`:var p=e.charAt(++o),m=p===`(`||p===`)`?p:`t`;i[i.length]={t:m,v:p},++o;break;case`_`:i[i.length]={t:`t`,v:` `},o+=2;break;case`@`:i[i.length]={t:`T`,v:t},++o;break;case`B`:case`b`:if(e.charAt(o+1)===`1`||e.charAt(o+1)===`2`){if(l==null&&(l=we(t,n,e.charAt(o+1)===`2`),l==null))return``;i[i.length]={t:`X`,v:e.substr(o,2)},c=s,o+=2;break}case`M`:case`D`:case`Y`:case`H`:case`S`:case`E`:s=s.toLowerCase();case`m`:case`d`:case`y`:case`h`:case`s`:case`e`:case`g`:if(t<0||l==null&&(l=we(t,n),l==null))return``;for(a=s;++o<e.length&&e.charAt(o).toLowerCase()===s;)a+=s;s===`m`&&c.toLowerCase()===`h`&&(s=`M`),s===`h`&&(s=f),i[i.length]={t:s,v:a},c=s;break;case`A`:case`a`:case`上`:var h={t:s,v:s};if(l??=we(t,n),e.substr(o,3).toUpperCase()===`A/P`?(l!=null&&(h.v=l.H>=12?e.charAt(o+2):s),h.t=`T`,f=`h`,o+=3):e.substr(o,5).toUpperCase()===`AM/PM`?(l!=null&&(h.v=l.H>=12?`PM`:`AM`),h.t=`T`,o+=5,f=`h`):e.substr(o,5).toUpperCase()===`上午/下午`?(l!=null&&(h.v=l.H>=12?`下午`:`上午`),h.t=`T`,o+=5,f=`h`):(h.t=`t`,++o),l==null&&h.t===`T`)return``;i[i.length]=h,c=s;break;case`[`:for(a=s;e.charAt(o++)!==`]`&&o<e.length;)a+=e.charAt(o);if(a.slice(-1)!==`]`)throw`unterminated "[" block: |`+a+`|`;if(a.match(nt)){if(l==null&&(l=we(t,n),l==null))return``;i[i.length]={t:`Z`,v:a.toLowerCase()},c=a.charAt(1)}else a.indexOf(`$`)>-1&&(a=(a.match(/\$([^-\[\]]*)/)||[])[1]||`$`,rt(e)||(i[i.length]={t:`t`,v:a}));break;case`.`:if(l!=null){for(a=s;++o<e.length&&(s=e.charAt(o))===`0`;)a+=s;i[i.length]={t:`s`,v:a};break}case`0`:case`#`:for(a=s;++o<e.length&&`0#?.,E+-%`.indexOf(s=e.charAt(o))>-1;)a+=s;i[i.length]={t:`n`,v:a};break;case`?`:for(a=s;e.charAt(++o)===s;)a+=s;i[i.length]={t:s,v:a},c=s;break;case`*`:++o,(e.charAt(o)==` `||e.charAt(o)==`*`)&&++o;break;case`(`:case`)`:i[i.length]={t:r===1?`t`:s,v:s},++o;break;case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:for(a=s;o<e.length&&`0123456789`.indexOf(e.charAt(++o))>-1;)a+=e.charAt(o);i[i.length]={t:`D`,v:a};break;case` `:i[i.length]={t:s,v:s},++o;break;case`$`:i[i.length]={t:`t`,v:`$`},++o;break;default:if(`,$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP`.indexOf(s)===-1)throw Error(`unrecognized character `+s+` in `+e);i[i.length]={t:`t`,v:s},++o}var g=0,_=0,v;for(o=i.length-1,c=`t`;o>=0;--o)switch(i[o].t){case`h`:case`H`:i[o].t=f,c=`h`,g<1&&(g=1);break;case`s`:(v=i[o].v.match(/\.0+$/))&&(_=Math.max(_,v[0].length-1),g=4),g<3&&(g=3);case`d`:case`y`:case`e`:c=i[o].t;break;case`M`:c=i[o].t,g<2&&(g=2);break;case`m`:c===`s`&&(i[o].t=`M`,g<2&&(g=2));break;case`X`:break;case`Z`:g<1&&i[o].v.match(/[Hh]/)&&(g=1),g<2&&i[o].v.match(/[Mm]/)&&(g=2),g<3&&i[o].v.match(/[Ss]/)&&(g=3)}var y;switch(g){case 0:break;case 1:case 2:case 3:l.u>=.5&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M),l.M>=60&&(l.M=0,++l.H),l.H>=24&&(l.H=0,++l.D,y=we(l.D),y.u=l.u,y.S=l.S,y.M=l.M,y.H=l.H,l=y);break;case 4:switch(_){case 1:l.u=Math.round(l.u*10)/10;break;case 2:l.u=Math.round(l.u*100)/100;break;case 3:l.u=Math.round(l.u*1e3)/1e3}l.u>=1&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M),l.M>=60&&(l.M=0,++l.H),l.H>=24&&(l.H=0,++l.D,y=we(l.D),y.u=l.u,y.S=l.S,y.M=l.M,y.H=l.H,l=y)}var b=``,x;for(o=0;o<i.length;++o)switch(i[o].t){case`t`:case`T`:case` `:case`D`:break;case`X`:i[o].v=``,i[o].t=`;`;break;case`d`:case`m`:case`y`:case`h`:case`H`:case`M`:case`s`:case`e`:case`b`:case`Z`:i[o].v=Me(i[o].t.charCodeAt(0),i[o].v,l,_),i[o].t=`t`;break;case`n`:case`?`:for(x=o+1;i[x]!=null&&((s=i[x].t)===`?`||s===`D`||(s===` `||s===`t`)&&i[x+1]!=null&&(i[x+1].t===`?`||i[x+1].t===`t`&&i[x+1].v===`/`)||i[o].t===`(`&&(s===` `||s===`n`||s===`)`)||s===`t`&&(i[x].v===`/`||i[x].v===` `&&i[x+1]!=null&&i[x+1].t==`?`));)i[o].v+=i[x].v,i[x]={v:``,t:`;`},++x;b+=i[o].v,o=x-1;break;case`G`:i[o].t=`t`,i[o].v=Ae(t,n)}var S=``,C,w;if(b.length>0){b.charCodeAt(0)==40?(C=t<0&&b.charCodeAt(0)===45?-t:t,w=et(`n`,b,C)):(C=t<0&&r>1?-t:t,w=et(`n`,b,C),C<0&&i[0]&&i[0].t==`t`&&(w=w.substr(1),i[0].v=`-`+i[0].v)),x=w.length-1;var T=i.length;for(o=0;o<i.length;++o)if(i[o]!=null&&i[o].t!=`t`&&i[o].v.indexOf(`.`)>-1){T=o;break}var E=i.length;if(T===i.length&&w.indexOf(`E`)===-1){for(o=i.length-1;o>=0;--o)i[o]!=null&&`n?`.indexOf(i[o].t)!==-1&&(x>=i[o].v.length-1?(x-=i[o].v.length,i[o].v=w.substr(x+1,i[o].v.length)):x<0?i[o].v=``:(i[o].v=w.substr(0,x+1),x=-1),i[o].t=`t`,E=o);x>=0&&E<i.length&&(i[E].v=w.substr(0,x+1)+i[E].v)}else if(T!==i.length&&w.indexOf(`E`)===-1){for(x=w.indexOf(`.`)-1,o=T;o>=0;--o)if(i[o]!=null&&`n?`.indexOf(i[o].t)!==-1){for(u=i[o].v.indexOf(`.`)>-1&&o===T?i[o].v.indexOf(`.`)-1:i[o].v.length-1,S=i[o].v.substr(u+1);u>=0;--u)x>=0&&(i[o].v.charAt(u)===`0`||i[o].v.charAt(u)===`#`)&&(S=w.charAt(x--)+S);i[o].v=S,i[o].t=`t`,E=o}for(x>=0&&E<i.length&&(i[E].v=w.substr(0,x+1)+i[E].v),x=w.indexOf(`.`)+1,o=T;o<i.length;++o)if(!(i[o]==null||`n?(`.indexOf(i[o].t)===-1&&o!==T)){for(u=i[o].v.indexOf(`.`)>-1&&o===T?i[o].v.indexOf(`.`)+1:0,S=i[o].v.substr(0,u);u<i[o].v.length;++u)x<w.length&&(S+=w.charAt(x++));i[o].v=S,i[o].t=`t`,E=o}}}for(o=0;o<i.length;++o)i[o]!=null&&`n?`.indexOf(i[o].t)>-1&&(C=r>1&&t<0&&o>0&&i[o-1].v===`-`?-t:t,i[o].v=et(i[o].t,i[o].v,C),i[o].t=`t`);var D=``;for(o=0;o!==i.length;++o)i[o]!=null&&(D+=i[o].v);return D}var at=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function ot(e,t){if(t==null)return!1;var n=parseFloat(t[2]);switch(t[1]){case`=`:if(e==n)return!0;break;case`>`:if(e>n)return!0;break;case`<`:if(e<n)return!0;break;case`<>`:if(e!=n)return!0;break;case`>=`:if(e>=n)return!0;break;case`<=`:if(e<=n)return!0}return!1}function st(e,t){var n=tt(e),r=n.length,i=n[r-1].indexOf(`@`);if(r<4&&i>-1&&--r,n.length>4)throw Error(`cannot find right format for |`+n.join(`|`)+`|`);if(typeof t!=`number`)return[4,n.length===4||i>-1?n[n.length-1]:`@`];switch(typeof t==`number`&&!isFinite(t)&&(t=0),n.length){case 1:n=i>-1?[`General`,`General`,`General`,n[0]]:[n[0],n[0],n[0],`@`];break;case 2:n=i>-1?[n[0],n[0],n[0],n[1]]:[n[0],n[1],n[0],`@`];break;case 3:n=i>-1?[n[0],n[1],n[0],n[2]]:[n[0],n[1],n[2],`@`]}var a=t>0?n[0]:t<0?n[1]:n[2];if(n[0].indexOf(`[`)===-1&&n[1].indexOf(`[`)===-1)return[r,a];if(n[0].match(/\[[=<>]/)!=null||n[1].match(/\[[=<>]/)!=null){var o=n[0].match(at),s=n[1].match(at);return ot(t,o)?[r,n[0]]:ot(t,s)?[r,n[1]]:[r,n[o!=null&&s!=null?2:1]]}return[r,a]}function ct(e,t,n){n??={};var r=``;switch(typeof e){case`string`:r=e==`m/d/yy`&&n.dateNF?n.dateNF:e;break;case`number`:r=e==14&&n.dateNF?n.dateNF:(n.table==null?I:n.table)[e],r??=n.table&&n.table[be[e]]||I[be[e]],r??=xe[e]||`General`}if(ge(r,0))return Ae(t,n);t instanceof Date&&(t=kt(t,n.date1904));var i=st(r,t);if(ge(i[1]))return Ae(t,n);if(t===!0)t=`TRUE`;else if(t===!1)t=`FALSE`;else if(t===``||t==null)return``;else if(isNaN(t)&&i[1].indexOf(`0`)>-1)return`#NUM!`;else if(!isFinite(t)&&i[1].indexOf(`0`)>-1)return`#DIV/0!`;return it(i[1],t,n,i[0])}function lt(e,t){if(typeof t!=`number`){t=+t||-1;for(var n=0;n<392;++n)if(I[n]==null)t<0&&(t=n);else if(I[n]==e){t=n;break}t<0&&(t=391)}return I[t]=e,t}function ut(e){for(var t=0;t!=392;++t)e[t]!==void 0&<(e[t],t)}function dt(){I=ye()}var ft=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function pt(e){var t=typeof e==`number`?I[e]:e;return t=t.replace(ft,`(\\d+)`),ft.lastIndex=0,RegExp(`^`+t+`$`)}function mt(e,t,n){var r=-1,i=-1,a=-1,o=-1,s=-1,c=-1;(t.match(ft)||[]).forEach(function(e,t){var l=parseInt(n[t+1],10);switch(e.toLowerCase().charAt(0)){case`y`:r=l;break;case`d`:a=l;break;case`h`:o=l;break;case`s`:c=l;break;case`m`:o>=0?s=l:i=l}}),ft.lastIndex=0,c>=0&&s==-1&&i>=0&&(s=i,i=-1);var l=(``+(r>=0?r:new Date().getFullYear())).slice(-4)+`-`+(`00`+(i>=1?i:1)).slice(-2)+`-`+(`00`+(a>=1?a:1)).slice(-2);l.length==7&&(l=`0`+l),l.length==8&&(l=`20`+l);var u=(`00`+(o>=0?o:0)).slice(-2)+`:`+(`00`+(s>=0?s:0)).slice(-2)+`:`+(`00`+(c>=0?c:0)).slice(-2);return o==-1&&s==-1&&c==-1?l:r==-1&&i==-1&&a==-1?u:l+`T`+u}var ht={"d.m":`d\\.m`};function gt(e,t){return lt(ht[e]||e,t)}var _t=(function(){var e={};e.version=`1.2.0`;function t(){for(var e=0,t=Array(256),n=0;n!=256;++n)e=n,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,e=e&1?-306674912^e>>>1:e>>>1,t[n]=e;return typeof Int32Array<`u`?new Int32Array(t):t}var n=t();function r(e){var t=0,n=0,r=0,i=typeof Int32Array<`u`?new Int32Array(4096):Array(4096);for(r=0;r!=256;++r)i[r]=e[r];for(r=0;r!=256;++r)for(n=e[r],t=256+r;t<4096;t+=256)n=i[t]=n>>>8^e[n&255];var a=[];for(r=1;r!=16;++r)a[r-1]=typeof Int32Array<`u`&&typeof i.subarray==`function`?i.subarray(r*256,r*256+256):i.slice(r*256,r*256+256);return a}var i=r(n),a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d=i[6],f=i[7],p=i[8],m=i[9],h=i[10],g=i[11],_=i[12],v=i[13],y=i[14];function b(e,t){for(var r=t^-1,i=0,a=e.length;i<a;)r=r>>>8^n[(r^e.charCodeAt(i++))&255];return~r}function x(e,t){for(var r=t^-1,i=e.length-15,b=0;b<i;)r=y[e[b++]^r&255]^v[e[b++]^r>>8&255]^_[e[b++]^r>>16&255]^g[e[b++]^r>>>24]^h[e[b++]]^m[e[b++]]^p[e[b++]]^f[e[b++]]^d[e[b++]]^u[e[b++]]^l[e[b++]]^c[e[b++]]^s[e[b++]]^o[e[b++]]^a[e[b++]]^n[e[b++]];for(i+=15;b<i;)r=r>>>8^n[(r^e[b++])&255];return~r}function S(e,t){for(var r=t^-1,i=0,a=e.length,o=0,s=0;i<a;)o=e.charCodeAt(i++),o<128?r=r>>>8^n[(r^o)&255]:o<2048?(r=r>>>8^n[(r^(192|o>>6&31))&255],r=r>>>8^n[(r^(128|o&63))&255]):o>=55296&&o<57344?(o=(o&1023)+64,s=e.charCodeAt(i++)&1023,r=r>>>8^n[(r^(240|o>>8&7))&255],r=r>>>8^n[(r^(128|o>>2&63))&255],r=r>>>8^n[(r^(128|s>>6&15|(o&3)<<4))&255],r=r>>>8^n[(r^(128|s&63))&255]):(r=r>>>8^n[(r^(224|o>>12&15))&255],r=r>>>8^n[(r^(128|o>>6&63))&255],r=r>>>8^n[(r^(128|o&63))&255]);return~r}return e.table=n,e.bstr=b,e.buf=x,e.str=S,e})(),L=(function(){var e={};e.version=`1.2.2`;function t(e,t){for(var n=e.split(`/`),r=t.split(`/`),i=0,a=0,o=Math.min(n.length,r.length);i<o;++i){if(a=n[i].length-r[i].length)return a;if(n[i]!=r[i])return n[i]<r[i]?-1:1}return n.length-r.length}function n(e){if(e.charAt(e.length-1)==`/`)return e.slice(0,-1).indexOf(`/`)===-1?e:n(e.slice(0,-1));var t=e.lastIndexOf(`/`);return t===-1?e:e.slice(0,t+1)}function r(e){if(e.charAt(e.length-1)==`/`)return r(e.slice(0,-1));var t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function i(e,t){typeof t==`string`&&(t=new Date(t));var n=t.getHours();n=n<<6|t.getMinutes(),n=n<<5|t.getSeconds()>>>1,e.write_shift(2,n);var r=t.getFullYear()-1980;r=r<<4|t.getMonth()+1,r=r<<5|t.getDate(),e.write_shift(2,r)}function a(e){var t=e.read_shift(2)&65535,n=e.read_shift(2)&65535,r=new Date,i=n&31;n>>>=5;var a=n&15;n>>>=4,r.setMilliseconds(0),r.setFullYear(n+1980),r.setMonth(a-1),r.setDate(i);var o=t&31;t>>>=5;var s=t&63;return t>>>=6,r.setHours(t),r.setMinutes(s),r.setSeconds(o<<1),r}function o(e){ir(e,0);for(var t={},n=0;e.l<=e.length-4;){var r=e.read_shift(2),i=e.read_shift(2),a=e.l+i,o={};switch(r){case 21589:n=e.read_shift(1),n&1&&(o.mtime=e.read_shift(4)),i>5&&(n&2&&(o.atime=e.read_shift(4)),n&4&&(o.ctime=e.read_shift(4))),o.mtime&&(o.mt=new Date(o.mtime*1e3));break;case 1:var s=e.read_shift(4),c=e.read_shift(4);o.usz=c*2**32+s,s=e.read_shift(4),c=e.read_shift(4),o.csz=c*2**32+s}e.l=a,t[r]=o}return t}var s;function c(){return s||=vt}function l(e,t){if(e[0]==80&&e[1]==75)return Je(e,t);if((e[0]|32)==109&&(e[1]|32)==105)return rt(e,t);if(e.length<512)throw Error(`CFB file size `+e.length+` < 512`);var n=3,r=512,i=0,a=0,o=0,s=0,c=0,l=[],m=e.slice(0,512);ir(m,0);var g=u(m);switch(n=g[0],n){case 3:r=512;break;case 4:r=4096;break;case 0:if(g[1]==0)return Je(e,t);default:throw Error(`Major Version: Expected 3 or 4 saw `+n)}r!==512&&(m=e.slice(0,r),ir(m,28));var y=e.slice(0,r);d(m,n);var b=m.read_shift(4,`i`);if(n===3&&b!==0)throw Error(`# Directory Sectors: Expected 0 saw `+b);m.l+=4,o=m.read_shift(4,`i`),m.l+=4,m.chk(`00100000`,`Mini Stream Cutoff Size: `),s=m.read_shift(4,`i`),i=m.read_shift(4,`i`),c=m.read_shift(4,`i`),a=m.read_shift(4,`i`);for(var x=-1,S=0;S<109&&(x=m.read_shift(4,`i`),!(x<0));++S)l[S]=x;var C=f(e,r);h(c,a,C,r,l);var w=_(C,o,l,r);o<w.length&&(w[o].name=`!Directory`),i>0&&s!==k&&(w[s].name=`!MiniFAT`),w[l[0]].name=`!FAT`,w.fat_addrs=l,w.ssz=r;var T={},E=[],D=[],O=[];v(o,w,C,E,i,T,D,s),p(D,O,E),E.shift();var A={FileIndex:D,FullPaths:O};return t&&t.raw&&(A.raw={header:y,sectors:C}),A}function u(e){if(e[e.l]==80&&e[e.l+1]==75)return[0,0];e.chk(N,`Header Signature: `),e.l+=16;var t=e.read_shift(2,`u`);return[e.read_shift(2,`u`),t]}function d(e,t){var n=9;switch(e.l+=2,n=e.read_shift(2)){case 9:if(t!=3)throw Error(`Sector Shift: Expected 9 saw `+n);break;case 12:if(t!=4)throw Error(`Sector Shift: Expected 12 saw `+n);break;default:throw Error(`Sector Shift: Expected 9 or 12 saw `+n)}e.chk(`0600`,`Mini Sector Shift: `),e.chk(`000000000000`,`Reserved: `)}function f(e,t){for(var n=Math.ceil(e.length/t)-1,r=[],i=1;i<n;++i)r[i-1]=e.slice(i*t,(i+1)*t);return r[n-1]=e.slice(n*t),r}function p(e,t,n){for(var r=0,i=0,a=0,o=0,s=0,c=n.length,l=[],u=[];r<c;++r)l[r]=u[r]=r,t[r]=n[r];for(;s<u.length;++s)r=u[s],i=e[r].L,a=e[r].R,o=e[r].C,l[r]===r&&(i!==-1&&l[i]!==i&&(l[r]=l[i]),a!==-1&&l[a]!==a&&(l[r]=l[a])),o!==-1&&(l[o]=r),i!==-1&&r!=l[r]&&(l[i]=l[r],u.lastIndexOf(i)<s&&u.push(i)),a!==-1&&r!=l[r]&&(l[a]=l[r],u.lastIndexOf(a)<s&&u.push(a));for(r=1;r<c;++r)l[r]===r&&(a!==-1&&l[a]!==a?l[r]=l[a]:i!==-1&&l[i]!==i&&(l[r]=l[i]));for(r=1;r<c;++r)if(e[r].type!==0){if(s=r,s!=l[s])do s=l[s],t[r]=t[s]+`/`+t[r];while(s!==0&&l[s]!==-1&&s!=l[s]);l[r]=-1}for(t[0]+=`/`,r=1;r<c;++r)e[r].type!==2&&(t[r]+=`/`)}function m(e,t,n){for(var r=e.start,i=e.size,a=[],o=r;n&&i>0&&o>=0;)a.push(t.slice(o*O,o*O+O)),i-=O,o=Xn(n,o*4);return a.length===0?V(0):F(a).slice(0,e.size)}function h(e,t,n,r,i){var a=k;if(e===k){if(t!==0)throw Error(`DIFAT chain shorter than expected`)}else if(e!==-1){var o=n[e],s=(r>>>2)-1;if(!o)return;for(var c=0;c<s&&(a=Xn(o,c*4))!==k;++c)i.push(a);t>=1&&h(Xn(o,r-4),t-1,n,r,i)}}function g(e,t,n,r,i){var a=[],o=[];i||=[];var s=r-1,c=0,l=0;for(c=t;c>=0;){i[c]=!0,a[a.length]=c,o.push(e[c]);var u=n[Math.floor(c*4/r)];if(l=c*4&s,r<4+l)throw Error(`FAT boundary crossed: `+c+` 4 `+r);if(!e[u])break;c=Xn(e[u],l)}return{nodes:a,data:Tn([o])}}function _(e,t,n,r){var i=e.length,a=[],o=[],s=[],c=[],l=r-1,u=0,d=0,f=0,p=0;for(u=0;u<i;++u)if(s=[],f=u+t,f>=i&&(f-=i),!o[f]){c=[];var m=[];for(d=f;d>=0;){m[d]=!0,o[d]=!0,s[s.length]=d,c.push(e[d]);var h=n[Math.floor(d*4/r)];if(p=d*4&l,r<4+p)throw Error(`FAT boundary crossed: `+d+` 4 `+r);if(!e[h]||(d=Xn(e[h],p),m[d]))break}a[f]={nodes:s,data:Tn([c])}}return a}function v(e,t,n,r,i,a,o,s){for(var c=0,l=r.length?2:0,u=t[e].data,d=0,f=0,p;d<u.length;d+=128){var h=u.slice(d,d+128);ir(h,64),f=h.read_shift(2),p=Dn(h,0,f-l),r.push(p);var _={name:p,type:h.read_shift(1),color:h.read_shift(1),L:h.read_shift(4,`i`),R:h.read_shift(4,`i`),C:h.read_shift(4,`i`),clsid:h.read_shift(16),state:h.read_shift(4,`i`),start:0,size:0};h.read_shift(2)+h.read_shift(2)+h.read_shift(2)+h.read_shift(2)!==0&&(_.ct=y(h,h.l-8)),h.read_shift(2)+h.read_shift(2)+h.read_shift(2)+h.read_shift(2)!==0&&(_.mt=y(h,h.l-8)),_.start=h.read_shift(4,`i`),_.size=h.read_shift(4,`i`),_.size<0&&_.start<0&&(_.size=_.type=0,_.start=k,_.name=``),_.type===5?(c=_.start,i>0&&c!==k&&(t[c].name=`!StreamData`)):_.size>=4096?(_.storage=`fat`,t[_.start]===void 0&&(t[_.start]=g(n,_.start,t.fat_addrs,t.ssz)),t[_.start].name=_.name,_.content=t[_.start].data.slice(0,_.size)):(_.storage=`minifat`,_.size<0?_.size=0:c!==k&&_.start!==k&&t[c]&&(_.content=m(_,t[c].data,(t[s]||{}).data))),_.content&&ir(_.content,0),a[p]=_,o.push(_)}}function y(e,t){return new Date((Yn(e,t+4)/1e7*2**32+Yn(e,t)/1e7-11644473600)*1e3)}function b(e,t){return c(),l(s.readFileSync(e),t)}function x(e,t){var n=t&&t.type;switch(n||j&&Buffer.isBuffer(e)&&(n=`buffer`),n||`base64`){case`file`:return b(e,t);case`base64`:return l(te(A(e)),t);case`binary`:return l(te(e),t)}return l(e,t)}function S(e,t){var n=t||{},r=n.root||`Root Entry`;if(e.FullPaths||=[],e.FileIndex||=[],e.FullPaths.length!==e.FileIndex.length)throw Error(`inconsistent CFB structure`);e.FullPaths.length===0&&(e.FullPaths[0]=r+`/`,e.FileIndex[0]={name:r,type:5}),n.CLSID&&(e.FileIndex[0].clsid=n.CLSID),C(e)}function C(e){var t=`Sh33tJ5`;if(!L.find(e,`/`+t)){var n=V(4);n[0]=55,n[1]=n[3]=50,n[2]=54,e.FileIndex.push({name:t,type:2,content:n,size:4,L:69,R:69,C:69}),e.FullPaths.push(e.FullPaths[0]+t),w(e)}}function w(e,i){S(e);for(var a=!1,o=!1,s=e.FullPaths.length-1;s>=0;--s){var c=e.FileIndex[s];switch(c.type){case 0:o?a=!0:(e.FileIndex.pop(),e.FullPaths.pop());break;case 1:case 2:case 5:o=!0,isNaN(c.R*c.L*c.C)&&(a=!0),c.R>-1&&c.L>-1&&c.R==c.L&&(a=!0);break;default:a=!0}}if(a||i){var l=new Date(1987,1,19),u=0,d=Object.create?Object.create(null):{},f=[];for(s=0;s<e.FullPaths.length;++s)d[e.FullPaths[s]]=!0,e.FileIndex[s].type!==0&&f.push([e.FullPaths[s],e.FileIndex[s]]);for(s=0;s<f.length;++s){var p=n(f[s][0]);for(o=d[p];!o;){for(;n(p)&&!d[n(p)];)p=n(p);f.push([p,{name:r(p).replace(`/`,``),type:1,clsid:re,ct:l,mt:l,content:null}]),d[p]=!0,p=n(f[s][0]),o=d[p]}}for(f.sort(function(e,n){return t(e[0],n[0])}),e.FullPaths=[],e.FileIndex=[],s=0;s<f.length;++s)e.FullPaths[s]=f[s][0],e.FileIndex[s]=f[s][1];for(s=0;s<f.length;++s){var m=e.FileIndex[s],h=e.FullPaths[s];if(m.name=r(h).replace(`/`,``),m.L=m.R=m.C=-(m.color=1),m.size=m.content?m.content.length:0,m.start=0,m.clsid=m.clsid||re,s===0)m.C=f.length>1?1:-1,m.size=0,m.type=5;else if(h.slice(-1)==`/`){for(u=s+1;u<f.length&&n(e.FullPaths[u])!=h;++u);for(m.C=u>=f.length?-1:u,u=s+1;u<f.length&&n(e.FullPaths[u])!=n(h);++u);m.R=u>=f.length?-1:u,m.type=1}else n(e.FullPaths[s+1]||``)==n(h)&&(m.R=s+1),m.type=2}}}function T(e,t){var n=t||{};if(n.fileType==`mad`)return it(e,n);if(w(e),n.fileType===`zip`)return Xe(e,n);var r=(function(e){for(var t=0,n=0,r=0;r<e.FileIndex.length;++r){var i=e.FileIndex[r];if(i.content){var a=i.content.length;a>0&&(a<4096?t+=a+63>>6:n+=a+511>>9)}}for(var o=e.FullPaths.length+3>>2,s=t+7>>3,c=t+127>>7,l=s+n+o+c,u=l+127>>7,d=u<=109?0:Math.ceil((u-109)/127);l+u+d+127>>7>u;)d=++u<=109?0:Math.ceil((u-109)/127);var f=[1,d,u,c,o,n,t,0];return e.FileIndex[0].size=t<<6,f[7]=(e.FileIndex[0].start=f[0]+f[1]+f[2]+f[3]+f[4]+f[5])+(f[6]+7>>3),f})(e),i=V(r[7]<<9),a=0,o=0;for(a=0;a<8;++a)i.write_shift(1,ne[a]);for(a=0;a<8;++a)i.write_shift(2,0);for(i.write_shift(2,62),i.write_shift(2,3),i.write_shift(2,65534),i.write_shift(2,9),i.write_shift(2,6),a=0;a<3;++a)i.write_shift(2,0);for(i.write_shift(4,0),i.write_shift(4,r[2]),i.write_shift(4,r[0]+r[1]+r[2]+r[3]-1),i.write_shift(4,0),i.write_shift(4,4096),i.write_shift(4,r[3]?r[0]+r[1]+r[2]-1:k),i.write_shift(4,r[3]),i.write_shift(-4,r[1]?r[0]-1:k),i.write_shift(4,r[1]),a=0;a<109;++a)i.write_shift(-4,a<r[2]?r[1]+a:-1);if(r[1])for(o=0;o<r[1];++o){for(;a<236+o*127;++a)i.write_shift(-4,a<r[2]?r[1]+a:-1);i.write_shift(-4,o===r[1]-1?k:o+1)}var s=function(e){for(o+=e;a<o-1;++a)i.write_shift(-4,a+1);e&&(++a,i.write_shift(-4,k))};for(o=a=0,o+=r[1];a<o;++a)i.write_shift(-4,ie.DIFSECT);for(o+=r[2];a<o;++a)i.write_shift(-4,ie.FATSECT);s(r[3]),s(r[4]);for(var c=0,l=0,u=e.FileIndex[0];c<e.FileIndex.length;++c)u=e.FileIndex[c],u.content&&(l=u.content.length,!(l<4096)&&(u.start=o,s(l+511>>9)));for(s(r[6]+7>>3);i.l&511;)i.write_shift(-4,ie.ENDOFCHAIN);for(o=a=0,c=0;c<e.FileIndex.length;++c)u=e.FileIndex[c],u.content&&(l=u.content.length,!(!l||l>=4096)&&(u.start=o,s(l+63>>6)));for(;i.l&511;)i.write_shift(-4,ie.ENDOFCHAIN);for(a=0;a<r[4]<<2;++a){var d=e.FullPaths[a];if(!d||d.length===0){for(c=0;c<17;++c)i.write_shift(4,0);for(c=0;c<3;++c)i.write_shift(4,-1);for(c=0;c<12;++c)i.write_shift(4,0)}else{u=e.FileIndex[a],a===0&&(u.start=u.size?u.start-1:k);var f=a===0&&n.root||u.name;if(f.length>31&&(console.error(`Name `+f+` will be truncated to `+f.slice(0,31)),f=f.slice(0,31)),l=2*(f.length+1),i.write_shift(64,f,`utf16le`),i.write_shift(2,l),i.write_shift(1,u.type),i.write_shift(1,u.color),i.write_shift(-4,u.L),i.write_shift(-4,u.R),i.write_shift(-4,u.C),u.clsid)i.write_shift(16,u.clsid,`hex`);else for(c=0;c<4;++c)i.write_shift(4,0);i.write_shift(4,u.state||0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,u.start),i.write_shift(4,u.size),i.write_shift(4,0)}}for(a=1;a<e.FileIndex.length;++a)if(u=e.FileIndex[a],u.size>=4096){if(i.l=u.start+1<<9,j&&Buffer.isBuffer(u.content))u.content.copy(i,i.l,0,u.size),i.l+=u.size+511&-512;else{for(c=0;c<u.size;++c)i.write_shift(1,u.content[c]);for(;c&511;++c)i.write_shift(1,0)}}for(a=1;a<e.FileIndex.length;++a)if(u=e.FileIndex[a],u.size>0&&u.size<4096){if(j&&Buffer.isBuffer(u.content))u.content.copy(i,i.l,0,u.size),i.l+=u.size+63&-64;else{for(c=0;c<u.size;++c)i.write_shift(1,u.content[c]);for(;c&63;++c)i.write_shift(1,0)}}if(j)i.l=i.length;else for(;i.l<i.length;)i.write_shift(1,0);return i}function E(e,t){var n=e.FullPaths.map(function(e){return e.toUpperCase()}),r=n.map(function(e){var t=e.split(`/`);return t[t.length-(e.slice(-1)==`/`?2:1)]}),i=!1;t.charCodeAt(0)===47?(i=!0,t=n[0].slice(0,-1)+t):i=t.indexOf(`/`)!==-1;var a=t.toUpperCase(),o=i===!0?n.indexOf(a):r.indexOf(a);if(o!==-1)return e.FileIndex[o];var s=!a.match(se);for(a=a.replace(oe,``),s&&(a=a.replace(se,`!`)),o=0;o<n.length;++o)if((s?n[o].replace(se,`!`):n[o]).replace(oe,``)==a||(s?r[o].replace(se,`!`):r[o]).replace(oe,``)==a)return e.FileIndex[o];return null}var O=64,k=-2,N=`d0cf11e0a1b11ae1`,ne=[208,207,17,224,161,177,26,225],re=`00000000000000000000000000000000`,ie={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:k,FREESECT:-1,HEADER_SIGNATURE:N,HEADER_MINOR_VERSION:`3e00`,MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:re,EntryTypes:[`unknown`,`storage`,`stream`,`lockbytes`,`property`,`root`]};function ae(e,t,n){c();var r=T(e,n);s.writeFileSync(t,r)}function ce(e){for(var t=Array(e.length),n=0;n<e.length;++n)t[n]=String.fromCharCode(e[n]);return t.join(``)}function le(e,t){var n=T(e,t);switch(t&&t.type||`buffer`){case`file`:return c(),s.writeFileSync(t.filename,n),n;case`binary`:return typeof n==`string`?n:ce(n);case`base64`:return D(typeof n==`string`?n:ce(n));case`buffer`:if(j)return Buffer.isBuffer(n)?n:M(n);case`array`:return typeof n==`string`?te(n):n}return n}var ue;function de(e){try{var t=e.InflateRaw,n=new t;if(n._processChunk(new Uint8Array([3,0]),n._finishFlushFlag),n.bytesRead)ue=e;else throw Error(`zlib does not expose bytesRead`)}catch(e){console.error(`cannot use native zlib: `+(e.message||e))}}function fe(e,t){if(!ue)return Ke(e,t);var n=ue.InflateRaw,r=new n,i=r._processChunk(e.slice(e.l),r._finishFlushFlag);return e.l+=r.bytesRead,i}function pe(e){return ue?ue.deflateRawSync(e):Re(e)}var me=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],he=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],ge=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];function _e(e){var t=(e<<1|e<<11)&139536|(e<<5|e<<15)&558144;return(t>>16|t>>8|t)&255}for(var ve=typeof Uint8Array<`u`,ye=ve?new Uint8Array(256):[],I=0;I<256;++I)ye[I]=_e(I);function be(e,t){var n=ye[e&255];return t<=8?n>>>8-t:(n=n<<8|ye[e>>8&255],t<=16?n>>>16-t:(n=n<<8|ye[e>>16&255],n>>>24-t))}function xe(e,t){var n=t&7,r=t>>>3;return(e[r]|(n<=6?0:e[r+1]<<8))>>>n&3}function Se(e,t){var n=t&7,r=t>>>3;return(e[r]|(n<=5?0:e[r+1]<<8))>>>n&7}function Ce(e,t){var n=t&7,r=t>>>3;return(e[r]|(n<=4?0:e[r+1]<<8))>>>n&15}function we(e,t){var n=t&7,r=t>>>3;return(e[r]|(n<=3?0:e[r+1]<<8))>>>n&31}function Te(e,t){var n=t&7,r=t>>>3;return(e[r]|(n<=1?0:e[r+1]<<8))>>>n&127}function Ee(e,t,n){var r=t&7,i=t>>>3,a=(1<<n)-1,o=e[i]>>>r;return n<8-r||(o|=e[i+1]<<8-r,n<16-r)||(o|=e[i+2]<<16-r,n<24-r)||(o|=e[i+3]<<24-r),o&a}function De(e,t,n){var r=t&7,i=t>>>3;return r<=5?e[i]|=(n&7)<<r:(e[i]|=n<<r&255,e[i+1]=(n&7)>>8-r),t+3}function Oe(e,t,n){var r=t&7,i=t>>>3;return n=(n&1)<<r,e[i]|=n,t+1}function ke(e,t,n){var r=t&7,i=t>>>3;return n<<=r,e[i]|=n&255,n>>>=8,e[i+1]=n,t+8}function Ae(e,t,n){var r=t&7,i=t>>>3;return n<<=r,e[i]|=n&255,n>>>=8,e[i+1]=n&255,e[i+2]=n>>>8,t+16}function je(e,t){var n=e.length,r=2*n>t?2*n:t+5,i=0;if(n>=t)return e;if(j){var a=P(r);if(e.copy)e.copy(a);else for(;i<e.length;++i)a[i]=e[i];return a}if(ve){var o=new Uint8Array(r);if(o.set)o.set(e);else for(;i<n;++i)o[i]=e[i];return o}return e.length=r,e}function Me(e){for(var t=Array(e),n=0;n<e;++n)t[n]=0;return t}function Ne(e,t,n){var r=1,i=0,a=0,o=0,s=0,c=e.length,l=ve?new Uint16Array(32):Me(32);for(a=0;a<32;++a)l[a]=0;for(a=c;a<n;++a)e[a]=0;c=e.length;var u=ve?new Uint16Array(c):Me(c);for(a=0;a<c;++a)l[i=e[a]]++,r<i&&(r=i),u[a]=0;for(l[0]=0,a=1;a<=r;++a)l[a+16]=s=s+l[a-1]<<1;for(a=0;a<c;++a)s=e[a],s!=0&&(u[a]=l[s+16]++);var d=0;for(a=0;a<c;++a)if(d=e[a],d!=0)for(s=be(u[a],r)>>r-d,o=(1<<r+4-d)-1;o>=0;--o)t[s|o<<d]=d&15|a<<4;return r}var Pe=ve?new Uint16Array(512):Me(512),Fe=ve?new Uint16Array(32):Me(32);if(!ve){for(var Ie=0;Ie<512;++Ie)Pe[Ie]=0;for(Ie=0;Ie<32;++Ie)Fe[Ie]=0}(function(){for(var e=[],t=0;t<32;t++)e.push(5);Ne(e,Fe,32);var n=[];for(t=0;t<=143;t++)n.push(8);for(;t<=255;t++)n.push(9);for(;t<=279;t++)n.push(7);for(;t<=287;t++)n.push(8);Ne(n,Pe,288)})();var Le=(function(){for(var e=ve?new Uint8Array(32768):[],t=0,n=0;t<ge.length-1;++t)for(;n<ge[t+1];++n)e[n]=t;for(;n<32768;++n)e[n]=29;var r=ve?new Uint8Array(259):[];for(t=0,n=0;t<he.length-1;++t)for(;n<he[t+1];++n)r[n]=t;function i(e,t){for(var n=0;n<e.length;){var r=Math.min(65535,e.length-n),i=n+r==e.length;for(t.write_shift(1,+i),t.write_shift(2,r),t.write_shift(2,~r&65535);r-->0;)t[t.l++]=e[n++]}return t.l}function a(t,n){for(var i=0,a=0,o=ve?new Uint16Array(32768):[];a<t.length;){var s=Math.min(65535,t.length-a);if(s<10){for(i=De(n,i,+(a+s==t.length)),i&7&&(i+=8-(i&7)),n.l=i/8|0,n.write_shift(2,s),n.write_shift(2,~s&65535);s-->0;)n[n.l++]=t[a++];i=n.l*8}else{i=De(n,i,+(a+s==t.length)+2);for(var c=0;s-->0;){var l=t[a];c=(c<<5^l)&32767;var u=-1,d=0;if((u=o[c])&&(u|=a&-32768,u>a&&(u-=32768),u<a))for(;t[u+d]==t[a+d]&&d<250;)++d;if(d>2){l=r[d],l<=22?i=ke(n,i,ye[l+1]>>1)-1:(ke(n,i,3),i+=5,ke(n,i,ye[l-23]>>5),i+=3);var f=l<8?0:l-4>>2;f>0&&(Ae(n,i,d-he[l]),i+=f),l=e[a-u],i=ke(n,i,ye[l]>>3),i-=3;var p=l<4?0:l-2>>1;p>0&&(Ae(n,i,a-u-ge[l]),i+=p);for(var m=0;m<d;++m)o[c]=a&32767,c=(c<<5^t[a])&32767,++a;s-=d-1}else l<=143?l+=48:i=Oe(n,i,1),i=ke(n,i,ye[l]),o[c]=a&32767,++a}i=ke(n,i,0)-1}}return n.l=(i+7)/8|0,n.l}return function(e,t){return e.length<8?i(e,t):a(e,t)}})();function Re(e){var t=V(50+Math.floor(e.length*1.1)),n=Le(e,t);return t.slice(0,n)}var ze=ve?new Uint16Array(32768):Me(32768),Be=ve?new Uint16Array(32768):Me(32768),Ve=ve?new Uint16Array(128):Me(128),He=1,Ue=1;function We(e,t){var n=we(e,t)+257;t+=5;var r=we(e,t)+1;t+=5;var i=Ce(e,t)+4;t+=4;for(var a=0,o=ve?new Uint8Array(19):Me(19),s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=1,l=ve?new Uint8Array(8):Me(8),u=ve?new Uint8Array(8):Me(8),d=o.length,f=0;f<i;++f)o[me[f]]=a=Se(e,t),c<a&&(c=a),l[a]++,t+=3;var p=0;for(l[0]=0,f=1;f<=c;++f)u[f]=p=p+l[f-1]<<1;for(f=0;f<d;++f)(p=o[f])!=0&&(s[f]=u[p]++);var m=0;for(f=0;f<d;++f)if(m=o[f],m!=0){p=ye[s[f]]>>8-m;for(var h=(1<<7-m)-1;h>=0;--h)Ve[p|h<<m]=m&7|f<<3}var g=[];for(c=1;g.length<n+r;)switch(p=Ve[Te(e,t)],t+=p&7,p>>>=3){case 16:for(a=3+xe(e,t),t+=2,p=g[g.length-1];a-->0;)g.push(p);break;case 17:for(a=3+Se(e,t),t+=3;a-->0;)g.push(0);break;case 18:for(a=11+Te(e,t),t+=7;a-->0;)g.push(0);break;default:g.push(p),c<p&&(c=p)}var _=g.slice(0,n),v=g.slice(n);for(f=n;f<286;++f)_[f]=0;for(f=r;f<30;++f)v[f]=0;return He=Ne(_,ze,286),Ue=Ne(v,Be,30),t}function Ge(e,t){if(e[0]==3&&!(e[1]&3))return[ee(t),2];for(var n=0,r=0,i=P(t||1<<18),a=0,o=i.length>>>0,s=0,c=0;!(r&1);){if(r=Se(e,n),n+=3,r>>>1)r>>1==1?(s=9,c=5):(n=We(e,n),s=He,c=Ue);else{n&7&&(n+=8-(n&7));var l=e[n>>>3]|e[(n>>>3)+1]<<8;if(n+=32,l>0)for(!t&&o<a+l&&(i=je(i,a+l),o=i.length);l-->0;)i[a++]=e[n>>>3],n+=8;continue}for(;;){!t&&o<a+32767&&(i=je(i,a+32767),o=i.length);var u=Ee(e,n,s),d=r>>>1==1?Pe[u]:ze[u];if(n+=d&15,d>>>=4,!(d>>>8&255))i[a++]=d;else if(d==256)break;else{d-=257;var f=d<8?0:d-4>>2;f>5&&(f=0);var p=a+he[d];f>0&&(p+=Ee(e,n,f),n+=f),u=Ee(e,n,c),d=r>>>1==1?Fe[u]:Be[u],n+=d&15,d>>>=4;var m=d<4?0:d-2>>1,h=ge[d];for(m>0&&(h+=Ee(e,n,m),n+=m),!t&&o<p&&(i=je(i,p+100),o=i.length);a<p;)i[a]=i[a-h],++a}}}return t?[i,n+7>>>3]:[i.slice(0,a),n+7>>>3]}function Ke(e,t){var n=Ge(e.slice(e.l||0),t);return e.l+=n[1],n[0]}function qe(e,t){if(e)typeof console<`u`&&console.error(t);else throw Error(t)}function Je(e,t){var n=e;ir(n,0);var r={FileIndex:[],FullPaths:[]};S(r,{root:t.root});for(var i=n.length-4;(n[i]!=80||n[i+1]!=75||n[i+2]!=5||n[i+3]!=6)&&i>=0;)--i;n.l=i+4,n.l+=4;var a=n.read_shift(2);for(n.l+=6,n.l=n.read_shift(4),i=0;i<a;++i){n.l+=20;var s=n.read_shift(4),c=n.read_shift(4),l=n.read_shift(2),u=n.read_shift(2),d=n.read_shift(2);n.l+=8;var f=n.read_shift(4),p=o(n.slice(n.l+l,n.l+l+u));n.l+=l+u+d;var m=n.l;n.l=f+4,p&&p[1]&&((p[1]||{}).usz&&(c=p[1].usz),(p[1]||{}).csz&&(s=p[1].csz)),Ye(n,s,c,r,p),n.l=m}return r}function Ye(e,t,n,r,i){e.l+=2;var s=e.read_shift(2),c=e.read_shift(2),l=a(e);if(s&8257)throw Error(`Unsupported ZIP encryption`);for(var u=e.read_shift(4),d=e.read_shift(4),f=e.read_shift(4),p=e.read_shift(2),m=e.read_shift(2),h=``,g=0;g<p;++g)h+=String.fromCharCode(e[e.l++]);if(m){var _=o(e.slice(e.l,e.l+m));(_[21589]||{}).mt&&(l=_[21589].mt),(_[1]||{}).usz&&(f=_[1].usz),(_[1]||{}).csz&&(d=_[1].csz),i&&((i[21589]||{}).mt&&(l=i[21589].mt),(i[1]||{}).usz&&(f=i[1].usz),(i[1]||{}).csz&&(d=i[1].csz))}e.l+=m;var v=e.slice(e.l,e.l+d);switch(c){case 8:v=fe(e,f);break;case 0:e.l+=d;break;default:throw Error(`Unsupported ZIP Compression method `+c)}var y=!1;s&8&&(u=e.read_shift(4),u==134695760&&(u=e.read_shift(4),y=!0),d=e.read_shift(4),f=e.read_shift(4)),d!=t&&qe(y,`Bad compressed size: `+t+` != `+d),f!=n&&qe(y,`Bad uncompressed size: `+n+` != `+f),ot(r,h,v,{unsafe:!0,mt:l})}function Xe(e,t){var n=t||{},r=[],a=[],o=V(1),s=n.compression?8:0,c=0,l=0,u=0,d=0,f=0,p=e.FullPaths[0],m=p,h=e.FileIndex[0],g=[],_=0;for(l=1;l<e.FullPaths.length;++l)if(m=e.FullPaths[l].slice(p.length),h=e.FileIndex[l],!(!h.size||!h.content||Array.isArray(h.content)&&h.content.length==0||m==`Sh33tJ5`)){var v=d,y=V(m.length);for(u=0;u<m.length;++u)y.write_shift(1,m.charCodeAt(u)&127);y=y.slice(0,y.l),g[f]=typeof h.content==`string`?_t.bstr(h.content,0):_t.buf(h.content,0);var b=typeof h.content==`string`?te(h.content):h.content;s==8&&(b=pe(b)),o=V(30),o.write_shift(4,67324752),o.write_shift(2,20),o.write_shift(2,c),o.write_shift(2,s),h.mt?i(o,h.mt):o.write_shift(4,0),o.write_shift(-4,c&8?0:g[f]),o.write_shift(4,c&8?0:b.length),o.write_shift(4,c&8?0:h.content.length),o.write_shift(2,y.length),o.write_shift(2,0),d+=o.length,r.push(o),d+=y.length,r.push(y),d+=b.length,r.push(b),c&8&&(o=V(12),o.write_shift(-4,g[f]),o.write_shift(4,b.length),o.write_shift(4,h.content.length),d+=o.l,r.push(o)),o=V(46),o.write_shift(4,33639248),o.write_shift(2,0),o.write_shift(2,20),o.write_shift(2,c),o.write_shift(2,s),o.write_shift(4,0),o.write_shift(-4,g[f]),o.write_shift(4,b.length),o.write_shift(4,h.content.length),o.write_shift(2,y.length),o.write_shift(2,0),o.write_shift(2,0),o.write_shift(2,0),o.write_shift(2,0),o.write_shift(4,0),o.write_shift(4,v),_+=o.l,a.push(o),_+=y.length,a.push(y),++f}return o=V(22),o.write_shift(4,101010256),o.write_shift(2,0),o.write_shift(2,0),o.write_shift(2,f),o.write_shift(2,f),o.write_shift(4,_),o.write_shift(4,d),o.write_shift(2,0),F([F(r),F(a),o])}var Ze={htm:`text/html`,xml:`text/xml`,gif:`image/gif`,jpg:`image/jpeg`,png:`image/png`,mso:`application/x-mso`,thmx:`application/vnd.ms-officetheme`,sh33tj5:`application/octet-stream`};function Qe(e,t){if(e.ctype)return e.ctype;var n=e.name||``,r=n.match(/\.([^\.]+)$/);return r&&Ze[r[1]]||t&&(r=(n=t).match(/[\.\\]([^\.\\])+$/),r&&Ze[r[1]])?Ze[r[1]]:`application/octet-stream`}function $e(e){for(var t=D(e),n=[],r=0;r<t.length;r+=76)n.push(t.slice(r,r+76));return n.join(`\r
|
|
3
3
|
`)+`\r
|
|
4
4
|
`}function et(e){var t=e.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g,function(e){var t=e.charCodeAt(0).toString(16).toUpperCase();return`=`+(t.length==1?`0`+t:t)});t=t.replace(/ $/gm,`=20`).replace(/\t$/gm,`=09`),t.charAt(0)==`
|
package/dist/vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as e, E as t, S as n, T as r, _ as i, a, c as o, d as s, g as c, h as l, i as u, l as d, m as f, n as p, r as m, s as h, t as g, u as _, v, w as y, x as b, y as x } from "./samples-
|
|
1
|
+
import { C as e, E as t, S as n, T as r, _ as i, a, c as o, d as s, g as c, h as l, i as u, l as d, m as f, n as p, r as m, s as h, t as g, u as _, v, w as y, x as b, y as x } from "./samples-tIlB6kNg.js";
|
|
2
2
|
import { createSerialLock as S } from "gui-chat-protocol";
|
|
3
3
|
import { Fragment as C, computed as w, createCommentVNode as T, createElementBlock as E, createElementVNode as D, createTextVNode as O, defineComponent as k, inject as A, normalizeClass as ee, onMounted as te, onScopeDispose as ne, onUnmounted as re, openBlock as ie, ref as j, renderList as ae, shallowRef as oe, toDisplayString as se, unref as ce, vModelRadio as le, vModelText as ue, watch as de, withDirectives as fe, withKeys as pe } from "vue";
|
|
4
4
|
import { PLUGIN_RUNTIME_KEY as me, createUseT as he } from "gui-chat-protocol/vue";
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
let e=require("gui-chat-protocol"),t=require("quickjs-emscripten-core");var n=`presentSpreadsheet`,r={type:`function`,name:n,description:`Display an Excel-like spreadsheet with formulas and calculations.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Title for the spreadsheet`},sheets:{type:`array`,description:`Sheets to render as spreadsheet tabs. Each sheet includes a name and 2D array of cells (rows x columns).`,items:{type:`object`,properties:{name:{type:`string`,description:`Sheet name (e.g., 'Sales Q1', 'Summary')`},data:{type:`array`,description:`Rows of cells. Each cell is an object with 'v' (value) and 'f' (format). Use Excel-style A1 notation in formulas: columns are letters (A, B, C...), rows are 1-based numbers (1, 2, 3...). Values can be text, numbers, dates, or formulas. Examples: [{"v": "Product"}, {"v": 2024, "f": "#,##0"}, {"v": "01/15/2025", "f": "MM/DD/YYYY"}, {"v": "=B2*1.05", "f": "$#,##0.00"}]. Format codes: '$#,##0.00' (currency), '#,##0' (integer), '0.00%' (percent), '0.00' (decimal), 'MM/DD/YYYY' (date), 'DD-MMM-YYYY' (date), 'YYYY-MM-DD' (ISO date).`,items:{type:`array`,description:`Row of cells. Each cell is an object with value and format.`,items:{type:`object`,description:`Cell object with value and optional format. If value is a string starting with '=', it's treated as a formula.`,properties:{v:{oneOf:[{type:`string`},{type:`number`},{type:`boolean`}],description:`Cell value. Can be text, number, date, or formula (string starting with '='). Examples: 'Revenue', 1500000, '01/15/2025', '=SUM(A1:A10)', '=B2-TODAY()'. Date strings like '01/15/2025' are automatically parsed to date serial numbers.`},f:{type:`string`,description:`Optional format code for displaying the value. Common formats: '$#,##0.00' (currency), '#,##0' (integer), '0.00%' (percent), '0.00' (decimal), 'MM/DD/YYYY' (date), 'DD-MMM-YYYY' (date), 'YYYY-MM-DD' (ISO date)`}},required:[`v`]}}},functions:{type:`array`,description:`Optional. Functions this workbook defines, for an analysis no built-in function does (a moving average, a custom score). A formula on any sheet calls one by name, e.g. =MOVING.AVG(B2:B100, 7), and it recalculates like any formula. Each is a JavaScript function body run in a sandbox with no network, files, DOM or timers, at most 50 ms per call. A range argument arrives as rows of cells (an array of arrays; a blank cell is null); a single cell and any other argument as its value. A whole column (A:A) arrives as the rows its sheet's data reaches. Return a number, text or true/false; anything else, a thrown error or a time-out shows as an error in the cell.`,items:{type:`object`,properties:{name:{type:`string`,description:`Letters and digits, parts joined by dots (MOVING.AVG). Not the name of a built-in function.`},params:{type:`array`,items:{type:`string`},description:`Parameter names, in call order, e.g. ["values", "n"].`},body:{type:`string`,description:`The function body, e.g. "const xs = values.flat().filter((v) => typeof v === 'number'); const tail = xs.slice(-n); return tail.reduce((a, b) => a + b, 0) / tail.length;"`},description:{type:`string`,description:`What it computes.`}},required:[`name`,`params`,`body`]}}},required:[`name`,`data`]}}},required:[`title`,`sheets`]}},i=`Use ${n} whenever the user needs a spreadsheet-style table, multi-step math, or dynamic what-if analysis—do not summarize in text. Build LIVE sheets where every cell is an object {"v": value, "f": format}. For formulas, set "v" to a string starting with "=" (e.g., {"v": "=B2*1.05", "f": "$#,##0.00"}). For dates, use date strings like "01/15/2025" or date formulas like "=TODAY()" or "=DATE(2025,1,15)". The spreadsheet auto-parses common date formats (MM/DD/YYYY, YYYY-MM-DD, DD-MMM-YYYY) into date serial numbers for calculations. Date arithmetic works: "=B2-TODAY()" calculates days between dates. Never pre-calculate; let the spreadsheet compute using cell refs, functions (SUM, AVERAGE, IF, TODAY, DATE, DATEDIF, etc.), and arithmetic. Standard formats: "$#,##0.00" currency, "#,##0" integer, "0.00%" percent, "0.00" decimal, "MM/DD/YYYY" date, "DD-MMM-YYYY" date, "YYYY-MM-DD" ISO date. Format is optional for plain text/numbers. When an analysis needs a method no built-in function has, define it once in the sheet's "functions" and call it from formulas, rather than pasting a computed number: it then recalculates when the data changes.`;function a(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function o(e){return typeof e==`object`&&!!e}var s=(e,t)=>a(e)&&typeof e[t]==`string`;function c(e,t){return e instanceof Error?e.message:s(e,`details`)&&e.details?e.details:s(e,`message`)&&e.message?e.message:t===void 0?String(e):t}var l=`spreadsheets`,u=`.json`,d=16,f=2,p=e=>`${e.getUTCFullYear()}/${String(e.getUTCMonth()+1).padStart(f,`0`)}`,m=()=>globalThis.crypto.randomUUID().split(`-`).join(``).slice(0,d);function h(t=new Date,n=m()){let r=`${l}/${p(t)}/${n}${u}`;return{relPath:r,filePath:`${e.ARTIFACTS_ROOT}/${r}`}}var ee=new Set([``,`.`,`..`]);function g(t){return typeof t!=`string`||!t.startsWith(`${e.ARTIFACTS_ROOT}/${l}/`)||!t.endsWith(u)||t.includes(`\\`)?!1:!t.split(`/`).some(e=>ee.has(e))}var te=t=>t.slice(e.ARTIFACTS_ROOT.length+1),ne=e=>typeof e==`string`||typeof e==`number`||typeof e==`boolean`,re=e=>e===null||ne(e)||a(e)&&(e.v===void 0||e.v===null||ne(e.v))&&(e.f===void 0||typeof e.f==`string`),ie=e=>Array.isArray(e)&&e.every(re),ae=e=>a(e)&&typeof e.name==`string`&&Array.isArray(e.data)&&e.data.every(ie);function oe(e){return Array.isArray(e)&&e.every(ae)?e:null}var se=`SHA-256`,ce=16,le=2;async function ue(e){let t=await crypto.subtle.digest(se,new TextEncoder().encode(e));return Array.from(new Uint8Array(t),e=>e.toString(ce).padStart(le,`0`)).join(``)}var de=(e,t)=>e!==void 0&&t!==null&&e!==t;function fe(e){if(!a(e)||typeof e.path!=`string`)return!1;if(e.kind===`loadSpreadsheet`)return!0;let t=e.baseVersion;return e.kind===`saveSpreadsheet`&&Array.isArray(e.sheets)&&e.sheets.every(ae)&&(t===void 0||typeof t==`string`)}var pe=e=>a(e)&&typeof e.read==`function`&&typeof e.write==`function`;function me(e){if(!a(e)||!a(e.files))return null;let t=e.files.artifacts;return pe(t)?t:null}function he(e,t){let n=oe(JSON.parse(e));if(!n)throw Error(`${t} does not hold an array of sheets`);return n}async function ge(e,t){let n=await e.read(te(t));return{message:`Loaded spreadsheet ${t}`,data:{sheets:he(n,t),version:await ue(n)}}}var _e=new Map;function ve(t){let n=_e.get(t);if(n)return n;let r=(0,e.createSerialLock)();return _e.set(t,r),r}async function ye(e,t){return await e.exists(t)?e.read(t):null}function be(e,t,n){return{message:`Did not save spreadsheet ${e}: it changed since it was read`,data:{sheets:he(t,e),version:n,conflict:!0}}}async function xe(e,t,n,r){let i=te(t);return ve(i)(async()=>{let a=r===void 0?null:await ye(e,i),o=a===null?null:await ue(a);if(a!==null&&o!==null&&de(r,o))return be(t,a,o);let s=JSON.stringify(n);return await e.write(i,s),{message:`Saved spreadsheet ${t}`,data:{sheets:t,version:await ue(s)}}})}async function Se(e,t){if(!g(t.path))throw Error(`path must be a .json file under artifacts/spreadsheets/`);return t.kind===`loadSpreadsheet`?ge(e,t.path):xe(e,t.path,t.sheets,t.baseVersion)}var Ce=[`#NULL!`,`#DIV/0!`,`#VALUE!`,`#REF!`,`#NAME?`,`#NUM!`,`#N/A`,`#ERROR!`],_=class{code;constructor(e){this.code=e}toString(){return this.code}toJSON(){return this.code}},we=new _(`#NULL!`),v=new _(`#DIV/0!`),y=new _(`#VALUE!`),Te=new _(`#REF!`),Ee=new _(`#NAME?`),b=new _(`#NUM!`),x=new _(`#N/A`),De={"#NULL!":we,"#DIV/0!":v,"#VALUE!":y,"#REF!":Te,"#NAME?":Ee,"#NUM!":b,"#N/A":x,"#ERROR!":new _(`#ERROR!`)},Oe=e=>De[e],ke=new Set(Ce);function Ae(e){return typeof e==`string`&&ke.has(e)}function S(e){return e instanceof _}function je(e){return S(e)?e.code:Ae(e)?e:null}function Me(e){return e==null?!0:typeof e==`number`?Number.isNaN(e)||!Number.isFinite(e):S(e)}var Ne=e=>isNaN(e)?null:e;function Pe(e){if(e.includes(`%`)){let t=Ne(parseFloat(e.replace(`%`,``).trim()));return t===null?null:t/100}return e.includes(`$`)?Ne(parseFloat(e.replace(/[$,]/g,``).trim())):e.includes(`,`)?Ne(parseFloat(e.replace(/,/g,``).trim())):Ne(parseFloat(e))}function C(e){return typeof e==`number`?!isNaN(e):typeof e==`string`&&Pe(e)!==null}function w(e){return typeof e==`number`?e:typeof e==`boolean`?+!!e:typeof e==`string`?Pe(e)??y:e}function Fe(e){return typeof e==`number`?!isNaN(e):typeof e==`string`&&e.trim()!==``&&!isNaN(Number(e))}var Ie=864e5,Le=new Date(Date.UTC(1899,11,30)),T=e=>(e.getTime()-Le.getTime())/Ie,E=e=>{let t=Math.floor(e),n=e-t,r=new Date(Le.getTime()+t*Ie),i=Math.round(n*24*60*60);return r.setSeconds(r.getSeconds()+i),r},Re=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],ze=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Be=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],Ve=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function He(e){if(typeof e!=`string`||e.length<6||e.length>30)return!1;let t=/\d/.test(e),n=/[/\-\s,]/.test(e);return!t||!n?!1:[/^\d{1,2}\/\d{1,2}\/\d{2,4}$/,/^\d{4}-\d{1,2}-\d{1,2}$/,/^\d{4}\/\d{1,2}\/\d{1,2}$/,/^\d{1,2}-[A-Za-z]{3}-\d{2,4}$/,/^[A-Za-z]{3,9}\s+\d{1,2},?\s+\d{4}$/,/^\d{1,2}\s+[A-Za-z]{3,9}\s+\d{4}$/].some(t=>t.test(e.trim()))}function Ue(e,t,n){return $e(e,t,n)?T(new Date(Date.UTC(e,t-1,n))):null}function D(e,t){let[,n,r,i]=e.match(t)??[];return n===void 0||r===void 0||i===void 0?null:[n,r,i]}var We=/^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$/,Ge=12,Ke=(e,t,n)=>e>Ge||t<=Ge&&e<=Ge&&n;function qe(e){let t=e.toLowerCase(),n=Re.findIndex(e=>e.toLowerCase()===t);if(n!==-1)return n+1;let r=ze.findIndex(e=>e.toLowerCase()===t);return r===-1?null:r+1}function Je(e,t=!1){if(!He(e))return null;let n=e.trim(),r=D(n,/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/);if(r){let[e,t,n]=r;return Ue(parseInt(e),parseInt(t),parseInt(n))}let i=D(n,/^(\d{1,2})-([A-Za-z]{3})-(\d{2,4})$/);if(i){let[e,t,n]=i;return Qe(Ze(parseInt(n)),t,parseInt(e))}let a=D(n,/^([A-Za-z]{3,9})\s+(\d{1,2}),?\s+(\d{4})$/);if(a){let[e,t,n]=a;return Qe(parseInt(n),e,parseInt(t))}let o=D(n,/^(\d{1,2})\s+([A-Za-z]{3,9})\s+(\d{4})$/);if(o){let[e,t,n]=o;return Qe(parseInt(n),t,parseInt(e))}let s=D(n,We);if(s){let[e,n,r]=s,i=Ke(parseInt(e),parseInt(n),t),a=parseInt(i?n:e),o=parseInt(i?e:n);return Ue(Ze(parseInt(r)),a,o)}return null}var Ye=100,Xe=30;function Ze(e){return e>=Ye?e:e<Xe?2e3+e:1900+e}function Qe(e,t,n){let r=qe(t);return r===null?null:Ue(e,r,n)}function $e(e,t,n){if(e<1900||e>2100||t<1||t>12||n<1||n>31)return!1;let r=new Date(Date.UTC(e,t-1,n));return r.getUTCFullYear()===e&&r.getUTCMonth()===t-1&&r.getUTCDate()===n}function et(e,t=!1){let n=e.trim();if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(n))return`YYYY-MM-DD`;if(/^\d{4}\/\d{1,2}\/\d{1,2}$/.test(n))return`YYYY/MM/DD`;if(/^\d{1,2}-[A-Za-z]{3}-\d{2,4}$/.test(n))return`DD-MMM-YYYY`;if(/^[A-Za-z]{3}\s+\d{1,2},?\s+\d{4}$/.test(n))return`MMM D, YYYY`;if(/^[A-Za-z]{4,9}\s+\d{1,2},?\s+\d{4}$/.test(n))return`MMMM D, YYYY`;let r=D(n,We);if(r){let[e,n]=r;return Ke(parseInt(e),parseInt(n),t)?`DD/MM/YYYY`:`MM/DD/YYYY`}return t?`DD/MM/YYYY`:`MM/DD/YYYY`}var tt=(e,t)=>Error(`${e} requires at least ${t} argument${t===1?``:`s`}`),O=(e,t,n)=>{let r=t[n];if(r===void 0)throw tt(e.functionName,n+1);return r},nt=e=>e.getRangeValuesRaw??e.getRangeValues,k=e=>e.getRangeValuesKeepingBlanks??nt(e),A=new class{functions=new Map;overlay=null;register(e){this.functions.set(e.name.toUpperCase(),e)}get(e){let t=e.toUpperCase();return this.functions.get(t)??this.overlay?.get(t)}hasFunction(e){let t=e.toUpperCase();return this.functions.has(t)||(this.overlay?.has(t)??!1)}isBuiltIn(e){return this.functions.has(e.toUpperCase())}withOverlay(e,t){let n=this.overlay;this.overlay=e;try{return t()}finally{this.overlay=n}}getAllFunctions(){return Array.from(this.functions.values())}getFunctionsByCategory(){let e=new Map;for(let t of Array.from(this.functions.values())){let n=t.category||`Other`;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e}},rt=`[A-Z][A-Z0-9]*(?:\\.[A-Z0-9]+)*`,it=e=>/^[A-Z]+(?:\.[A-Z]+)*$/i.test(e)||A.hasFunction(e);function j(e){return typeof e==`number`?e:Pe(String(e))??0}function at(e){return typeof e==`boolean`?e?`TRUE`:`FALSE`:String(e)}var ot=/[.*+?^${}()|[\]\\]/,st=e=>ot.test(e)?`\\${e}`:e,ct=/~([\s\S])|[\s\S]/g,lt=e=>e.replace(ct,(e,t)=>t===void 0?e===`*`?`.*`:e===`?`?`.`:st(e):st(t));function ut(e){let t=RegExp(`^${lt(e)}$`,`iu`);return e=>t.test(e)}function dt(e,t=!1){let n=e.trim().replace(/^["']|["']$/g,``);if(n===`=`)return e=>String(e).trim()===``;if(n===`<>`)return e=>String(e).trim()!==``;let[,r,i]=n.match(/^([><=!]+)(.+)$/)??[];if(r!==void 0&&i!==void 0){let e=ft(i,t),n=pt(i,t),a=e=>t=>C(t)&&e(j(t));switch(r){case`>`:return a(t=>t>e);case`>=`:return a(t=>t>=e);case`<`:return a(t=>t<e);case`<=`:return a(t=>t<=e);case`=`:case`==`:return n;case`!=`:case`<>`:return e=>!n(e);default:return()=>!1}}return pt(n,t)}function ft(e,t){return Je(e,t)??Pe(e)??NaN}function pt(e,t){let n=ut(e),r=ft(e,t),i=!isNaN(r);return e=>typeof e!=`number`&&n(String(e))||i&&C(e)&&j(e)===r}function mt(e,t,n){let r=e.evaluateFormula(O(e,t,n));return S(r)?r:typeof r==`boolean`?e=>e===r:dt(String(r),e.preferDDMMYYYY)}var ht=e=>e.reduce((e,t)=>e+t,0)/e.length;function gt(e){return e.length===0?v:ht(e)}function _t(e){return e.length===0?b:ht(vt([...e].sort((e,t)=>e-t)))}function vt(e){let t=Math.floor(e.length/2);return e.slice(e.length%2==0?t-1:t,t+1)}function yt(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);let n=0,r=x;for(let[e,i]of t.entries())i>n&&(n=i,r=e);return n>=2?r:x}var bt=2;function xt(e){if(e.length<bt)return v;let t=ht(e);return e.reduce((e,n)=>e+(n-t)**2,0)/(e.length-1)}function St(e){let t=xt(e);return typeof t==`number`?Math.sqrt(t):t}var M=255,Ct=/^\$?[A-Z]+\$?\d+$/i,wt=e=>Ct.test(e),Tt=e=>e.slice(e.lastIndexOf(`!`)+1),Et=e=>{if(!e)return!1;let[t,n]=Tt(e).split(`:`);return!t||!n?!1:wt(t)&&wt(n)},Dt=e=>Et(e)||wt(Tt(e)),Ot=(e,t,n)=>{let r=[];for(let i of e){let e=i?.trim();e&&(Dt(e)?n(e).forEach(e=>r.push({value:e,isScalar:!1})):r.push({value:t.evaluateFormula(e),isScalar:!0}))}return r},kt=(e,t)=>{if(!t.getRangeValuesKeepingBlanks)return jt(e,t);let n=Ot(e,t,t.getRangeValuesKeepingBlanks).flatMap(At);return n.find(S)??n.filter(e=>typeof e==`number`)},At=({value:e,isScalar:t})=>S(e)?[e]:t?[w(e)]:Fe(e)?[j(e)]:[];function jt(e,t){let n=e.map(e=>e?.trim()??``).filter(e=>e!==``).map(e=>{if(Dt(e))return{error:t.getRangeValuesRaw?.(e).find(S),numbers:t.getRangeValues(e).map(j)};let n=w(t.evaluateFormula(e));return typeof n==`number`?{numbers:[n]}:{error:n,numbers:[]}});return n.find(({error:e})=>e)?.error??n.flatMap(({numbers:e})=>e)}var Mt=e=>e.filter(Fe).map(j),N=e=>(t,n)=>{let r=kt(t,n);return Array.isArray(r)?e(r):r},Nt=(e,t)=>Ot(e,t,k(t)).map(({value:e})=>e),Pt=N(e=>e.reduce((e,t)=>e+t,0)),Ft=N(gt),It=N(e=>e.length>0?Math.max(...e):0),Lt=N(e=>e.length>0?Math.min(...e):0),Rt=({value:e,isScalar:t})=>!t||typeof w(e)==`number`,zt=(e,t)=>Ot(e,t,t.getRangeValues).filter(Rt).length,Bt=N(_t),Vt=N(yt),Ht=N(St),Ut=N(xt),Wt=e=>e!=null&&e!==``,Gt=(e,t)=>Dt(e)&&t.countFilledCells?t.countFilledCells(e):Nt([e],t).filter(Wt).length,Kt=(e,t)=>e.reduce((e,n)=>{let r=n?.trim();return r?e+Gt(r,t):e},0),qt=(e,t)=>{let n=k(t)(O(t,e,0)),r=mt(t,e,1);return typeof r==`function`?n.filter(r).length:r},Jt=(e,t)=>{let n=O(t,e,0),r=k(t),i=e.length===3?O(t,e,2):n;return{criteriaRange:r(n),valueRange:r(i),matches:mt(t,e,1)}},Yt=(e,t,n)=>e.reduce((e,r,i)=>{if(!n(r))return e;let a=t[i]??``;return S(a)?{...e,error:e.error??a}:{...e,sum:e.sum+j(a),count:e.count+ +!!C(a)}},{sum:0,count:0});A.register({name:`SUM`,handler:Pt,minArgs:1,maxArgs:M,description:`Returns the sum of all numbers in a range`,examples:[`SUM(A1:A10)`,`SUM(B2:B20)`],category:`Statistical`}),A.register({name:`AVERAGE`,handler:Ft,minArgs:1,maxArgs:M,description:`Returns the average (arithmetic mean) of numbers in a range`,examples:[`AVERAGE(A1:A10)`,`AVERAGE(B2:B20)`],category:`Statistical`}),A.register({name:`MAX`,handler:It,minArgs:1,description:`Returns the largest value in a range`,examples:[`MAX(A1:A10)`,`MAX(B2:B20)`],category:`Statistical`}),A.register({name:`MIN`,handler:Lt,minArgs:1,description:`Returns the smallest value in a range`,examples:[`MIN(A1:A10)`,`MIN(B2:B20)`],category:`Statistical`}),A.register({name:`COUNT`,handler:zt,minArgs:1,maxArgs:M,description:`Counts the number of cells in a range`,examples:[`COUNT(A1:A10)`,`COUNT(B2:B20)`],category:`Statistical`}),A.register({name:`MEDIAN`,handler:Bt,minArgs:1,maxArgs:M,description:`Returns the median (middle) value in a range`,examples:[`MEDIAN(A1:A10)`,`MEDIAN(B2:B20)`],category:`Statistical`}),A.register({name:`MODE`,handler:Vt,minArgs:1,maxArgs:M,description:`Returns the most frequently occurring value in a range`,examples:[`MODE(A1:A10)`,`MODE(B2:B20)`],category:`Statistical`}),A.register({name:`STDEV`,handler:Ht,minArgs:1,maxArgs:M,description:`Returns the standard deviation of numbers in a range`,examples:[`STDEV(A1:A10)`,`STDEV(B2:B20)`],category:`Statistical`}),A.register({name:`VAR`,handler:Ut,minArgs:1,maxArgs:M,description:`Returns the variance of numbers in a range`,examples:[`VAR(A1:A10)`,`VAR(B2:B20)`],category:`Statistical`}),A.register({name:`COUNTA`,handler:Kt,minArgs:1,maxArgs:M,description:`Counts the number of non-empty cells in a range`,examples:[`COUNTA(A1:A10)`,`COUNTA(B2:B20)`],category:`Statistical`}),A.register({name:`COUNTIF`,handler:qt,minArgs:2,maxArgs:2,description:`Counts cells in a range that match a criteria`,examples:[`COUNTIF(A1:A10, ">5")`,`COUNTIF(B1:B10, "Yes")`],category:`Statistical`}),A.register({name:`SUMIF`,handler:(e,t)=>{let{criteriaRange:n,valueRange:r,matches:i}=Jt(e,t);if(typeof i!=`function`)return i;let{sum:a,error:o}=Yt(n,r,i);return o??a},minArgs:2,maxArgs:3,description:`Sums cells in a range that match a criteria`,examples:[`SUMIF(A1:A10, ">5")`,`SUMIF(A1:A10, ">5", B1:B10)`],category:`Statistical`}),A.register({name:`AVERAGEIF`,handler:(e,t)=>{let{criteriaRange:n,valueRange:r,matches:i}=Jt(e,t);if(typeof i!=`function`)return i;let{sum:a,count:o,error:s}=Yt(n,r,i);return s||(o>0?a/o:v)},minArgs:2,maxArgs:3,description:`Averages cells in a range that match a criteria`,examples:[`AVERAGEIF(A1:A10, ">5")`,`AVERAGEIF(A1:A10, ">5", B1:B10)`],category:`Statistical`});var Xt=2,Zt=1,Qt=4,P=e=>e.reduce((e,t)=>e+t,0)/e.length,F=e=>{let t=P(e);return e.reduce((e,n)=>e+(n-t)**2,0)};function $t(e,t){if(e.length!==t.length)return x;let n=e.flatMap((e,n)=>{let r=t[n];return C(e)&&r!==void 0&&C(r)?[{y:j(e),x:j(r)}]:[]});return{ys:n.map(e=>e.y),xs:n.map(e=>e.x)}}var I=({ys:e,xs:t})=>{let n=P(e),r=P(t);return e.reduce((e,i,a)=>e+(i-n)*((t[a]??r)-r),0)};function en(e){if(e.ys.length<Xt)return v;let t=Math.sqrt(F(e.ys)*F(e.xs));return t===0?v:I(e)/t}function tn(e){if(e.ys.length<Xt)return v;let t=F(e.xs);return t===0?v:I(e)/t}function nn(e){let t=tn(e);return typeof t==`number`?P(e.ys)-t*P(e.xs):t}function rn(e){let t=en(e);return typeof t==`number`?t*t:t}function an(e,t){if(e.length===0||t<0||t>Zt)return b;let n=[...e].sort((e,t)=>e-t),r=t*(n.length-1),i=n[Math.floor(r)]??0,a=n[Math.ceil(r)]??i;return i+(r-Math.floor(r))*(a-i)}function on(e,t){let n=Math.trunc(t);return n<0||n>Qt?b:an(e,n/Qt)}function sn(e,t){let n=Math.ceil(t);return n<1||n>e.length?b:[...e].sort((e,t)=>t-e)[n-1]??b}function cn(e,t){let n=Math.ceil(t);return n<1||n>e.length?b:[...e].sort((e,t)=>e-t)[n-1]??b}function ln(e,t,n){return t.includes(e)?t.filter(t=>n?t<e:t>e).length+1:x}function un(e){return e.length===0?v:F(e)/e.length}function dn(e){let t=un(e);return typeof t==`number`?Math.sqrt(t):t}function fn(e,t){return t.some(({range:t})=>t.length!==e)?y:Array.from({length:e},(e,n)=>t.every(({range:e,matches:t})=>t(e[n]??``)))}var L=255,pn=(e,t,n)=>w(t.evaluateFormula(O(t,e,n))),mn=(e,t,n=0)=>{let r=k(t),[i,a]=[r(O(t,e,n)),r(O(t,e,n+1))];return[...i,...a].find(S)??$t(i,a)},R=e=>(t,n)=>{let r=mn(t,n);return`ys`in r?e(r):r},hn=e=>(t,n)=>{let r=kt([O(n,t,0)],n);if(!Array.isArray(r))return r;let i=pn(t,n,1);return typeof i==`number`?e(r,i):i},gn=(e,t)=>{let n=pn(e,t,0);if(typeof n!=`number`)return n;let r=kt([O(t,e,1)],t);if(!Array.isArray(r))return r;let i=e.length>2?pn(e,t,2):0;return typeof i==`number`?ln(n,r,i!==0):i},_n=(e,t,n)=>{let r=k(t),i=Array.from({length:Math.ceil((e.length-n)/2)},(e,t)=>n+t*2).map(n=>({range:r(O(t,e,n)),matches:mt(t,e,n+1)}));return i.map(({matches:e})=>e).find(S)||i.flatMap(({range:e,matches:t})=>typeof t==`function`?[{range:e,matches:t}]:[])},vn=(e,t)=>{let n=k(t)(O(t,e,0)),r=_n(e,t,1);if(!Array.isArray(r))return r;let i=fn(n.length,r);if(!Array.isArray(i))return i;let a=n.filter((e,t)=>i[t]);return a.find(S)??a},yn=(e,t)=>{let n=vn(e,t);return Array.isArray(n)?n.reduce((e,t)=>e+j(t),0):n},bn=(e,t)=>{let n=vn(e,t);if(!Array.isArray(n))return n;let r=n.filter(C).map(j);return r.length>0?r.reduce((e,t)=>e+t,0)/r.length:v},xn=e=>(t,n)=>{let r=vn(t,n);if(!Array.isArray(r))return r;let i=r.filter(C).map(j);return i.length>0?i.reduce((t,n)=>e(t,n)):0};[{name:`CORREL`,handler:R(en),minArgs:2,maxArgs:2,description:`Returns the correlation coefficient of two ranges`,examples:[`CORREL(A2:A20, B2:B20)`]},{name:`SLOPE`,handler:R(tn),minArgs:2,maxArgs:2,description:`Returns the slope of the least-squares line through known_y and known_x`,examples:[`SLOPE(B2:B20, A2:A20)`]},{name:`INTERCEPT`,handler:R(nn),minArgs:2,maxArgs:2,description:`Returns where the least-squares line crosses the y axis`,examples:[`INTERCEPT(B2:B20, A2:A20)`]},{name:`RSQ`,handler:R(rn),minArgs:2,maxArgs:2,description:`Returns the square of the correlation coefficient`,examples:[`RSQ(B2:B20, A2:A20)`]},{name:`PERCENTILE`,handler:hn(an),minArgs:2,maxArgs:2,description:`Returns the k-th percentile (k from 0 to 1), interpolated like PERCENTILE.INC`,examples:[`PERCENTILE(A2:A100, 0.9)`]},{name:`QUARTILE`,handler:hn(on),minArgs:2,maxArgs:2,description:`Returns a quartile (0 to 4), interpolated like QUARTILE.INC`,examples:[`QUARTILE(A2:A100, 1)`]},{name:`LARGE`,handler:hn(sn),minArgs:2,maxArgs:2,description:`Returns the k-th largest value`,examples:[`LARGE(A2:A100, 3)`]},{name:`SMALL`,handler:hn(cn),minArgs:2,maxArgs:2,description:`Returns the k-th smallest value`,examples:[`SMALL(A2:A100, 3)`]},{name:`RANK`,handler:gn,minArgs:2,maxArgs:3,description:`Returns the rank of a number in a range (largest first unless order is non-zero)`,examples:[`RANK(A2, A2:A100)`,`RANK(A2, A2:A100, 1)`]},{name:`STDEVP`,handler:N(dn),minArgs:1,maxArgs:L,description:`Returns the population standard deviation`,examples:[`STDEVP(A2:A100)`]},{name:`VARP`,handler:N(un),minArgs:1,maxArgs:L,description:`Returns the population variance`,examples:[`VARP(A2:A100)`]},{name:`SUMIFS`,handler:yn,minArgs:3,maxArgs:L,description:`Sums the cells whose rows meet every condition`,examples:[`SUMIFS(C2:C100, A2:A100, "East", B2:B100, ">10")`]},{name:`COUNTIFS`,handler:(e,t)=>{let n=_n(e,t,0);if(!Array.isArray(n))return n;let r=fn(n[0]?.range.length??0,n);return Array.isArray(r)?r.filter(Boolean).length:r},minArgs:2,maxArgs:L,description:`Counts the rows that meet every condition`,examples:[`COUNTIFS(A2:A100, "East", B2:B100, ">10")`]},{name:`MAXIFS`,handler:xn(Math.max),minArgs:3,maxArgs:L,description:`Returns the largest value whose row meets every condition (0 when none does)`,examples:[`MAXIFS(C2:C100, A2:A100, "East")`]},{name:`MINIFS`,handler:xn(Math.min),minArgs:3,maxArgs:L,description:`Returns the smallest value whose row meets every condition (0 when none does)`,examples:[`MINIFS(C2:C100, A2:A100, "East")`]},{name:`AVERAGEIFS`,handler:bn,minArgs:3,maxArgs:L,description:`Averages the cells whose rows meet every condition`,examples:[`AVERAGEIFS(C2:C100, A2:A100, "East")`]}].forEach(e=>A.register({...e,category:`Statistical`}));var Sn=3,Cn=2;function wn(e,t){if(e.ys.length===0)return x;let n=tn(e);return typeof n==`number`?P(e.ys)+n*(t-P(e.xs)):n}function Tn(e){let t=e.ys.length;if(t===0)return x;let n=F(e.xs);if(t<Sn||n===0)return v;let r=I(e)/n,[i,a]=[P(e.ys),P(e.xs)],o=e.ys.reduce((t,n,o)=>t+(n-i-r*((e.xs[o]??a)-a))**2,0);return Math.sqrt(o/(t-2))}function En(e){return e.ys.length===0?v:I(e)/e.ys.length}function Dn(e){return e.ys.length<Cn?v:I(e)/(e.ys.length-1)}var On=e=>Array.from({length:e},(e,t)=>t+1);function kn(e,t,n,r){if(e.length!==t.length)return Te;let i=[...e,...t],a=i.find(S);if(a)return a;if(e.length===0||!i.every(C))return y;let o={ys:e.map(j),xs:t.map(j)};return r?An(o,n):jn(o,n)}function An(e,t){let n=F(e.xs),r=P(e.ys);return n===0?r:r+I(e)/n*(t-P(e.xs))}function jn({ys:e,xs:t},n){let r=t.reduce((e,t)=>e+t*t,0),i=e.reduce((e,n,r)=>e+n*(t[r]??0),0);return r===0?0:i/r*n}function z(e){if(typeof e==`boolean`)return e;if(e==null)return!1;if(typeof e==`number`)return e!==0;if(S(e))return!0;let t=e.trim();if(t===``)return!1;let n=t.toLowerCase();if(n===`true`)return!0;if(n===`false`)return!1;let r=Number(t);return Number.isNaN(r)?!0:r!==0}var Mn=(e,t)=>{let n=pn(e,t,0);if(typeof n!=`number`)return n;let r=mn(e,t,1);return`ys`in r?wn(r,n):r};function Nn(e,t){let[n,...r]=Ot([e],t,k(t));return n===void 0||r.length>0?y:n.isScalar?w(n.value):S(n.value)?n.value:C(n.value)?j(n.value):y}function Pn(e,t){let n=e[3]?.trim();if(!n)return!0;let r=t.evaluateFormula(n);return S(r)?r:z(r)}[{name:`FORECAST.LINEAR`,handler:Mn,minArgs:3,maxArgs:3,description:`Returns the value of the least-squares line through known_y and known_x at x`,examples:[`FORECAST.LINEAR(30, B2:B20, A2:A20)`]},{name:`TREND`,handler:(e,t)=>{let n=k(t),r=n(O(t,e,0)),i=e[1]?.trim(),a=i?n(i):On(r.length),o=Nn(O(t,e,2),t);if(typeof o!=`number`)return o;let s=Pn(e,t);return typeof s==`boolean`?kn(r,a,o,s):s},minArgs:3,maxArgs:4,description:`Returns the least-squares line's value at one new x (known_x defaults to 1, 2, 3, …; const FALSE fits through the origin)`,examples:[`TREND(B2:B20, A2:A20, 30)`,`TREND(B2:B20, , 21)`]},{name:`STEYX`,handler:R(Tn),minArgs:2,maxArgs:2,description:`Returns the standard error of the y predicted by the least-squares line`,examples:[`STEYX(B2:B20, A2:A20)`]},{name:`COVARIANCE.P`,handler:R(En),minArgs:2,maxArgs:2,description:`Returns the population covariance of two ranges`,examples:[`COVARIANCE.P(A2:A20, B2:B20)`]},{name:`COVARIANCE.S`,handler:R(Dn),minArgs:2,maxArgs:2,description:`Returns the sample covariance of two ranges`,examples:[`COVARIANCE.S(A2:A20, B2:B20)`]}].forEach(e=>A.register({...e,category:`Statistical`}));var Fn=.5*Math.log(2*Math.PI),In=1e-16,Ln=1e-300,Rn=2e3,B=e=>Math.abs(e)<Ln?Ln:e,zn=10,Bn=7,Vn=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],Hn=[1/12,-1/360,1/1260,-1/1680,1/1188,-691/360360,1/156,-3617/122400];function Un(e){let t=1/(e*e);return Hn.reduceRight((e,n)=>e*t+n,0)/e}function Wn(e){let t=e-1,n=Vn.slice(1).reduce((e,n,r)=>e+n/(t+r+1),Vn[0]??1),r=t+Bn+.5;return Fn+(t+.5)*Math.log(r)-r+Math.log(n)}function V(e){return e>=zn?Fn+(e-.5)*Math.log(e)-e+Un(e):Wn(e)}function Gn(e,t){let n=Math.min(e,t),r=Math.max(e,t);if(r>=zn){let e=Un(r)-Un(n+r);return V(n)+e+n-n*Math.log(n+r)+(r-.5)*Math.log1p(-n/(n+r))}return V(n)+V(r)-V(n+r)}function Kn(e,t,n){let r={c:1,d:1/B(1-(t+n)*e/(t+1)),result:0};r.result=r.d;for(let i=1;i<=Rn;i+=1){let a=i*(n-i)*e/((t+2*i-1)*(t+2*i));r.d=1/B(1+a*r.d),r.c=B(1+a/r.c),r.result*=r.d*r.c;let o=-(t+i)*(t+n+i)*e/((t+2*i)*(t+2*i+1));r.d=1/B(1+o*r.d),r.c=B(1+o/r.c);let s=r.d*r.c;if(r.result*=s,Math.abs(s-1)<In)return r.result}return r.result}var qn=1e4,Jn=8;function Yn(e,t,n,r,i){let a={term:1,sum:1};for(let t=0;t<Rn&&a.term>a.sum*In;t+=1)a.term*=(r+i+t)/(r+1+t)*e,a.sum+=a.term;return Math.exp(r*t+i*n-Gn(r,i))/r*a.sum}function Xn(e,t,n,r){if(e===-1/0)return 0;if(t===-1/0)return 1;let i=Math.exp(e),a=Math.exp(t);if(Math.max(n,r)>=qn&&a*(n+r)<=Jn)return 1-Yn(a,t,e,r,n);let o=Math.exp(n*e+r*t-Gn(n,r));return i<(n+1)/(n+r+2)?o*Kn(i,n,r)/n:1-o*Kn(a,r,n)/r}function Zn(e,t){let n={term:1/e,sum:1/e};for(let r=1;r<=Rn&&Math.abs(n.term)>=Math.abs(n.sum)*In;r+=1)n.term*=t/(e+r),n.sum+=n.term;return n.sum*Math.exp(-t+e*Math.log(t)-V(e))}function Qn(e,t){let n={b:t+1-e,c:1/Ln,d:0,result:0};n.d=1/B(n.b),n.result=n.d;for(let t=1;t<=Rn;t+=1){let r=-t*(t-e);n.b+=2,n.d=1/B(r*n.d+n.b),n.c=B(n.b+r/n.c);let i=n.d*n.c;if(n.result*=i,Math.abs(i-1)<In)break}return Math.exp(-t+e*Math.log(t)-V(e))*n.result}function $n(e,t){return t<=0?1:t<e+1?1-Zn(e,t):Qn(e,t)}var er=Math.sqrt(2*Math.PI),tr=e=>e===0?0:-e,nr=1e-15,rr=200,ir=e=>Math.exp(-.5*e*e)/er;function ar(e){let t=.5*$n(.5,.5*e*e);return e>=0?t:1-t}var or=e=>ar(-e),sr=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],cr=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572],lr=[-.007784894002430293,-.3223964580411365,-2.400758277161838,-2.549732539343734,4.374664141464968,2.938163982698783],ur=[.007784695709041462,.3224671290700398,2.445134137142996,3.754408661907416],dr=.02425,fr=(e,t)=>e.reduce((e,n)=>e*t+n,0);function pr(e){if(e<dr){let t=Math.sqrt(-2*Math.log(e));return fr(lr,t)/(fr(ur,t)*t+1)}let t=e-.5,n=t*t;return fr(sr,n)*t/(fr(cr,n)*n+1)}function mr(e){if(e>.5)return tr(mr(1-e));let t={z:pr(e)};for(let n=0;n<3;n+=1){let n=(or(t.z)-e)/ir(t.z);t.z-=n/(1+t.z*n/2)}return t.z}var hr=e=>tr(mr(e));function gr(e,t){return Math.exp(-Gn(t/2,.5)-.5*Math.log(t)-(t+1)/2*Math.log1p(e*e/t))}function _r(e){if(e>0){let t=Math.log1p(Math.exp(-e));return{logX:-t,logComplement:-e-t}}let t=Math.log1p(Math.exp(e));return{logX:e-t,logComplement:-t}}function H(e,t){if(e===0)return .5;let{logX:n,logComplement:r}=_r(Math.log(t)-2*Math.log(Math.abs(e))),i=.5*Xn(n,r,t/2,.5);return e>=0?i:1-i}var vr=(e,t)=>H(-e,t);function yr(e,t){let n={high:1};for(;H(n.high,t)>e&&n.high<Number.MAX_VALUE/2;)n.high*=2;return n.high}function br(e,t,n,r){let i=H(e,n);i>t?r.low=e:r.high=e;let a=e+(Math.log(i)-Math.log(t))*i/gr(e,n);return a>r.low&&a<r.high&&Number.isFinite(a)?a:(r.low+r.high)/2}function xr(e,t){if(e===.5)return 0;let n={low:0,high:yr(e,t)},r={t:Math.min(Math.max(hr(e),0),n.high)};for(let i=0;i<rr;i+=1){let i=br(r.t,e,t,n),a=Math.abs(i-r.t)<=nr*Math.abs(i);if(r.t=i,a)break}return r.t}function Sr(e,t){return e>.5?tr(xr(1-e,t)):xr(e,t)}var Cr=(e,t)=>tr(Sr(e,t));function wr(e){let t=e.length,n=e.reduce((e,t)=>e+t,0)/t;return{count:t,mean:n,variance:e.reduce((e,t)=>e+(t-n)**2,0)/(t-1)}}function Tr(e){let{count:t,mean:n,variance:r}=wr(e);return{t:n/Math.sqrt(r/t),df:t-1}}function Er(e,t){let n=e.count+t.count-2,r=((e.count-1)*e.variance+(t.count-1)*t.variance)/n;return{t:(e.mean-t.mean)/Math.sqrt(r*(1/e.count+1/t.count)),df:n}}function Dr(e,t){let n=e.variance/e.count,r=t.variance/t.count,i=(n+r)**2/(n**2/(e.count-1)+r**2/(t.count-1));return{t:(e.mean-t.mean)/Math.sqrt(n+r),df:i}}var Or=({t:e,df:t},n)=>n*H(Math.abs(e),t),kr=(e,t,n)=>w(t.evaluateFormula(O(t,e,n)));function Ar(e,t,n){let r=t.evaluateFormula(O(t,e,n));return S(r)?r:z(r)}function jr(e,t,n){let r=Array.from({length:n},(n,r)=>kr(e,t,r));return r.find(e=>typeof e!=`number`)??r.filter(e=>typeof e==`number`)}var U=(e,t)=>(n,r)=>{let i=jr(n,r,e);return Array.isArray(i)?t(i):i},Mr=e=>{let t=Math.trunc(e);return t>=1?t:null},Nr=e=>e>0&&e<1,Pr=(e,t)=>{let n=jr(e,t,2);if(!Array.isArray(n))return n;let[r=0,i=0]=n,a=Ar(e,t,2);if(typeof a!=`boolean`)return a;let o=Mr(i);return o===null?b:a?vr(r,o):gr(r,o)},Fr=([e=0,t=0])=>{let n=Mr(t);return n===null||e<0?b:2*H(e,n)},Ir=([e=0,t=0])=>{let n=Mr(t);return n===null?b:H(e,n)},Lr=([e=0,t=0])=>{let n=Mr(t);return n===null||!Nr(e)?b:Cr(e,n)},Rr=([e=0,t=0])=>{let n=Mr(t);return n===null||e<=0||e>1?b:Sr(e/2,n)},zr=1,Br=2,Vr=3;function Hr([e,t]){let n=$t(e,t);return`ys`in n?Tr(n.ys.map((e,t)=>e-(n.xs[t]??0))):n}function Ur([e,t],n){let[r,i]=[wr(Mt(e)),wr(Mt(t))];return n===Br?Er(r,i):Dr(r,i)}var Wr=e=>`t`in e&&!(Number.isFinite(e.t)&&Number.isFinite(e.df))?v:e,Gr=(e,t)=>{let n=k(t),r=[n(O(t,e,0)),n(O(t,e,1))],i=r.flat().find(S);if(i)return i;let a=[kr(e,t,2),kr(e,t,3)],o=a.find(e=>typeof e!=`number`);if(o)return o;let[s,c]=a.map(e=>Math.trunc(Number(e)));if(s!==1&&s!==2||c===void 0||c<zr||c>Vr)return b;let l=Wr(c===zr?Hr(r):Ur(r,c));return`t`in l?Or(l,s===1?1:2):l},Kr=(e,t)=>{let n=jr(e,t,3);if(!Array.isArray(n))return n;let[r=0,i=0,a=0]=n,o=Ar(e,t,3);if(typeof o!=`boolean`)return o;if(a<=0)return b;let s=(r-i)/a;return o?or(s):ir(s)/a},qr=(e,t)=>{let n=kr(e,t,0);if(typeof n!=`number`)return n;let r=Ar(e,t,1);return typeof r==`boolean`?r?or(n):ir(n):r},Jr=([e=0,t=0,n=0])=>!Nr(e)||n<=0?b:t+n*mr(e),Yr=([e=0])=>Nr(e)?mr(e):b;function Xr([e=0,t=0,n=0]){let r=Math.trunc(n);return!Nr(e)||t<=0||r<1?b:{alpha:e,sd:t,size:r}}[{name:`T.TEST`,handler:Gr,minArgs:4,maxArgs:4,description:`Returns the p-value of a t-test: tails 1 or 2; type 1 paired, 2 equal variance, 3 unequal variance (Welch)`,examples:[`T.TEST(A2:A20, B2:B20, 2, 3)`]},{name:`T.DIST`,handler:Pr,minArgs:3,maxArgs:3,description:`Returns the left-tailed Student's t distribution (cumulative TRUE) or its density`,examples:[`T.DIST(1.96, 30, TRUE)`]},{name:`T.DIST.2T`,handler:U(2,Fr),minArgs:2,maxArgs:2,description:`Returns the two-tailed Student's t distribution for x >= 0`,examples:[`T.DIST.2T(1.96, 30)`]},{name:`T.DIST.RT`,handler:U(2,Ir),minArgs:2,maxArgs:2,description:`Returns the right-tailed Student's t distribution`,examples:[`T.DIST.RT(1.96, 30)`]},{name:`T.INV`,handler:U(2,Lr),minArgs:2,maxArgs:2,description:`Returns the t value with the given left-tailed probability`,examples:[`T.INV(0.975, 30)`]},{name:`T.INV.2T`,handler:U(2,Rr),minArgs:2,maxArgs:2,description:`Returns the t value whose two tails hold the given probability`,examples:[`T.INV.2T(0.05, 30)`]},{name:`NORM.DIST`,handler:Kr,minArgs:4,maxArgs:4,description:`Returns the normal distribution (cumulative TRUE) or its density`,examples:[`NORM.DIST(42, 40, 1.5, TRUE)`]},{name:`NORM.S.DIST`,handler:qr,minArgs:2,maxArgs:2,description:`Returns the standard normal distribution (cumulative TRUE) or its density`,examples:[`NORM.S.DIST(1.96, TRUE)`]},{name:`NORM.INV`,handler:U(3,Jr),minArgs:3,maxArgs:3,description:`Returns the value with the given cumulative normal probability`,examples:[`NORM.INV(0.9, 40, 1.5)`]},{name:`NORM.S.INV`,handler:U(1,Yr),minArgs:1,maxArgs:1,description:`Returns the z with the given cumulative standard normal probability`,examples:[`NORM.S.INV(0.975)`]},{name:`CONFIDENCE.NORM`,handler:U(3,e=>{let t=Xr(e);return`size`in t?hr(t.alpha/2)*t.sd/Math.sqrt(t.size):t}),minArgs:3,maxArgs:3,description:`Returns the half-width of a confidence interval for a mean, using the normal distribution`,examples:[`CONFIDENCE.NORM(0.05, 2.5, 50)`]},{name:`CONFIDENCE.T`,handler:U(3,e=>{let t=Xr(e);return`size`in t?t.size===1?v:Sr(t.alpha/2,t.size-1)*t.sd/Math.sqrt(t.size):t}),minArgs:3,maxArgs:3,description:`Returns the half-width of a confidence interval for a mean, using Student's t distribution`,examples:[`CONFIDENCE.T(0.05, 1, 50)`]}].forEach(e=>A.register({...e,category:`Statistical`}));var Zr=3,Qr=4,$r=e=>e.reduce((e,t)=>e+t,0)/e.length;function ei(e,t){let n=$r(e),r=e.map(e=>e-n),i=Math.sqrt(r.reduce((e,t)=>e+t*t,0)/(e.length-1));return i===0?null:r.reduce((e,n)=>e+(n/i)**t,0)}function ti(e){let t=e.length,n=t<Zr?null:ei(e,3);return n===null?v:t/((t-1)*(t-2))*n}function ni(e){let t=e.length,n=t<Qr?null:ei(e,4);return n===null?v:t*(t+1)/((t-1)*(t-2)*(t-3))*n-3*(t-1)**2/((t-2)*(t-3))}var ri=(e,t,n)=>n>0?(e-t)/n:b;function ii(e){return e.length===0||e.some(e=>e<=0)?b:Math.exp($r(e.map(Math.log)))}function ai(e){return e.length===0||e.some(e=>e<=0)?b:e.length/e.reduce((e,t)=>e+1/t,0)}function oi(e,t){let n=e.length-1,r=e.filter(e=>e<t).length;if(e[r]===t)return r/n;let i=e[r-1]??t,a=e[r]??t;return(r-1+(t-i)/(a-i))/n}function si(e,t,n){let r=Math.trunc(n);if(r<1||e.length===0)return b;let i=Array.from(Float64Array.from(e).sort()),[a,o]=[i[0],i.at(-1)];if(a===void 0||o===void 0||t<a||t>o)return x;if(i.length===1)return 1;let s=10**r;return Math.floor(oi(i,t)*s*(1+2**-52*4))/s}var ci=255,li=3,ui=(e,t,n)=>w(t.evaluateFormula(O(t,e,n))),di=e=>(t,n)=>{let r=kt(t,n);return Array.isArray(r)?e(r):r};[{name:`SKEW`,handler:di(ti),minArgs:1,maxArgs:ci,description:`Returns the skewness of a sample`,examples:[`SKEW(A2:A100)`]},{name:`KURT`,handler:di(ni),minArgs:1,maxArgs:ci,description:`Returns the excess kurtosis of a sample`,examples:[`KURT(A2:A100)`]},{name:`STANDARDIZE`,handler:(e,t)=>{let n=[0,1,2].map(n=>ui(e,t,n)),r=n.find(e=>typeof e!=`number`);if(r)return r;let[i=0,a=0,o=0]=n.map(Number);return ri(i,a,o)},minArgs:3,maxArgs:3,description:`Returns (x - mean) / standard deviation`,examples:[`STANDARDIZE(A2, AVERAGE(A2:A100), STDEV(A2:A100))`]},{name:`PERCENTRANK.INC`,handler:(e,t)=>{let n=ui(e,t,1);if(typeof n!=`number`)return n;let r=e.length>2?ui(e,t,2):li;if(typeof r!=`number`)return r;let i=kt([O(t,e,0)],t);return Array.isArray(i)?si(i,n,r):i},minArgs:2,maxArgs:3,description:`Returns the rank of x in a range as a fraction from 0 to 1, to significance digits (3 by default)`,examples:[`PERCENTRANK.INC(A2:A100, A2)`]},{name:`GEOMEAN`,handler:di(ii),minArgs:1,maxArgs:ci,description:`Returns the geometric mean of positive numbers`,examples:[`GEOMEAN(A2:A20)`]},{name:`HARMEAN`,handler:di(ai),minArgs:1,maxArgs:ci,description:`Returns the harmonic mean of positive numbers`,examples:[`HARMEAN(A2:A20)`]}].forEach(e=>A.register({...e,category:`Statistical`}));var fi=10,pi=e=>fi**+e,mi=15,hi=e=>Number(e.toPrecision(mi)),gi=(e,t,n)=>{if(pi(t)===0)return 0;let r=Math.abs(e)*pi(t);return!Number.isFinite(r)||Number.isInteger(r)&&r!==0?e:Math.sign(e)*n(hi(r))/pi(t)},_i=(e,t,n)=>{let r=e/t;return!Number.isFinite(r)||Number.isInteger(r)?e:hi(n(hi(r))*t)};function vi(e,t){return gi(e,t,Math.round)}function yi(e,t){return pi(t)===0&&e!==0?b:gi(e,t,Math.ceil)}function bi(e,t){return gi(e,t,Math.floor)}var xi=(e,t)=>e===0||Math.sign(e)===Math.sign(t);function Si(e,t){return t===0?v:xi(e,t)?_i(e,t,Math.floor):b}function Ci(e,t){return t===0?0:xi(e,t)?_i(e,t,Math.ceil):b}function wi(e,t){return t===0?v:e-t*Math.floor(e/t)}function Ti(e,t){if(e<0&&!Number.isInteger(t))return b;if(e===0&&t<0)return v;if(e===0&&t===0)return b;let n=e**+t;return Number.isFinite(n)?n:b}function Ei(e){return e<=0?b:Math.log(e)}function Di(e,t){let n=Ei(e);return S(n)?n:t<=0||t===1?b:n/Math.log(t)}function Oi(e){return e<=0?b:Math.log10(e)}function ki(e){return e<0?b:Math.sqrt(e)}A.register({name:`ROUND`,handler:(e,t)=>vi(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Rounds a number to a specified number of digits`,examples:[`ROUND(3.14159, 2)`,`ROUND(A1, 0)`],category:`Mathematical`}),A.register({name:`ROUNDUP`,handler:(e,t)=>yi(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Rounds a number up, away from zero`,examples:[`ROUNDUP(3.14159, 2)`,`ROUNDUP(A1, 0)`],category:`Mathematical`}),A.register({name:`ROUNDDOWN`,handler:(e,t)=>bi(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Rounds a number down, toward zero`,examples:[`ROUNDDOWN(3.14159, 2)`,`ROUNDDOWN(A1, 0)`],category:`Mathematical`}),A.register({name:`FLOOR`,handler:(e,t)=>Si(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Rounds a number down to the nearest multiple of significance`,examples:[`FLOOR(3.7, 1)`,`FLOOR(24, 5)`],category:`Mathematical`}),A.register({name:`CEILING`,handler:(e,t)=>Ci(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Rounds a number up to the nearest multiple of significance`,examples:[`CEILING(3.2, 1)`,`CEILING(24, 5)`],category:`Mathematical`}),A.register({name:`ABS`,handler:(e,t)=>{let n=w(t.evaluateFormula(O(t,e,0)));return S(n)?n:Math.abs(n)},minArgs:1,maxArgs:1,description:`Returns the absolute value of a number`,examples:[`ABS(-5)`,`ABS(A1)`],category:`Mathematical`}),A.register({name:`POWER`,handler:(e,t)=>Ti(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Returns the result of a number raised to a power`,examples:[`POWER(2, 3)`,`POWER(A1, 2)`],category:`Mathematical`}),A.register({name:`SQRT`,handler:(e,t)=>ki(j(t.evaluateFormula(O(t,e,0)))),minArgs:1,maxArgs:1,description:`Returns the square root of a number`,examples:[`SQRT(16)`,`SQRT(A1)`],category:`Mathematical`}),A.register({name:`MOD`,handler:(e,t)=>wi(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1)))),minArgs:2,maxArgs:2,description:`Returns the remainder after division`,examples:[`MOD(10, 3)`,`MOD(A1, 2)`],category:`Mathematical`}),A.register({name:`INT`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0)));return Math.floor(n)},minArgs:1,maxArgs:1,description:`Rounds a number down to the nearest integer`,examples:[`INT(3.7)`,`INT(A1)`],category:`Mathematical`}),A.register({name:`TRUNC`,handler:(e,t)=>bi(j(t.evaluateFormula(O(t,e,0))),e.length===2?j(t.evaluateFormula(O(t,e,1))):0),minArgs:1,maxArgs:2,description:`Truncates a number to a specified number of decimal places`,examples:[`TRUNC(3.14159, 2)`,`TRUNC(A1)`],category:`Mathematical`}),A.register({name:`SIGN`,handler:(e,t)=>{let n=w(t.evaluateFormula(O(t,e,0)));return S(n)?n:Math.sign(n)},minArgs:1,maxArgs:1,description:`Returns the sign of a number (1, 0, or -1)`,examples:[`SIGN(-5)`,`SIGN(A1)`],category:`Mathematical`}),A.register({name:`PI`,handler:()=>Math.PI,minArgs:0,maxArgs:0,description:`Returns the value of pi (3.14159...)`,examples:[`PI()`,`PI()*2`],category:`Mathematical`}),A.register({name:`EXP`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0)));return Math.exp(n)},minArgs:1,maxArgs:1,description:`Returns e raised to the power of a number`,examples:[`EXP(1)`,`EXP(A1)`],category:`Mathematical`}),A.register({name:`LN`,handler:(e,t)=>Ei(j(t.evaluateFormula(O(t,e,0)))),minArgs:1,maxArgs:1,description:`Returns the natural logarithm of a number`,examples:[`LN(10)`,`LN(A1)`],category:`Mathematical`}),A.register({name:`LOG`,handler:(e,t)=>Di(j(t.evaluateFormula(O(t,e,0))),e.length===2?j(t.evaluateFormula(O(t,e,1))):10),minArgs:1,maxArgs:2,description:`Returns the logarithm of a number to a specified base`,examples:[`LOG(100)`,`LOG(8, 2)`],category:`Mathematical`}),A.register({name:`LOG10`,handler:(e,t)=>Oi(j(t.evaluateFormula(O(t,e,0)))),minArgs:1,maxArgs:1,description:`Returns the base-10 logarithm of a number`,examples:[`LOG10(100)`,`LOG10(A1)`],category:`Mathematical`});function W(e,t){let n={position:t};for(;n.position>0&&e[n.position-1]===`\\`;)--n.position;return(t-n.position)%2==1}function Ai(e){return ea(Wi(e))}function ji(e,t){return e===``?t:t===e?``:e}function Mi(e){let t=e.split(``),n=[],r=``;return t.forEach((t,i)=>{(t===`"`||t===`'`)&&!W(e,i)&&(r=ji(r,t)),n.push(t===`&`&&r===``?`+`:t)}),n.join(``)}function Ni(e){let t=[],n={openQuote:``};return e.split(``).forEach((r,i)=>{(r===`"`||r===`'`)&&!W(e,i)&&(n.openQuote=ji(n.openQuote,r));let a=t.at(-1);n.openQuote===``&&(r===`-`||r===`+`)&&a===r&&t.push(` `),t.push(r)}),t.join(``)}function Pi(e){return e.replace(/([^<>!])=([^=])/g,`$1==$2`)}function Fi(e){return/^[\d+\-*/(). ]+$/.test(e)}function Ii(e){return/^[\d+\-*/(). <>!=]+$/.test(e)}var Li=/^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/,Ri=/^[A-Za-z_$][\w$]*/,zi=/^\s+/;function Bi(e,t){let n=e[t],r=Array.from(e.slice(t+1)).findIndex((r,i)=>r===n&&!W(e,t+1+i));return r===-1?e.length:t+r+2}var Vi={"(":`open`,")":`close`,"^":`caret`},Hi=[{kind:`number`,pattern:Li},{kind:`word`,pattern:Ri},{kind:`space`,pattern:zi}];function Ui(e,t){let n=e[t];if(n===`"`||n===`'`)return{kind:`literal`,text:e.slice(t,Bi(e,t))};let r=e.slice(t),i=Hi.map(({kind:e,pattern:t})=>({kind:e,text:t.exec(r)?.[0]})).find(e=>e.text!==void 0);return i?.text===void 0?{kind:Vi[n]??`symbol`,text:n}:{kind:i.kind,text:i.text}}function Wi(e){let t=[],n={position:0};for(;n.position<e.length;){let r=Ui(e,n.position);t.push(r),n.position+=r.text.length}return t}var Gi=e=>e?.kind===`symbol`&&(e.text===`-`||e.text===`+`);function Ki(e,t){let n={depth:0};return e.findIndex((e,r)=>r<t?!1:(e.kind===`open`&&(n.depth+=1),e.kind===`close`&&--n.depth,n.depth===0))}function qi(e,t){let n=e[t];if(n===void 0)return null;if(n.kind===`number`||n.kind===`literal`||n.kind===`word`)return{text:n.text,end:t+1};if(n.kind!==`open`)return null;let r=Ki(e,t);return r===-1?null:{text:`(${ea(e.slice(t+1,r))})`,end:r+1}}function Ji(e,t){let n={index:t};for(;Gi(e[n.index])||e[n.index]?.kind===`space`;)n.index+=1;let r=qi(e,n.index);if(r===null)return null;let i=e.slice(t,n.index),a=i.filter(e=>e.kind===`symbol`).map(e=>e.text),o=i.map(e=>e.text).join(``);return{text:a.join(` `)+r.text,source:o+r.text,signed:a.length>0,end:r.end}}function Yi(e,t){let n={index:t};for(;e[n.index]?.kind===`space`;)n.index+=1;return e[n.index]?.kind===`caret`?n.index:-1}var Xi=e=>e.signed?`(${e.text})`:e.text;function Zi(e,t){let n={text:Xi(t),end:t.end,links:0};for(let t=Yi(e,n.end);t!==-1;t=Yi(e,n.end)){let r=Ji(e,t+1);if(r===null)break;let i=n.links===0?n.text:`(${n.text})`;Object.assign(n,{text:`${i}**${Xi(r)}`,end:r.end,links:n.links+1})}return n.links===0?{text:t.source,end:t.end}:n}var Qi=e=>e===void 0||e.kind===`open`||e.kind===`symbol`||e.kind===`caret`,$i=(e,t)=>e.kind!==`space`&&(!Gi(e)||Qi(t));function ea(e){let t=[],n={index:0,previous:void 0};for(;n.index<e.length;){let r=e[n.index],i=$i(r,n.previous)?Ji(e,n.index):null,a=i===null?null:Zi(e,i);t.push(a===null?r.kind===`caret`?`**`:r.text:a.text);let o=a===null?n.index+1:a.end;r.kind!==`space`&&(n.previous=e[o-1]),n.index=o}return t.join(``)}var ta=e=>e===`"`||e===`'`;function na(e){let t={quote:``,depth:0};return e.split(``).map((n,r)=>{let i=ta(n)&&!W(e,r)&&(t.quote===``||t.quote===n),a=t.quote!==``||i;i&&(t.quote=t.quote===``?n:``),!a&&n===`)`&&--t.depth;let o={char:n,inLiteral:a,depth:t.depth};return!a&&n===`(`&&(t.depth+=1),o})}var ra=(e,t)=>!e.inLiteral&&t.includes(e.char);function ia(e){let t=na(e).flatMap((e,t)=>e.depth===0&&ra(e,`&`)?[t]:[]);return[-1,...t].map((n,r)=>e.slice(n+1,t[r]??e.length))}function aa(e){let t=na(e),n=t.flatMap((e,t)=>e.depth===0&&ra(e,`(`)?[t]:[]),r=e=>t.findIndex((t,n)=>n>e&&t.depth===0&&ra(t,`)`));return n.map(e=>({open:e,close:r(e)})).filter(({close:e})=>e>0)}function oa(e){let{pieces:t,cursor:n}=aa(e).reduce((t,{open:n,close:r})=>({pieces:[...t.pieces,e.slice(t.cursor,n+1),ua(e.slice(n+1,r))],cursor:r}),{pieces:[],cursor:0});return[...t,e.slice(n)].join(``)}var sa={true:`"TRUE"`,false:`"FALSE"`};function ca(e){let t=e.trim(),n=na(t);return t.startsWith(`(`)&&n.findIndex((e,t)=>t>0&&e.depth===0&&ra(e,`)`))===t.length-1?ca(t.slice(1,-1)):t}var la=e=>sa[ca(e)]??e;function ua(e){let t=ia(e).map(oa);return t.length===1?t[0]??``:`(""+${t.map(e=>`(${la(e)})`).join(`+`)})`}function da(e){if(na(e).some(e=>ra(e,`=<>`)))return Mi(e);let t=ia(e);return t.length>1&&t.some(e=>e.trim()===``)?Mi(e):ua(e)}function fa(e){let t=ia(e),n=t.flatMap(e=>aa(e).flatMap(({open:t,close:n})=>fa(e.slice(t+1,n))));return t.length>1?[...t,...n]:n}var pa=`
|
|
2
|
-
\v\f\r _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,ma=74,ha=8,ga=14,_a=31,va=127;function ya(e){let t=e.codePointAt(0)??0;return t<=ha||t>=ga&&t<=_a||t===va}var ba=/^[\u0300-\u036f]$/u,xa=`34f.332.313 343.314.301 341.300 340.306.302.30c.30a.342.308.344.30b.303.307.338.327.328.304.30d 30e 312 315 31a 33d 33e 33f 346 34a 34b 34c 350 351 352 357 35b 35d 35e.316 317 318 319 31c 31d 31e 31f 320 329 32a 32b 32c 32f 333 33a 33b 33c 347 348 349 34d 34e 353 354 355 356 359 35a 35c 35f 362.336 337.335.305.309.30f.310.311.31b.321.322.323.324.325.326.32d.32e.330.331.334.339.345.358.360.361`.split(`.`),Sa=0,Ca=`aeioucdhmrtvx`,wa=867,Ta=e=>Ca.charAt((e.codePointAt(0)??0)-wa)||e,Ea=new Map(xa.flatMap((e,t)=>e.split(` `).map(e=>[String.fromCodePoint(Number.parseInt(e,16)),t])));function Da(e){let t=pa.indexOf(e);return t>=0?t:ma+(e.codePointAt(0)??0)}function Oa(e){let t={primary:[],accents:[]};return Array.from(e.normalize(`NFD`)).filter(e=>!ya(e)).map(Ta).forEach(e=>{let n=t.accents.at(-1);if(ba.test(e)&&n!==void 0){let t=Ea.get(e)??Sa;t!==Sa&&n.push(t)}else t.primary.push(Da(e.toLowerCase())),t.accents.push([])}),t}function ka(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let[n,i]=[e[r],t[r]];if(n!==void 0&&i!==void 0&&n!==i)return n<i?-1:1}return e.length-t.length}function Aa(e,t){return e.reduce((e,n,r)=>e||ka(n,t[r]??[]),0)}function ja(e,t){let[n,r]=[Oa(e),Oa(t)];return ka(n.primary,r.primary)||Aa(n.accents,r.accents)}var Ma=[`<>`,`<=`,`>=`,`=`,`<`,`>`],Na=`=<>!`;function Pa(e){let t=[];return na(e).forEach((e,n)=>{if(e.inLiteral||e.depth!==0||!Na.includes(e.char))return;let r=t.at(-1);r!==void 0&&r.start+r.text.length===n?r.text+=e.char:t.push({start:n,text:e.char})}),t}var Fa=e=>Ma.some(t=>t===e);function Ia(e){let t=Pa(e);if(t.length===0)return null;let n=t.map(e=>e.text);if(!n.every(Fa))return null;let r=[{start:0,text:``},...t].map((n,r)=>({from:n.start+n.text.length,to:t[r]?.start??e.length})).map(({from:t,to:n})=>e.slice(t,n).trim());return r.some(e=>e===``)?null:{operands:r,operators:n.filter(Fa)}}var La=0,Ra=1,za=2,Ba=e=>typeof e==`number`?La:typeof e==`boolean`?za:Ra;function Va(e,t){let n=Ba(e)-Ba(t);return n===0?typeof e==`number`&&typeof t==`number`?e-t:typeof e==`boolean`&&typeof t==`boolean`?Number(e)-Number(t):ja(String(e),String(t)):n}var Ha={"=":e=>e===0,"<>":e=>e!==0,"<":e=>e<0,">":e=>e>0,"<=":e=>e<=0,">=":e=>e>=0};function Ua(e,t,n){return Ha[e](Va(t,n))}function Wa(e,t){return t.reduce((t,n,r)=>Ua(n,t,e[r+1]??``),e[0]??``)}var Ga=e=>typeof e==`number`?0:typeof e!=`boolean`&&``;function Ka(e,t){return e.map((n,r)=>t[r]?r===0?Ga(e[1]??0):r===1&&Ga(e[0]??0):n)}var qa=[`>=`,`<=`,`<>`,`!=`,`==`,`=`,`>`,`<`];function*Ja(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];t===null?r===`"`||r===`'`?t=r:yield n:r===`\\`?n++:r===t&&(t=null)}}function Ya(e){let t=e.trim();for(;t.startsWith(`(`)&&t.endsWith(`)`);){let e=0,n=!0;for(let r of Ja(t)){let i=t[r];if(i===`(`)e++;else if(i===`)`){if(e--,e===0&&r<t.length-1){n=!1;break}if(e<0)return t}}if(!n||e!==0)return t;t=t.slice(1,-1).trim()}return t}function Xa(e){let t=Ya(e);for(let e of Ja(t))for(let n of qa)if(t.startsWith(n,e))return{left:t.slice(0,e).trim(),operator:n,right:t.slice(e+n.length).trim()};return null}function Za(e){return e.length>=2&&(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))?{value:e.slice(1,-1).replace(/\\(["'\\])/g,`$1`),quoted:!0}:{value:e,quoted:!1}}function Qa(e){let{value:t,quoted:n}=Za(e.trim());if(n)return t;if(t===``)return``;let r=t.toUpperCase();if(r===`TRUE`)return!0;if(r===`FALSE`)return!1;let i=Number(t);return Number.isNaN(i)?t:i}var $a={">=":`>=`,"<=":`<=`,"<>":`<>`,"!=":`<>`,"==":`=`,"=":`=`,">":`>`,"<":`<`};function eo(e,t){let[n,r]=[t(e.left),t(e.right)],i=e.left===``?Ga(r):n,a=e.right===``?Ga(n):r;return Ua($a[e.operator],i,a)}function to(e){return typeof e==`boolean`?e:typeof e==`number`?e!==0:e!==``}function no(e,t){let n=Xa(e);return n?eo(n,t):to(t(Ya(e)))}function ro(e){if(e==null)return`""`;let t=S(e)?e.code:e;return typeof t==`string`?`"${t.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:t.toString()}var io=/^(?:'((?:[^']|'')+)'|([^!]+))!(.+)$/;function ao(e){let[,t,n,r]=e.match(io)??[],i=t===void 0?n:t.replace(/''/g,`'`);return i===void 0||r===void 0?null:{sheetName:i,ref:r}}function oo(e,t){let n=e.indexOf(`'`,t+1);return n===-1?-1:e[n+1]===`'`?oo(e,n+1):n+1}var so=e=>e.trim()===``;function co(e,t){let n={at:t-1};for(;n.at>=0&&(so(e[n.at]??``)||e[n.at]===`(`);)--n.at;return n.at<0?``:e[n.at]??``}function lo(e,t){let n={at:t};for(;n.at<e.length&&(so(e[n.at]??``)||e[n.at]===`)`);)n.at+=1;return n.at>=e.length?``:e[n.at]??``}var uo=e=>e===``||e===`&`;function fo(e,t,n){let r=co(e,t),i=lo(e,n);return uo(r)&&uo(i)&&(r===`&`||i===`&`)}var G={div_zero:`#DIV/0!`,invalid_ref:`#REF!`,syntax:`#NAME?`,unknown:`#ERROR!`},po={[G.div_zero]:`div_zero`,[G.invalid_ref]:`invalid_ref`,[G.syntax]:`syntax`},K=class extends Error{errorType;display;constructor(e,t,n){super(n??t),this.errorType=e,this.display=t,this.name=`FormulaError`}},mo=e=>e instanceof K,ho=()=>new K(`div_zero`,G.div_zero,`Division by zero`),go=e=>new K(`invalid_ref`,G.invalid_ref,`Invalid reference: ${e}`),_o=e=>new K(`syntax`,G.syntax,`Unknown function: ${e}`),vo=e=>new K(`unknown`,G.unknown,e),yo=e=>new K(po[e]??`unknown`,e,`Propagated error: ${e}`),bo=e=>mo(e)?{type:e.errorType,display:e.display}:{type:`unknown`,display:G.unknown},xo=/("(?:[^"\\]|\\.|"")*"?|'(?:[^']|'')*'?)/,So=/(?<![\w$.!])(TRUE|FALSE)(?![\w$.]|\s*[(!])/gi;function Co(e){return e.split(xo).map((e,t)=>t%2==1?e:e.replace(So,e=>e.toLowerCase())).join(``)}var wo=/^\(*\s*(true|false)\s*\)*$/;function To(e){let[,t]=e.trim().match(wo)??[];return t===void 0?null:t===`true`}function Eo(e){return/["']/.test(e)?e:e.replace(/\btrue\b/g,`1`).replace(/\bfalse\b/g,`0`)}var Do=`+-*/^`;function Oo(e,t){let n=e.slice(t+1).split(``).findIndex((e,t,n)=>e===`"`&&!ko(n,t));return n===-1?e.length:t+1+n+1}function ko(e,t){let n=e.slice(0,t).reverse().findIndex(e=>e!==`\\`);return(n===-1?t:n)%2==1}function Ao(e){let t=[],n={index:0};for(;n.index<e.length;)if(e[n.index]===`"`){let r=Oo(e,n.index);t.push({start:n.index,end:r}),n.index=r}else n.index+=1;return t}var jo=e=>e!==void 0&&Do.includes(e);function Mo(e){let t=Ao(e),n=[],r={at:0};for(let{start:i,end:a}of t){let t=e.slice(0,i).trimEnd().at(-1),o=e.slice(a).trimStart()[0];if(!jo(t)&&!jo(o))continue;let s=Pe(e.slice(i+1,a-1).replace(/\\(.)/g,`$1`));if(s===null)return y;n.push(e.slice(r.at,i),`(${s})`),r.at=a}return n.push(e.slice(r.at)),n.join(``)}var No=RegExp(`^(${rt})\\((.*)\\)$`,`i`),Po=RegExp(`^(${rt})\\(`,`i`);function Fo(e){if(e==null)return`0`;let t=S(e)?e.code:e;return typeof t==`string`?`"${t.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:t.toString()}function Io(e){let t=``,n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n!==null){if(i===`\\`){r++;continue}i===n&&(n=null,t+=i)}else(i===`"`||i===`'`)&&(n=i),t+=i}return t}function Lo(e){let t=Io(e).replace(/\b(?:true|false)\b/g,``);return/^[\d+\-*/(). "']*$/.test(t)}function Ro(e,t){let n=e[t],r=t+1;for(;r<e.length;)if(e[r]===`\\`)r+=2;else{if(e[r]===n)return r+1;r++}return e.length}function zo(e,t){let n=oo(e,t);if(n===-1||e[n]!==`!`)return null;let r=e.substring(n+1).match(/^(\$?[A-Z]+\$?\d+)/);return r?e.substring(t,n+1+r[0].length):null}function Bo(e,t){let n=e.substring(t),r=n.match(/^([A-Z][A-Z0-9]*)!/i);if(r){let e=n.substring(r[0].length).match(/^(\$?[A-Z]+\$?\d+)/);if(e)return r[0]+e[0]}let i=n.match(/^(\$?[A-Z]+\$?\d+)/);return i?i[0]:null}function Vo(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`"`){n=Ro(e,n);continue}if(r===`'`){let r=zo(e,n);r?(t.push({ref:r,start:n}),n+=r.length):n=Ro(e,n);continue}let i=Bo(e,n);i?(t.push({ref:i,start:n}),n+=i.length):n++}return t}function Ho(e,t,n){return[...t].reverse().reduce((e,{ref:t,start:r})=>e.slice(0,r)+n(t,r)+e.slice(r+t.length),e)}function Uo(e){let t=[],n=``,r=0,i=!1,a=``;for(let o=0;o<e.length;o++){let s=e[o];(s===`"`||s===`'`)&&!W(e,o)?(i?s===a&&(i=!1,a=``):(i=!0,a=s),n+=s):!i&&(s===`(`&&r++,s===`)`&&r--,s===`,`&&r===0)?(t.push(n.trim()),n=``):n+=s}return n.trim()&&t.push(n.trim()),t}function Wo(e){let t;try{t=Function(`return (${Ni(e)})`)()}catch{throw vo()}if(typeof t==`number`){if(!Number.isFinite(t))throw ho();return t}if(typeof t==`string`||typeof t==`boolean`)return t;throw vo()}function Go(e){if(!e.includes(`&`))return null;let t=da(e);return Lo(t)?(fa(e).filter(Fi).forEach(Wo),Wo(t)):null}var Ko=/^\(*\s*(true|false)\s*\)*$/i,qo=e=>(e.startsWith(`"`)||e.startsWith(`'`))&&e.endsWith(e[0]??``)&&Ro(e,0)===e.length;function Jo(e){let t=Ko.exec(e)?.[1];if(t!==void 0)return t.toLowerCase()===`true`;let n=Go(e);return n===null?Fi(e)||qo(Ya(e))?Wo(e):null:n}var Yo=e=>e!==null;function Xo(e,t){let n=Ia(e),r=t.isCellEmpty;return!n||!r?null:n.operands.map(e=>{let t=Zo(e);return t!==null&&r(t)})}function Zo(e){let t=Ya(e).trim(),[n,...r]=Vo(t);return n&&r.length===0&&n.start===0&&n.ref.length===t.length?n.ref:null}function Qo(e,t){return aa(e).filter(({open:t,close:n})=>{let r=e.slice(t+1,n).trim();return!/[\w.$]$/.test(e.slice(0,t))&&r!==``&&!r.includes(`:`)&&Zo(r)===null}).reduceRight((n,{open:r,close:i})=>{let a=t.evaluateFormula(e.slice(r+1,i));if(S(a))throw yo(a.code);return n.slice(0,r)+Fo(a)+n.slice(i+1)},e)}function $o(e,t){let n=Co(e),r=n.trim();if(qo(r)){let e=r.slice(1,-1),n=Je(e,t.preferDDMMYYYY);return n===null?e:n}let[,i,a]=n.match(No)??[];if(i!==void 0&&a!==void 0&&it(i)){let e=0,n=!0;for(let t of a)if(t===`(`)e++;else if(t===`)`&&(e--,e<0)){n=!1;break}let r=i.toUpperCase(),o=A.get(r);if(o&&n){let e=Uo(a);if(o.minArgs!==void 0&&e.length<o.minArgs)throw tt(r,o.minArgs);if(o.maxArgs!==void 0&&e.length>o.maxArgs)throw Error(`${r} accepts at most ${o.maxArgs} argument${o.maxArgs===1?``:`s`}`);return o.handler(e,{functionName:r,getCellValue:t.getCellValue,getRangeValues:t.getRangeValues,getRangeValuesRaw:t.getRangeValuesRaw,getRangeValuesKeepingBlanks:t.getRangeValuesKeepingBlanks,countFilledCells:t.countFilledCells,evaluateFormula:t.evaluateFormula,isBlankReference:e=>{let n=Zo(e);return n!==null&&t.isCellEmpty?.(n)===!0},preferDDMMYYYY:t.preferDDMMYYYY})}if(n&&!o)throw _o(r)}let o=n,s=0,c=0;for(;s<o.length&&c<100;){if(c++,o[s]===`"`||o[s]===`'`){s=Ro(o,s);continue}let[,e]=o.substring(s).match(Po)??[];if(e===void 0||!it(e)){if(s++,s>=o.length)break;continue}let n=s,r=s+e.length+1,i=1,a=r,l=!1,u=``;for(;a<o.length&&i>0;){let e=o[a];(e===`"`||e===`'`)&&!W(o,a)&&(l?e===u&&(l=!1,u=``):(l=!0,u=e)),l||(e===`(`?i++:e===`)`&&i--),a++}if(i===0){let e=o.substring(n,a),r=t.evaluateFormula(e);if(S(r))throw yo(r.code);let i=typeof r==`string`?Fo(r):`(${r})`;o=o.substring(0,n)+i+o.substring(a),s=n+i.length}else s++}o=Qo(o,t);let l=Vo(o),u=l.length===1?l[0]:void 0;if(u){let e=o.slice(0,u.start),n=o.slice(u.start+u.ref.length);if(e.trim()===``&&n.trim()===``)return t.getCellValue(u.ref)}let d=o,f=Xo(d,t);o=Ho(o,l,(e,n)=>{if(fo(d,n,n+e.length)&&t.isCellEmpty?.(e))return`""`;let r=t.getCellValue(e),i=je(r);if(i!==null)throw yo(i);return Fo(r)}),o=o.replace(/"([^"]+)"/g,(e,n)=>{let r=Je(n,t.preferDDMMYYYY);return r===null?e:r.toString()});let p=Mo(o);if(S(p))throw yo(p.code);o=p,o=Ai(o);let m=Ia(o);if(m){let e=m.operands.map(Jo),t=f?.length===e.length;if(e.every(Yo))return Wa(t?Ka(e,f):e,m.operators)}let h=Go(o);if(h!==null)return h;let ee=To(o);if(ee!==null)return ee;if(o=Eo(o),Ii(o))return Wo(Pi(o));if(Fi(o))return Wo(o);let g=o.trim();return g.startsWith(`"`)&&g.endsWith(`"`)||g.startsWith(`'`)&&g.endsWith(`'`)?g.slice(1,-1):o}A.register({name:`IF`,handler:(e,t)=>{let n=O(t,e,0),r=O(t,e,1),i=O(t,e,2),a=z(t.evaluateFormula(n))?r:i;return/^["'](.*)["']$/.test(a)?a.slice(1,-1):t.evaluateFormula(a)},minArgs:3,maxArgs:3,description:`Returns one value if a condition is true and another if false`,examples:[`IF(A1>10, "High", "Low")`,`IF(B2>=5, SUM(C1:C10), 0)`],category:`Logical`}),A.register({name:`AND`,handler:(e,t)=>{for(let n of e)if(!z(t.evaluateFormula(n.trim())))return!1;return!0},minArgs:1,description:`Returns TRUE if all arguments are true`,examples:[`AND(A1>5, B1<10)`,`AND(A1>0, B1>0, C1>0)`],category:`Logical`}),A.register({name:`OR`,handler:(e,t)=>{for(let n of e)if(z(t.evaluateFormula(n.trim())))return!0;return!1},minArgs:1,description:`Returns TRUE if any argument is true`,examples:[`OR(A1>5, B1<10)`,`OR(A1>0, B1>0)`],category:`Logical`}),A.register({name:`NOT`,handler:(e,t)=>!z(t.evaluateFormula(O(t,e,0))),minArgs:1,maxArgs:1,description:`Reverses the logical value of its argument`,examples:[`NOT(A1>5)`,`NOT(B1)`],category:`Logical`}),A.register({name:`IFERROR`,handler:(e,t)=>{try{let n=t.evaluateFormula(O(t,e,0));return Me(n)?t.evaluateFormula(O(t,e,1)):n}catch{return t.evaluateFormula(O(t,e,1))}},minArgs:2,maxArgs:2,description:`Returns a value if expression is an error, otherwise returns the expression`,examples:[`IFERROR(A1/B1, 0)`,`IFERROR(VLOOKUP(A1, B1:C10, 2), "Not found")`],category:`Logical`}),A.register({name:`IFNA`,handler:(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=S(n)&&n.code===x.code;return n==null||r?t.evaluateFormula(O(t,e,1)):n},minArgs:2,maxArgs:2,description:`Returns a value if expression is #N/A, otherwise returns the expression`,examples:[`IFNA(A1, "N/A")`,`IFNA(MATCH(A1, B1:B10), 0)`],category:`Logical`}),A.register({name:`IFS`,handler:(e,t)=>{if(e.length<2||e.length%2!=0)throw Error(`IFS requires an even number of arguments (condition-value pairs)`);for(let n=0;n<e.length;n+=2){let r=O(t,e,n),i=O(t,e,n+1);if(no(Ho(r,Vo(r),e=>ro(t.getCellValue(e))),e=>{let n=Qa(e);return typeof n==`string`&&n===e.trim()?t.evaluateFormula(e):n}))return/^["'](.*)["']$/.test(i)?i.slice(1,-1):t.evaluateFormula(i)}return x},minArgs:2,description:`Checks multiple conditions and returns the first true result`,examples:[`IFS(A1>90, "A", A1>80, "B", A1>70, "C")`,`IFS(B1="Yes", 1, B1="No", 0)`],category:`Logical`}),A.register({name:`TRUE`,handler:()=>!0,minArgs:0,maxArgs:0,description:`Returns the logical value TRUE`,examples:[`TRUE()`,`IF(A1>0, TRUE(), FALSE())`],category:`Logical`}),A.register({name:`FALSE`,handler:()=>!1,minArgs:0,maxArgs:0,description:`Returns the logical value FALSE`,examples:[`FALSE()`,`IF(A1>0, TRUE(), FALSE())`],category:`Logical`});function es(e){return/[YMD]|MMM|DD|YYYY|h:mm|AM\/PM/i.test(e)}var ts=/YYYY|YY|MMMM|MMM|MM|M|dddd|ddd|DD|D|AM\/PM|am\/pm|HH|H|hh|h|mm|ss/g;function ns(e,t){let n=E(e),r=n.getUTCFullYear(),i=n.getUTCMonth(),a=n.getUTCDate(),o=n.getUTCHours(),s=n.getUTCMinutes(),c=n.getUTCSeconds(),l=n.getUTCDay(),u=/AM\/PM|am\/pm/.test(t),d=o%12||12,f=o>=12,p={YYYY:r.toString(),YY:(r%100).toString().padStart(2,`0`),MMMM:ze[i]??ze[0],MMM:Re[i]??Re[0],MM:(i+1).toString().padStart(2,`0`),M:(i+1).toString(),dddd:Ve[l]??Ve[0],ddd:Be[l]??Be[0],DD:a.toString().padStart(2,`0`),D:a.toString(),"AM/PM":f?`PM`:`AM`,"am/pm":f?`pm`:`am`,HH:o.toString().padStart(2,`0`),H:o.toString(),hh:(u?d:o).toString().padStart(2,`0`),h:(u?d:o).toString(),mm:s.toString().padStart(2,`0`),ss:c.toString().padStart(2,`0`)};return t.replace(ts,e=>p[e]??e)}var rs=3,is=e=>Array.from(e).reduce((t,n,r)=>r>0&&(e.length-r)%rs===0?`${t},${n}`:`${t}${n}`,``),as=e=>{let[t,...n]=e.split(`.`);return t===void 0?e:[is(t),...n].join(`.`)};function os(e,t){if(!t)return e.toString();try{if(es(t))return ns(e,t);if(t.includes(`$`)){let n=(t.match(/\.0+/)||[``])[0].length-1,r=Math.abs(e).toFixed(n>=0?n:0),i=`$`+(t.includes(`,`)?as(r):r);return e<0?`-`+i:i}if(t.includes(`%`)){let n=(t.match(/\.0+/)||[``])[0].length-1;return(e*100).toFixed(n>=0?n:2)+`%`}if(t.includes(`,`)){let n=(t.match(/\.0+/)||[``])[0].length-1,r=as(Math.abs(e).toFixed(n>=0?n:0));return e<0?`-`+r:r}let n=(t.match(/\.0+/)||[``])[0].length-1;return n>=0?e.toFixed(n):e.toString()}catch(t){return console.error(`Format error:`,t),e.toString()}}var ss=100,cs=`?\\*_[]"@;/`,ls=/[#0][#0,.]*/,us=/[#0]/,ds=/0+$/,fs=(e,t)=>Array.from(e).filter(e=>t.includes(e)).length,ps=e=>Array.from(e).some(e=>cs.includes(e)),ms=e=>{let t=ls.exec(e);if(!t||t[0].endsWith(`,`))return null;let n=e.slice(0,t.index),r=e.slice(t.index+t[0].length);if(us.test(r)||ps(n)||ps(r))return null;let[i,a=``,...o]=t[0].split(`.`);return i===void 0||o.length>0?null:{prefix:n,suffix:r,useGrouping:i.includes(`,`),integerMinDigits:fs(i,`0`),minDecimals:fs(a,`0`),maxDecimals:fs(a,`#0`),isPercent:n.includes(`%`)||r.includes(`%`)}},hs=(e,t)=>{let n=e.replace(ds,``);return n.length>=t?n:e.slice(0,t)},gs=(e,t)=>{let n=e.toFixed(t.maxDecimals),r=n.indexOf(`.`),i=r===-1?n:n.slice(0,r),a=r===-1?``:n.slice(r+1),o=i.padStart(t.integerMinDigits,`0`),s=t.useGrouping?is(o):o,c=hs(a,t.minDecimals);return c?`${s}.${c}`:s},_s=e=>Array.from(e).every(e=>e===`0`||e===`,`||e===`.`),vs=(e,t)=>{if(!Number.isFinite(e))return null;let n=ms(t);if(!n)return null;let r=n.isPercent?e*ss:e,i=gs(Math.abs(r),n);return`${r<0&&!_s(i)?`-`:``}${n.prefix}${i}${n.suffix}`},ys=e=>/[\p{L}\p{M}]/u.test(e),bs=e=>{let t=Array.from(e);return t.map((e,n)=>{let r=t[n-1];return r===void 0||!ys(r)?e.toUpperCase():e.toLowerCase()}).join(``)},xs=e=>!Number.isFinite(e)||e<0?y:Math.trunc(e),Ss=(e,t)=>{let n=xs(t);return S(n)?n:e.substring(0,n)},Cs=(e,t)=>{let n=xs(t);return S(n)?n:e.substring(e.length-n)},ws=(e,t,n,r)=>{let i=e.split(t);return r>i.length-1?e:i.slice(0,r).join(t)+n+i.slice(r).join(t)},Ts=(e,t,n,r)=>{if(t===``)return e;if(r===void 0)return e.split(t).join(n);let i=Math.trunc(r);return!Number.isFinite(i)||i<=0?y:ws(e,t,n,i)},Es=(e,t)=>e.isBlankReference?.(t)?``:at(e.evaluateFormula(t)),q=(e,t,n)=>Es(e,O(e,t,n)),Ds=(e,t)=>e.map(e=>Es(t,e.trim())).join(``),Os=Ds,ks=(e,t)=>Ss(q(t,e,0),e.length===2?Number(t.evaluateFormula(O(t,e,1))):1),As=(e,t)=>Cs(q(t,e,0),e.length===2?Number(t.evaluateFormula(O(t,e,1))):1),js=(e,t,n)=>{let r=xs(n);if(S(r))return r;if(!Number.isFinite(t)||t<1)return y;let i=Math.trunc(t)-1;return e.substring(i,i+r)},Ms=(e,t)=>js(q(t,e,0),Number(t.evaluateFormula(O(t,e,1))),Number(t.evaluateFormula(O(t,e,2)))),Ns=(e,t)=>q(t,e,0).length,Ps=(e,t)=>q(t,e,0).toUpperCase(),Fs=(e,t)=>q(t,e,0).toLowerCase(),Is=(e,t)=>bs(q(t,e,0)),Ls=(e,t)=>q(t,e,0).trim().replace(/\s+/g,` `),Rs=(e,t)=>Ts(q(t,e,0),q(t,e,1),q(t,e,2),e.length===4?Number(t.evaluateFormula(O(t,e,3))):void 0),zs=(e,t)=>{let n=q(t,e,0),r=Number(t.evaluateFormula(O(t,e,1)))-1,i=Number(t.evaluateFormula(O(t,e,2))),a=q(t,e,3);return n.substring(0,r)+a+n.substring(r+i)},Bs=(e,t,n,r)=>{let i=r.caseInsensitive?e.toLowerCase():e,a=(r.caseInsensitive?t.toLowerCase():t).indexOf(i,n);return a===-1?y:a+1},Vs=e=>(t,n)=>Bs(q(n,t,0),q(n,t,1),t.length===3?Number(n.evaluateFormula(O(n,t,2)))-1:0,{caseInsensitive:e}),Hs=Vs(!1),Us=Vs(!0),Ws=e=>e.replace(/^["']/,``).replace(/["']$/,``),Gs=(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=Ws(q(t,e,1));return typeof n==`number`?vs(n,r)??at(n):at(n)},Ks=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,qs=e=>{if(!Ks.test(e))return null;let t=Number(e);return Number.isFinite(t)?t:null},Js=e=>{let t=e.replace(/[$,]/g,``).trim();if(t.endsWith(`%`)){let e=qs(t.slice(0,-1).trim());return e===null?y:e/100}let n=qs(t);return n===null?y:n};A.register({name:`CONCATENATE`,handler:Ds,minArgs:1,description:`Joins several text strings into one string`,examples:[`CONCATENATE("Hello", " ", "World")`,`CONCATENATE(A1, B1)`],category:`Text`}),A.register({name:`CONCAT`,handler:Os,minArgs:1,description:`Joins several text strings into one string (same as CONCATENATE)`,examples:[`CONCAT("Hello", " ", "World")`,`CONCAT(A1, B1)`],category:`Text`}),A.register({name:`LEFT`,handler:ks,minArgs:1,maxArgs:2,description:`Returns the leftmost characters from a text string`,examples:[`LEFT("Hello", 2)`,`LEFT(A1, 3)`],category:`Text`}),A.register({name:`RIGHT`,handler:As,minArgs:1,maxArgs:2,description:`Returns the rightmost characters from a text string`,examples:[`RIGHT("Hello", 2)`,`RIGHT(A1, 3)`],category:`Text`}),A.register({name:`MID`,handler:Ms,minArgs:3,maxArgs:3,description:`Returns characters from the middle of a text string`,examples:[`MID("Hello", 2, 3)`,`MID(A1, 1, 5)`],category:`Text`}),A.register({name:`LEN`,handler:Ns,minArgs:1,maxArgs:1,description:`Returns the number of characters in a text string`,examples:[`LEN("Hello")`,`LEN(A1)`],category:`Text`}),A.register({name:`UPPER`,handler:Ps,minArgs:1,maxArgs:1,description:`Converts text to uppercase`,examples:[`UPPER("hello")`,`UPPER(A1)`],category:`Text`}),A.register({name:`LOWER`,handler:Fs,minArgs:1,maxArgs:1,description:`Converts text to lowercase`,examples:[`LOWER("HELLO")`,`LOWER(A1)`],category:`Text`}),A.register({name:`PROPER`,handler:Is,minArgs:1,maxArgs:1,description:`Capitalizes the first letter of each word`,examples:[`PROPER("hello world")`,`PROPER(A1)`],category:`Text`}),A.register({name:`TRIM`,handler:Ls,minArgs:1,maxArgs:1,description:`Removes extra spaces from text`,examples:[`TRIM(" hello world ")`,`TRIM(A1)`],category:`Text`}),A.register({name:`SUBSTITUTE`,handler:Rs,minArgs:3,maxArgs:4,description:`Replaces old text with new text in a string`,examples:[`SUBSTITUTE("Hello World", "World", "Earth")`,`SUBSTITUTE(A1, "old", "new", 1)`],category:`Text`}),A.register({name:`REPLACE`,handler:zs,minArgs:4,maxArgs:4,description:`Replaces part of a text string with a different text string`,examples:[`REPLACE("Hello World", 7, 5, "Earth")`,`REPLACE(A1, 1, 3, "New")`],category:`Text`}),A.register({name:`FIND`,handler:Hs,minArgs:2,maxArgs:3,description:`Finds one text string within another (case-sensitive)`,examples:[`FIND("o", "Hello")`,`FIND("World", A1)`],category:`Text`}),A.register({name:`SEARCH`,handler:Us,minArgs:2,maxArgs:3,description:`Finds one text string within another (case-insensitive)`,examples:[`SEARCH("O", "Hello")`,`SEARCH("world", A1)`],category:`Text`}),A.register({name:`TEXT`,handler:Gs,minArgs:2,maxArgs:2,description:`Formats a number and converts it to text`,examples:[`TEXT(1234.5, "$#,##0.00")`,`TEXT(0.5, "0%")`],category:`Text`}),A.register({name:`VALUE`,handler:(e,t)=>Js(at(t.evaluateFormula(O(t,e,0)))),minArgs:1,maxArgs:1,description:`Converts a text string to a number`,examples:[`VALUE("123")`,`VALUE("$1,234.56")`],category:`Text`}),A.register({name:`EXACT`,handler:(e,t)=>q(t,e,0)===q(t,e,1),minArgs:2,maxArgs:2,description:`Checks if two text strings are exactly the same`,examples:[`EXACT("Hello", "hello")`,`EXACT(A1, B1)`],category:`Text`});function Ys(e,t,n,r,i){if(e===0)return-(r+n*t);let a=(1+e)**+t;return-r*a-n*(a-1)*(1+e*i)/e}function Xs(e,t,n,r,i){if(e===0)return-(r+n)/t;let a=(1+e)**+t;return-e*(r+n*a)/((a-1)*(1+e*i))}function Zs(e,t,n,r,i,a){let o=Xs(e,n,r,i,a);if(t===1&&a===1)return 0;let s=Ys(e,a===1?t-2:t-1,o,r,a)*e;return a===1?s/(1+e):s}function Qs(e,t,n,r,i,a){return Xs(e,n,r,i,a)-Zs(e,t,n,r,i,a)}function $s(e,t,n,r,i){if(e===0)return-(r+n*t);let a=(1+e)**+t;return(-r-n*(a-1)*(1+e*i)/e)/a}function ec(e,t,n,r,i){if(e===0)return-(r+n)/t;let a=t*(1+e*i);return Math.log((a-r*e)/(a+n*e))/Math.log(1+e)}var tc=100,nc=1e-7;function rc(e,t,n,r,i,a){let o=a;for(let a=0;a<tc;a++){Math.abs(o)<nc&&(o=nc);let a=(1+o)**+e,s=n*a+t*((a-1)/o)*(1+o*i)+r,c=e*n*(1+o)**(e-1)+t*(1+o*i)*(e*(1+o)**(e-1)*o-(a-1))/(o*o)+t*i*((a-1)/o),l=o-s/c;if(Math.abs(l-o)<nc)return Number.isFinite(l)?l:b;o=l}return b}function ic(e,t){return t.reduce((t,n,r)=>t+n/(1+e)**+(r+1),0)}function ac(e,t){return e.reduce((e,n,r)=>{let i=(1+t)**+r;return{npv:e.npv+n/i,dnpv:e.dnpv-r*n/(i*(1+t))}},{npv:0,dnpv:0})}function oc(e,t){let n=t;for(let t=0;t<tc;t++){let{npv:t,dnpv:r}=ac(e,n);if(Math.abs(t)<nc)return n;if(Math.abs(r)<nc)return b;let i=n-t/r;if(Math.abs(i-n)<nc)return Number.isFinite(i)?i:b;n=i}return b}var sc=(e,t,n,r)=>{let i=n=>j(t.evaluateFormula(O(t,e,n))),a=Array.from({length:n},(e,t)=>i(t)),o=r.map((t,r)=>e.length>n+r?i(n+r):t);return[...a,...o]},cc=(e,t)=>{let[n,r,i,a,o]=sc(e,t,3,[0,0]);return Ys(n,r,i,a,o)},lc=(e,t)=>{let[n,r,i,a,o]=sc(e,t,3,[0,0]);return $s(n,r,i,a,o)},uc=(e,t)=>{let[n,r,i,a,o]=sc(e,t,3,[0,0]);return Xs(n,r,i,a,o)},dc=(e,t)=>{let[n,r,i,a,o]=sc(e,t,3,[0,0]);return ec(n,r,i,a,o)},fc=(e,t)=>{let[n,r,i,a,o,s]=sc(e,t,3,[0,0,.1]);return rc(n,r,i,a,o,s)},pc=e=>(t,n)=>{let[r,i,a,o,s,c]=sc(t,n,4,[0,0]);return e(r,i,a,o,s,c)},mc=pc(Zs),hc=pc(Qs),gc=(e,t)=>e.flatMap(e=>(e.includes(`:`)?t.getRangeValues(e):[t.evaluateFormula(e)]).map(j));A.register({name:`FV`,handler:cc,minArgs:3,maxArgs:5,description:`Calculates the future value of an investment based on periodic, constant payments and a constant interest rate`,examples:[`FV(0.06/12, 12, -100, -1000, 1)`,`FV(A1, A2, A3)`],category:`Financial`}),A.register({name:`PV`,handler:lc,minArgs:3,maxArgs:5,description:`Calculates the present value of an investment based on periodic, constant payments and a constant interest rate`,examples:[`PV(0.08/12, 12*20, 500, 0, 0)`,`PV(A1, A2, A3)`],category:`Financial`}),A.register({name:`PMT`,handler:uc,minArgs:3,maxArgs:5,description:`Calculates the payment for a loan based on constant payments and a constant interest rate`,examples:[`PMT(0.06/12, 30*12, 250000)`,`PMT(A1, A2, A3)`],category:`Financial`}),A.register({name:`NPER`,handler:dc,minArgs:3,maxArgs:5,description:`Calculates the number of periods for an investment based on periodic, constant payments and a constant interest rate`,examples:[`NPER(0.06/12, -1000, 50000, 0, 0)`,`NPER(A1, A2, A3)`],category:`Financial`}),A.register({name:`RATE`,handler:fc,minArgs:3,maxArgs:6,description:`Calculates the interest rate per period of an annuity using iteration`,examples:[`RATE(12, -100, 1000, 0, 0, 0.1)`,`RATE(A1, A2, A3)`],category:`Financial`}),A.register({name:`IPMT`,handler:mc,minArgs:4,maxArgs:6,description:`Calculates the interest payment for a given period for an investment`,examples:[`IPMT(0.06/12, 1, 30*12, 250000)`,`IPMT(A1, A2, A3, A4)`],category:`Financial`}),A.register({name:`PPMT`,handler:hc,minArgs:4,maxArgs:6,description:`Calculates the payment on the principal for a given period for an investment`,examples:[`PPMT(0.06/12, 1, 30*12, 250000)`,`PPMT(A1, A2, A3, A4)`],category:`Financial`}),A.register({name:`NPV`,handler:(e,t)=>ic(j(t.evaluateFormula(O(t,e,0))),gc(e.slice(1),t)),minArgs:2,description:`Calculates the net present value of an investment based on a discount rate and a series of future cash flows`,examples:[`NPV(0.1, -10000, 3000, 4200, 6800)`,`NPV(A1, B1:B10)`],category:`Financial`}),A.register({name:`IRR`,handler:(e,t)=>{let n=t.getRangeValues(O(t,e,0)).map(j),r=e.length===2?j(t.evaluateFormula(O(t,e,1))):.1;if(n.length===0)throw Error(`IRR requires at least one value`);return oc(n,r)},minArgs:1,maxArgs:2,description:`Calculates the internal rate of return for a series of cash flows`,examples:[`IRR(A1:A5, 0.1)`,`IRR(B1:B10)`],category:`Financial`});function _c(e){let t=0;for(let n=0;n<e.length;n++)t=t*26+(e.charCodeAt(n)-64);return t-1}function J(e){let t=``,n=e+1;for(;n>0;){let e=(n-1)%26;t=String.fromCharCode(65+e)+t,n=Math.floor((n-1)/26)}return t}var vc=/\$?[A-Z]+\$?\d+:\$?[A-Z]+\$?\d+/g,yc=/\$?[A-Z]+\$?\d+/g;function bc(e){return e.startsWith(`=`)?e.slice(1):e}var xc=/^([A-Z]+)(\d+)$/;function Sc(e){let[,t,n]=e.match(xc)??[];return t===void 0||n===void 0?null:{col:_c(t),rowNumber:parseInt(n,10)}}function Cc(e){let[t,n,...r]=e.split(`:`);if(t===void 0||n===void 0||r.length>0)return null;let i=Sc(t),a=Sc(n);return i&&a?{start:i,end:a}:null}function wc(e){let t=Cc(e.replace(/\$/g,``));if(!t)return[];let{start:n,end:r}=t,i=[];for(let e=n.rowNumber-1;e<=r.rowNumber-1;e++)for(let t=n.col;t<=r.col;t++)i.push({row:e,col:t});return i}function Tc(e){let t=e.trim().toUpperCase();if(t.includes(`:`)){let e=wc(t);return e.length>0?e:null}let n=Ec(t);return n?[n]:null}function Ec(e){let t=Sc(e.replace(/\$/g,``));return t?{col:t.col,row:t.rowNumber-1}:null}var Dc=/^\$?[A-Za-z]+\$?\d+$/;function Oc(e){let t=e.lastIndexOf(`!`),n=t>=0?e.slice(0,t+1):``,r=t>=0?e.slice(t+1):e,i=r.split(`:`).every(e=>Dc.test(e))?Cc(r.replace(/\$/g,``).toUpperCase()):null;if(!i)return null;let{start:a,end:o}=i;return{sheetPrefix:n,startCol:a.col,startRow:a.rowNumber,endCol:o.col,endRow:o.rowNumber}}var kc=0,Ac=1;function jc(e,t){let n=Math.trunc(e);return Number.isFinite(n)?n===kc?t===1?0:null:n<Ac||n>t?null:n-Ac:null}function Mc(e,t,n){let r=jc(t,e.endRow-e.startRow+1),i=jc(n,e.endCol-e.startCol+1);return r===null||i===null?null:{colIndex:e.startCol+i,row:e.startRow+r}}function Nc(e,t){let n=Math.trunc(e);return!Number.isFinite(n)||n<Ac||n>t?null:n-Ac}function Pc(e){let t=bc(e),n=[],r=new Set,i=e=>{let t=`${e.row},${e.col}`;r.has(t)||(r.add(t),n.push(e))};for(let e of t.match(vc)??[])for(let t of wc(e))i(t);let a=t.replace(vc,``);for(let e of a.match(yc)??[]){let t=Ec(e);t&&i(t)}return n}function Fc(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e!==0;if(S(e))return!1;let t=e.trim().toUpperCase();return t===`TRUE`||t===`1`}var Ic=(e,t)=>Array.from({length:Math.max(0,t-e+1)},(t,n)=>e+n),Lc=(e,t,n,r,i)=>Ic(r,i).map(r=>e.getCellValue(`${t}${n}${r}`)),Rc=(e,t,n,r,i)=>Ic(r,i).map(r=>e.getCellValue(`${t}${J(r)}${n}`)),zc=(e,t)=>e.reduce((e,n,r)=>t(n)?r:e,-1),Bc=(e,t)=>{let n=e.findIndex(e=>!t(e));return(n===-1?e.length:n)-1},Vc=(e,t)=>typeof e==`number`&&typeof t==`number`?e-t:String(e).localeCompare(String(t)),Hc=(e,t,n=1,r=1)=>{if(n===0){let n=typeof e==`string`&&(e.includes(`*`)||e.includes(`?`))?dt(e):t=>t==e;return r===1?t.findIndex(n):zc(t,n)}return n===1?Bc(t,t=>Vc(t,e)<=0):n===-1?Bc(t,t=>Vc(t,e)>=0):-1};A.register({name:`VLOOKUP`,handler:(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=Oc(O(t,e,1));if(!r)throw Error(`Invalid table array range`);let i=j(t.evaluateFormula(O(t,e,2))),a=+!!Fc(e.length!==4||t.evaluateFormula(O(t,e,3))),o=Nc(i,r.endCol-r.startCol+1);if(o===null)return Te;let s=J(r.startCol),c=Hc(n,Lc(t,r.sheetPrefix,s,r.startRow,r.endRow),a);if(c===-1)return x;let l=J(r.startCol+o),u=r.startRow+c;return t.getCellValue(`${r.sheetPrefix}${l}${u}`)},minArgs:3,maxArgs:4,description:`Looks for a value in the leftmost column of a table, and then returns a value in the same row from a column you specify`,examples:[`VLOOKUP(105, A2:C10, 2)`,`VLOOKUP("Smith", A2:E10, 5, FALSE)`],category:`Lookup & Reference`}),A.register({name:`HLOOKUP`,handler:(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=Oc(O(t,e,1));if(!r)throw Error(`Invalid range format`);let i=j(t.evaluateFormula(O(t,e,2))),a=+!!Fc(e.length!==4||t.evaluateFormula(O(t,e,3))),o=Nc(i,r.endRow-r.startRow+1);if(o===null)return Te;let s=Hc(n,Rc(t,r.sheetPrefix,r.startRow,r.startCol,r.endCol),a);if(s===-1)return x;let c=J(r.startCol+s),l=r.startRow+o;return t.getCellValue(`${r.sheetPrefix}${c}${l}`)},minArgs:3,maxArgs:4,description:`Looks for a value in the top row of a table, and then returns a value in the same column from a row you specify`,examples:[`HLOOKUP("Axles", A1:C10, 2, TRUE)`],category:`Lookup & Reference`}),A.register({name:`MATCH`,handler:(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=O(t,e,1),i=e.length===3?j(t.evaluateFormula(O(t,e,2))):1,a=Hc(n,nt(t)(r),i);return a===-1?x:a+1},minArgs:2,maxArgs:3,description:`Returns the relative position of an item in an array that matches a specified value`,examples:[`MATCH(25, A1:A10, 0)`,`MATCH("b", A1:A5, 0)`],category:`Lookup & Reference`}),A.register({name:`INDEX`,handler:(e,t)=>{let n=Oc(O(t,e,0));if(!n)throw Error(`Invalid range format`);let r=Mc(n,j(t.evaluateFormula(O(t,e,1))),e.length>=3?j(t.evaluateFormula(O(t,e,2))):1);return r?t.getCellValue(`${n.sheetPrefix}${J(r.colIndex)}${r.row}`):Te},minArgs:2,maxArgs:4,description:`Returns the value of an element in a table or an array, selected by the row and column number indexes`,examples:[`INDEX(A1:B5, 2, 2)`,`INDEX(A1:A10, 5)`],category:`Lookup & Reference`}),A.register({name:`XLOOKUP`,handler:(e,t)=>{let n=t.evaluateFormula(O(t,e,0)),r=O(t,e,1),i=O(t,e,2),a=e.length>=4?t.evaluateFormula(O(t,e,3)):x,o=e.length>=5?j(t.evaluateFormula(O(t,e,4))):0,s=e.length>=6?j(t.evaluateFormula(O(t,e,5))):1,c=nt(t),l=c(r),u=c(i),d=-1;if(o===0||o===2)d=Hc(n,l,0,s);else{let e=1/0;for(let t=0;t<l.length;t++){let r=s===1?t:l.length-1-t,i=l[r];if(i==n){d=r;break}if(typeof i==`number`&&typeof n==`number`){let t=i-n;o===-1&&t<0&&Math.abs(t)<e?(e=Math.abs(t),d=r):o===1&&t>0&&t<e&&(e=t,d=r)}}}if(d===-1)return a;let f=u[d];return f===void 0?x:f},minArgs:3,maxArgs:6,description:`Searches a range or an array, and returns an item corresponding to the first match it finds`,examples:[`XLOOKUP(A1, B1:B10, C1:C10)`,`XLOOKUP("USA", Countries, Populations)`],category:`Lookup & Reference`});var Uc=864e5,Y=12;function Wc(e,t){let n=e.getUTCMonth()+t,r=e.getUTCFullYear()+Math.floor(n/Y),i=(n%Y+Y)%Y,a=new Date(Date.UTC(r,i+1,0)).getUTCDate(),o=Math.min(e.getUTCDate(),a);return new Date(Date.UTC(r,i,o))}function Gc(e,t,n){if(e>t)return b;let r=E(e),i=E(t),a=i.getUTCFullYear()-r.getUTCFullYear(),o=i.getUTCMonth()-r.getUTCMonth(),s=i.getUTCDate()-r.getUTCDate();switch(n.toUpperCase()){case`Y`:{let e=a;return o<0||o===0&&s<0?e-1:e}case`M`:{let e=a*Y+o;return s<0?e-1:e}case`D`:return Math.floor(t-e);case`MD`:{let e=Wc(r,a*Y+o-+(s<0)),t=Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate());return Math.round((t-e.getTime())/Uc)}case`YM`:{let e=s<0?o-1:o;return e<0?e+Y:e}case`YD`:{let e=new Date(r);return e.setUTCFullYear(i.getUTCFullYear()),e.getTime()-i.getTime()>0&&e.setUTCFullYear(i.getUTCFullYear()-1),Math.floor((i.getTime()-e.getTime())/Uc)}default:return b}}A.register({name:`NOW`,handler:()=>{let e=new Date;return T(new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())))},minArgs:0,maxArgs:0,description:`Returns the serial number of the current date and time`,examples:[`NOW()`],category:`Date & Time`}),A.register({name:`TODAY`,handler:()=>{let e=new Date;return T(new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())))},minArgs:0,maxArgs:0,description:`Returns the serial number of today's date`,examples:[`TODAY()`],category:`Date & Time`}),A.register({name:`DATE`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0))),r=j(t.evaluateFormula(O(t,e,1))),i=j(t.evaluateFormula(O(t,e,2)));return T(new Date(Date.UTC(n,r-1,i)))},minArgs:3,maxArgs:3,description:`Returns the serial number that represents a particular date`,examples:[`DATE(2023, 11, 25)`],category:`Date & Time`}),A.register({name:`TIME`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0))),r=j(t.evaluateFormula(O(t,e,1))),i=j(t.evaluateFormula(O(t,e,2))),a=n*3600+r*60+i,o=86400;return a%o/o},minArgs:3,maxArgs:3,description:`Returns the serial number of a particular time`,examples:[`TIME(14, 30, 0)`],category:`Date & Time`}),A.register({name:`YEAR`,handler:(e,t)=>E(j(t.evaluateFormula(O(t,e,0)))).getUTCFullYear(),minArgs:1,maxArgs:1,description:`Converts a serial number to a year`,examples:[`YEAR(TODAY())`,`YEAR(A1)`],category:`Date & Time`}),A.register({name:`MONTH`,handler:(e,t)=>E(j(t.evaluateFormula(O(t,e,0)))).getUTCMonth()+1,minArgs:1,maxArgs:1,description:`Converts a serial number to a month`,examples:[`MONTH(TODAY())`,`MONTH(A1)`],category:`Date & Time`}),A.register({name:`DAY`,handler:(e,t)=>E(j(t.evaluateFormula(O(t,e,0)))).getUTCDate(),minArgs:1,maxArgs:1,description:`Converts a serial number to a day of the month`,examples:[`DAY(TODAY())`,`DAY(A1)`],category:`Date & Time`}),A.register({name:`HOUR`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0))),r=n-Math.floor(n),i=Math.round(r*86400);return Math.floor(i/3600)},minArgs:1,maxArgs:1,description:`Converts a serial number to an hour`,examples:[`HOUR(NOW())`,`HOUR(A1)`],category:`Date & Time`}),A.register({name:`MINUTE`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0))),r=n-Math.floor(n),i=Math.round(r*86400);return Math.floor(i%3600/60)},minArgs:1,maxArgs:1,description:`Converts a serial number to a minute`,examples:[`MINUTE(NOW())`,`MINUTE(A1)`],category:`Date & Time`}),A.register({name:`SECOND`,handler:(e,t)=>{let n=j(t.evaluateFormula(O(t,e,0))),r=n-Math.floor(n);return Math.round(r*86400)%60},minArgs:1,maxArgs:1,description:`Converts a serial number to a second`,examples:[`SECOND(NOW())`,`SECOND(A1)`],category:`Date & Time`}),A.register({name:`DATEDIF`,handler:(e,t)=>Gc(j(t.evaluateFormula(O(t,e,0))),j(t.evaluateFormula(O(t,e,1))),at(t.evaluateFormula(O(t,e,2)))),minArgs:3,maxArgs:3,description:`Calculates the number of days, months, or years between two dates`,examples:[`DATEDIF(A1, B1, "Y")`,`DATEDIF(DATE(2020,1,1), TODAY(), "D")`],category:`Date & Time`});var X=7,Kc=5,qc=0,Jc=6,Yc=Jc,Z=e=>Math.floor(e),Q=e=>Number.isFinite(e)&&e>=0&&e<=2958465,Xc=e=>((Z(e)+Yc)%X+X)%X,Zc={1:0,2:1,11:1,12:2,13:3,14:4,15:5,16:6,17:0},Qc=3;function $c(e,t=1){if(!Q(e))return b;let n=Xc(e);if(t===Qc)return(n+X-1)%X;let r=Zc[t];return r===void 0?b:(n-r+X)%X+1}function el(e,t){return!Q(e)||!Q(t)?b:Z(e)-Z(t)}var tl=(e,t)=>new Date(Date.UTC(e,t+1,0)).getUTCDate(),nl=e=>Q(e)?e:b;function rl(e,t){if(!Q(e)||!Number.isFinite(t))return b;let n=E(Z(e)),r=n.getUTCFullYear(),i=n.getUTCMonth()+Math.trunc(t),a=Math.min(n.getUTCDate(),tl(r,i));return nl(T(new Date(Date.UTC(r,i,a))))}function il(e,t){if(!Q(e)||!Number.isFinite(t))return b;let n=E(Z(e));return nl(T(new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+Math.trunc(t)+1,0))))}var al=e=>{let t=Xc(e);return t!==qc&&t!==Jc},ol=e=>new Set(e.map(Z));function sl(e,t,n=[]){if(!Q(e)||!Number.isFinite(t))return b;let r=ol(n),i=Math.sign(t),a={date:Z(e),left:Math.abs(Math.trunc(t))};for(;a.left>0;){if(a.date+=i,!Q(a.date))return b;al(a.date)&&!r.has(a.date)&&--a.left}return a.date}function cl(e,t){let n=t-e+1,r=Math.floor(n/X),i=Array.from({length:n%X},(t,n)=>e+r*X+n);return r*Kc+i.filter(al).length}function ll(e,t,n=[]){if(!Q(e)||!Q(t))return b;let[r,i]=[Z(e),Z(t)],[a,o]=r<=i?[r,i]:[i,r],s=[...ol(n)].filter(e=>e>=a&&e<=o&&al(e)).length,c=cl(a,o)-s;return r<=i?c:-c}var $=(e,t,n)=>w(t.evaluateFormula(O(t,e,n))),ul=e=>e.find(S)??e.filter(e=>typeof e==`number`);function dl(e,t,n){if(e.length<=n)return[];let r=nt(t)(O(t,e,n));return r.length===0?ul([$(e,t,n)]):r.find(S)??r.filter(C).map(j)}var fl=(e,t)=>{let n=ul([$(e,t,0),e.length>1?$(e,t,1):1]);if(S(n))return n;let[r=0,i=1]=n;return $c(r,i)},pl=e=>(t,n)=>{let r=ul([$(t,n,0),$(t,n,1)]);if(S(r))return r;let[i=0,a=0]=r;return e(i,a)},ml=e=>(t,n)=>{let r=ul([$(t,n,0),$(t,n,1)]);if(S(r))return r;let i=dl(t,n,2);if(S(i))return i;let[a=0,o=0]=r;return e(a,o,i)};[{name:`WEEKDAY`,handler:fl,minArgs:1,maxArgs:2,description:`Returns the day of the week (1 = Sunday by default)`,examples:[`WEEKDAY(A2)`,`WEEKDAY(A2, 2)`]},{name:`DAYS`,handler:pl(el),minArgs:2,maxArgs:2,description:`Returns the number of days between two dates`,examples:[`DAYS(B2, A2)`]},{name:`EDATE`,handler:pl(rl),minArgs:2,maxArgs:2,description:`Returns the date a number of months before or after a date`,examples:[`EDATE(A2, 1)`]},{name:`EOMONTH`,handler:pl(il),minArgs:2,maxArgs:2,description:`Returns the last day of the month a number of months away`,examples:[`EOMONTH(A2, 0)`]},{name:`WORKDAY`,handler:ml(sl),minArgs:2,maxArgs:3,description:`Returns the date a number of working days away, skipping weekends and holidays`,examples:[`WORKDAY(A2, 10)`,`WORKDAY(A2, 10, H2:H5)`]},{name:`NETWORKDAYS`,handler:ml(ll),minArgs:2,maxArgs:3,description:`Returns the number of working days between two dates, both included`,examples:[`NETWORKDAYS(A2, B2)`,`NETWORKDAYS(A2, B2, H2:H5)`]}].forEach(e=>A.register({...e,category:`Date & Time`})),Object.entries({"PERCENTILE.INC":`PERCENTILE`,"QUARTILE.INC":`QUARTILE`,"STDEV.S":`STDEV`,"STDEV.P":`STDEVP`,"VAR.S":`VAR`,"VAR.P":`VARP`,"RANK.EQ":`RANK`,TTEST:`T.TEST`,PERCENTRANK:`PERCENTRANK.INC`,FORECAST:`FORECAST.LINEAR`,PEARSON:`CORREL`}).forEach(([e,t])=>{let n=A.get(t);if(!n)throw Error(`alias ${e} names ${t}, which is not registered`);A.register({...n,name:e,description:`Same as ${t}`,examples:[]})});var hl=RegExp(`^${rt}$`,`i`),gl=/^[A-Za-z_$][\w$]*$/,_l=32,vl=e=>typeof e==`object`&&!!e&&!Array.isArray(e),yl=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),bl=e=>vl(e)&&typeof e.name==`string`&&typeof e.body==`string`&&yl(e.params)&&(e.description===void 0||typeof e.description==`string`);function xl(e){return Array.isArray(e)?e.filter(bl):[]}function Sl(e,t){if(!hl.test(e.name))return`a name is letters and digits, parts joined by dots (MOVING.AVG)`;if(t(e.name))return`${e.name.toUpperCase()} is a built-in function`;if(e.params.length>_l)return`at most ${_l} parameters`;let n=e.params.find(e=>!gl.test(e));return n===void 0?new Set(e.params).size===e.params.length?null:`a parameter is named twice`:`"${n}" is not a parameter name`}function Cl(e,t){let n=new Map,r=[];return e.forEach(e=>{let i=e.name.toUpperCase(),a=n.has(i)?`${i} is defined twice`:Sl(e,t);a?r.push({name:e.name,reason:a}):n.set(i,e)}),{usable:n,problems:r}}var wl=e=>`Function(${[...e.params,`"use strict";\n${e.body}`].map(e=>JSON.stringify(e)).join(`, `)})`,Tl=50,El=2e3,Dl=16777216,Ol=1048576,kl=1e5,Al=`(fn, args) => fn(...JSON.parse(args))`,jl=`(?:(?:'(?:[^']|'')+'|[^!'"(),]+)!)?`,Ml=RegExp(`^${jl}\\$?[A-Z]+\\$?\\d+:\\$?[A-Z]+\\$?\\d+$`,`i`),Nl=RegExp(`^${jl}\\$?[A-Z]+\\$?\\d+$`,`i`),Pl=null,Fl=async()=>(Pl??=import(`@jitl/quickjs-singlefile-mjs-release-sync`).then(e=>e.default,e=>{throw Pl=null,e}),(0,t.newQuickJSWASMModuleFromVariant)(await Pl)),Il=()=>void 0,Ll={definitions:new Map,problems:[],startCalculation:Il,dispose:Il};function Rl(e,t){return e.startCalculation(),A.withOverlay(e.definitions,t)}async function zl(e){let{usable:t,problems:n}=Cl(e.flatMap(e=>xl(e.functions)),e=>A.isBuiltIn(e));return t.size===0?{...Ll,problems:n}:Bl(await Fl(),t,n)}function Bl(e,t,n){let r=e.newRuntime();r.setMemoryLimit(Dl),r.setMaxStackSize(Ol);let i={calculationStart:Date.now()},a=[],o=new Map;return t.forEach((e,t)=>{let s=r.newContext(),c=[];a.push({vm:s,handles:c});let l=Wl(r,Date.now()+Tl,()=>{let t=s.evalCode(wl(e));return t.error?{error:Vl(s,t.error)||`it stopped while loading`}:{fn:t.value}});if(`error`in l){n.push({name:e.name,reason:`does not compile: ${l.error}`});return}let u=s.unwrapResult(s.evalCode(Al));c.push(l.fn,u);let d={vm:s,runtime:r,caller:u,fn:l.fn};o.set(t,ql(e,e=>Hl(d,e,i.calculationStart)))}),{definitions:o,problems:n,startCalculation:()=>i.calculationStart=Date.now(),dispose:()=>{try{a.forEach(({vm:e,handles:t})=>{t.forEach(e=>e.dispose()),e.dispose()}),r.dispose()}catch{}}}}function Vl(e,t){try{let n=e.getProp(t,`message`),r=e.typeof(n)===`string`?e.getString(n):``;return n.dispose(),r}catch{return``}finally{t.dispose()}}function Hl({vm:e,runtime:t,caller:n,fn:r},i,a){let o=Math.min(Date.now()+Tl,a+El);return Date.now()>=o?b:Wl(t,o,()=>{let t=e.newString(i),a=e.callFunction(n,e.undefined,r,t);if(t.dispose(),a.error)return Vl(e,a.error)===Ul?b:y;let o=Gl(e,a.value);return a.value.dispose(),o})}var Ul=`interrupted`;function Wl(e,n,r){e.setInterruptHandler((0,t.shouldInterruptAfterDeadline)(n));try{return r()}finally{e.removeInterruptHandler()}}function Gl(e,t){let n=e.typeof(t);return n===`number`?Kl(e.getNumber(t)):n===`string`?e.getString(t):n===`boolean`?Kl(e.dump(t)):y}function Kl(e){return typeof e==`number`?Number.isFinite(e)?e:b:typeof e==`string`||typeof e==`boolean`?e:y}function ql(e,t){let n=e.description??`Defined in this workbook (${e.params.join(`, `)})`;return{name:e.name.toUpperCase(),minArgs:e.params.length,maxArgs:e.params.length,description:n,category:`Workbook`,handler:(e,n)=>{let r=e.map(e=>Yl(e.trim(),n));return r.find(S)??t(JSON.stringify(r))}}}var Jl=e=>S(e)?e:e===``?null:e;function Yl(e,t){return Ml.test(e)?Zl(e,t):Nl.test(e)?Jl(Xl(t)(e)[0]??``):Jl(t.evaluateFormula(e))}var Xl=e=>e.getRangeValuesKeepingBlanks??e.getRangeValuesRaw??e.getRangeValues;function Zl(e,t){let n=e.lastIndexOf(`!`),r=n>=0?e.slice(0,n+1):``,i=Tc(e.slice(n+1))??[];if(i.length>kl)return y;let a=Xl(t),o=new Map;for(let{row:e,col:t}of i){let n=Jl(a(`${r}${J(t)}${e+1}`)[0]??``);if(S(n))return n;o.set(e,[...o.get(e)??[],n])}return Array.from(o.values())}function Ql(e){if(e==null)return!0;if(typeof e==`string`)return e.trim()===``;if(o(e)){if(!(`v`in e))return!0;let t=e.v;return t==null||typeof t==`string`&&t.trim()===``}return!1}function $l(e){return!S(e)&&Ql(e)}var eu=36e3,tu=63499,nu=e=>a(e)&&`v`in e,ru=e=>typeof e==`number`&&Number.isInteger(e)&&e>=eu&&e<=tu,iu=(e,t,n,r)=>{if(S(t))return t.code;if(!nu(e)||typeof t!=`number`)return t;let i=typeof e.f==`string`?e.f:``;return i?os(t,i):typeof e.v==`string`&&e.v.startsWith(`=`)&&r&&ru(t)?os(t,n?`DD/MM/YYYY`:`MM/DD/YYYY`):t},au=new Set([`DATE`,`TODAY`,`EDATE`,`EOMONTH`,`WORKDAY`]),ou=/^[\s(+-]*([A-Z][A-Z0-9]*(?:\.[A-Z0-9]+)*)\s*\(/i;function su(e){let t=ou.exec(e)?.[1];return t===void 0?null:t.toUpperCase()}function cu(e,t,n,r=new Set){let i=e.replace(/^=/,``),a=su(i);if(a!==null&&au.has(a))return!0;let o=Vo(i)[0]?.ref,s=o===void 0?null:n(o,t);if(s===null||o===void 0)return!1;if(es(s.format))return!0;let c=`${s.sheet}!${o.replace(/^.*!/,``).replace(/\$/g,``).toUpperCase()}`;return s.formula===null||r.has(c)?!1:cu(s.formula,s.sheet,n,new Set([...r,c]))}var lu=String.raw`(?:'((?:[^']|'')+)'|([A-Za-z_][\w.]*))!`,uu=String.raw`[(,+\-*/^&=<>\s]`,du=String.raw`[),+\-*/^&=<>\s]`,fu=new RegExp(String.raw`(?<=^|${uu})(?:${lu})?(?:(\$?[A-Za-z]{1,3}):(\$?[A-Za-z]{1,3})|(\$?\d+):(\$?\d+))(?=$|${du})`,`g`),pu=e=>e.replace(`$`,``).toUpperCase(),mu=([e,t],n)=>{let r=[pu(e),pu(t)];return n(r[0])<=n(r[1])?r:[r[1],r[0]]};function hu({whole:e,sheetName:t,columns:n,rows:r},i){let a=i(t);if(!a)return null;let o=e.slice(0,e.lastIndexOf(`!`)+1),s=Math.max(a.rows,1);if(n){let[e,t]=mu(n,_c);return`${o}${e}1:${t}${s}`}let c=J(Math.max(a.columns,1)-1),[l,u]=mu(r??[`1`,`1`],Number);return`${o}A${l}:${c}${u}`}function gu(e,t){return e.replace(fu,(e,n,r,i,a,o,s)=>hu({whole:e,sheetName:n?.replace(/''/g,`'`)??r??null,columns:i&&a?[i,a]:void 0,rows:o&&s?[o,s]:void 0},t)??e)}function _u(e,t){return e.split(/("(?:[^"]|"")*(?:"|$))/).map((e,n)=>n%2==1?e:gu(e,t)).join(``)}function vu(e){return(t,n)=>{let r=ao(t),i=r?.sheetName??n,a=Ec(r?.ref??t),s=a?e.find(e=>e.name===i)?.data[a.row]?.[a.col]:void 0;if(!o(s))return null;let c=typeof s.v==`string`&&s.v.startsWith(`=`)?s.v:null;return{format:typeof s.f==`string`?s.f:``,formula:c,sheet:i}}}function yu(e){if(!e||!Array.isArray(e)||e.length===0)return[];if(Array.isArray(e[0]))return e;if(o(e[0])){let t=[];for(let n=0;n<e.length;n+=2){let r=[e[n]];n+1<e.length&&r.push(e[n+1]),t.push(r)}return t}return console.warn(`Unknown data structure in spreadsheet, returning empty:`,e),[]}function bu(e,t){return e.map(e=>e.map(e=>{if(!o(e)||!(`v`in e))return e;let n=e.v;if(typeof n==`string`&&!n.startsWith(`=`)){let r=Je(n,t);if(r!==null)return{v:r,f:e.f||et(n,t)}}return e}))}function xu(e,t,n={}){return Su(e,t,n,new Map).finish()}function Su(e,t,n,r){let i=n.preferDDMMYYYY??!1,s=n.skipFormatting??!1,l=bu(yu(e.data),i),u=t?.map(e=>({...e,data:bu(yu(e.data),i)})),d=l,f=e.name,p=[],m=[],h=d.map(e=>[...e]),ee=new Set,g=new Set,te=e=>{let t=e===null||e===f?d:u?.find(t=>t.name===e)?.data;return t?{rows:t.length,columns:t.reduce((e,t)=>Math.max(e,t.length),0)}:null},ne=(e,{cells:t,row:n,col:r})=>{let i=`${n},${r}`;if(ee.has(i))return p.push({cell:{row:n,col:r},formula:e,error:`Circular reference detected`,type:`circular`}),0;if(g.has(i))return t[r];ee.add(i);try{let n=me(_u(e.substring(1),te));return t[r]=n,n}catch(i){let{type:a,display:o}=bo(i);p.push({cell:{row:n,col:r},formula:e,error:c(i),type:a});let s=Oe(o);return t[r]=s,s}finally{ee.delete(i),g.add(i)}},re=(e,t)=>{if(e==null)return 0;if(S(e)||typeof e==`number`)return e;if(typeof e==`string`){if(e.trim()===``)return 0;if(e.includes(`%`)){let t=e.replace(`%`,``).trim(),n=parseFloat(t);return isNaN(n)?0:n/100}if(e.includes(`$`)){let t=e.replace(/[$,]/g,``).trim(),n=parseFloat(t);return isNaN(n)?0:n}if(e.includes(`,`)){let t=e.replace(/,/g,``).trim(),n=parseFloat(t);return isNaN(n)?0:n}let t=parseFloat(e);return isNaN(t)?e:t}if(o(e)){let n=`v`in e?e.v:void 0;return typeof n==`string`&&n.startsWith(`=`)?t?ne(n,t):0:re(n)}let n=parseFloat(e);return isNaN(n)?e:n},ie=e=>{let t=ao(e);if(!t)return{sheetData:h,ref:e,read:re};let n=r.get(t.sheetName)??ae(t.sheetName);return n?{sheetData:n.calculated,ref:t.ref,read:n.read}:null},ae=e=>{let t=u?.find(t=>t.name===e);return!t||!t.data?null:(Su(t,u,{preferDDMMYYYY:i,skipFormatting:!0},r),r.get(e)??null)},oe=e=>{let t=ie(e);if(!t)throw go(e);let{sheetData:n,ref:r,read:i}=t,a=Ec(r);if(!a)return null;let{row:o,col:s}=a,c=o>=0?n[o]:void 0;return!c||s<0||s>=c.length?null:{cell:c[s],position:{cells:c,row:o,col:s},read:i}},se=e=>{let t=oe(e);return t?t.read(t.cell,t.position):0},ce=e=>{let t=oe(e);if(t===null)return!0;let{cell:n,position:r,read:i}=t,o=a(n)?n.v:void 0;return $l(typeof o==`string`&&o.startsWith(`=`)?i(n,r):n)},le=(e,t)=>{let n=ie(e);if(!n)return[];let{sheetData:r,ref:i,read:a}=n,o=Tc(i);if(!o)return[];let s=[];for(let{row:e,col:n}of o){let i=e>=0?r[e]:void 0,o=i&&n>=0?i[n]:void 0,c=a(o,i?{cells:i,row:e,col:n}:void 0);if(t.numericOnly)!Ql(o)&&Fe(c)&&s.push(c);else{let e=Ql(o)&&!S(o);s.push(t.keepBlanks&&e?``:c)}}return s},ue=e=>le(e,{numericOnly:!0}),de=e=>le(e,{numericOnly:!1}),fe=e=>le(e,{numericOnly:!1,keepBlanks:!0}),pe=e=>{let t=ie(e),n=t?Tc(t.ref):null;if(!t||!n)return 0;let r=ao(e)?.sheetName??f,i=r===f?d:u?.find(e=>e.name===r)?.data;return i?n.filter(({row:e,col:t})=>{let n=i[e]?.[t];return n!==void 0&&!Ql(n)}).length:0},me=e=>$o(e,{getCellValue:se,getRangeValues:ue,getRangeValuesRaw:de,getRangeValuesKeepingBlanks:fe,countFilledCells:pe,evaluateFormula:me,preferDDMMYYYY:i,isCellEmpty:ce}),he=(e,t)=>{if(!o(e)||!(`v`in e))return;let n=e.v;if(typeof n!=`string`||!n.startsWith(`=`)){t.cells[t.col]=n;return}let r={cell:{row:t.row,col:t.col},formula:n,dependencies:[],result:0};m.push(r),r.result=ne(n,t),t.cells[t.col]=r.result},ge=e=>{d.forEach((t,n)=>{let r=h[n];r&&t.forEach((t,i)=>e(t,{cells:r,row:n,col:i}))})};return r.set(f,{calculated:h,read:re}),{finish:()=>{if(ge(he),!s){let e=vu([{name:f,data:d},...(u??[]).filter(e=>e.name!==f)]);ge((t,{cells:n,col:r})=>{let a=o(t)&&typeof t.v==`string`?t.v:``,s=a.startsWith(`=`)&&cu(a,f,e);n[r]=iu(t,n[r],i,s)})}return{name:f,data:h,formulas:m,errors:p}}}}function Cu(e,t={}){return e.map(n=>xu(n,e,t))}var wu=RegExp(`^[-+]?\\s*(${rt})\\s*\\(`,`i`),Tu=e=>{let t=e.match(wu)?.[1];return t!==void 0&&it(t)},Eu=/[A-Z]+\d+\s*[+\-*/^]/,Du=/\d+\s*[+\-*/^]\s*\d+/,Ou=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?$/;function ku(e){return Tu(e)||Eu.test(e)||Du.test(e)}function Au(e){let t=e.trim();return t===``?``:ku(t)?`=${t}`:Ou.test(t)?Number(t):t}function ju(e){if(e.type===`string`)return{v:String(e.value)};let t={v:Au(e.formula??``)};return e.format&&e.format.length>0&&(t.f=e.format),t}var Mu=class{options;constructor(e={}){this.options={maxIterations:e.maxIterations??100,enableCrossSheetRefs:e.enableCrossSheetRefs??!0,strictMode:e.strictMode??!1,preferDDMMYYYY:e.preferDDMMYYYY??!1}}calculate(e,t){return xu(e,t,{preferDDMMYYYY:this.options.preferDDMMYYYY})}calculateWorkbook(e){return Cu(e,{preferDDMMYYYY:this.options.preferDDMMYYYY})}getOptions(){return{...this.options}}setOptions(e){this.options={...this.options,...e}}createSheet(e,t){return{name:e,data:t.map(e=>e.map(e=>o(e)&&`v`in e?e:{v:e}))}}toStringArray(e){return e.data.map(e=>e.map(e=>String(e??``)))}},Nu=e=>e.length>80?`${e.slice(0,80)}…`:e,Pu=e=>{let t=typeof e==`object`&&e&&`v`in e?e.v:e;return typeof t==`string`&&t.startsWith(`=`)?t:null};function Fu(e,t=Ll){let n=e.map(e=>({name:e.name,data:yu(e.data)})),r=Rl(t,()=>n.map(e=>xu(e,n,{skipFormatting:!0}))).flatMap((t,n)=>t.data.flatMap((t,r)=>t.flatMap((t,i)=>{let a=Pu(e[n]?.data[r]?.[i]);return a===null||!S(t)?[]:[`${e[n]?.name??``}!${J(i)}${r+1} = ${t.code} (${Nu(a)})`]})));return{count:r.length,samples:r.slice(0,5)}}function Iu({count:e,samples:t}){if(e===0)return``;let n=e>t.length?`, and ${e-t.length} more`:``;return` ${e} formula cell(s) calculate to an error; fix any that are not meant to be errors before telling the user the spreadsheet is ready: ${t.join(`; `)}${n}.`}function Lu(e){if(typeof e!=`string`)return e;try{let t=JSON.parse(e);return console.warn(`Sheets was provided as a string and has been parsed to an array`),t}catch(e){throw Error(`Invalid sheets format: sheets must be an array, not a string. Parse error: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}function Ru(e){if(!Array.isArray(e)||e.length===0)throw Error(`At least one sheet is required. Sheets must be an array of sheet objects.`);e.forEach(e=>{if(!e.name||!e.data||e.data.length===0)throw Error(`Invalid sheet: ${e.name||`unnamed`}. Each sheet must have a name and data array.`)})}async function zu(e){let t=await zl(e);try{return(t.problems.length===0?``:` These functions could not be used and calls to them show #NAME?: ${t.problems.slice(0,5).map(({name:e,reason:t})=>`${e} (${t})`).join(`; `)}.`)+Iu(Fu(e,t))}finally{t.dispose()}}var Bu=async(e,t)=>{let{title:n}=t,r=Lu(t.sheets);Ru(r);let i=`Acknowledge that the spreadsheet has been created and is displayed to the user.`,a=await zu(r),o=me(e);if(!o)return{message:`Created spreadsheet: ${n}${a}`,title:n,data:{sheets:r},instructions:i};let{relPath:s,filePath:c}=h();return await o.write(s,JSON.stringify(r)),{message:`Created spreadsheet: ${n}. Saved to ${c}; the user can edit cells there, so read that file for the current values.${a}`,title:n,data:{sheets:c},instructions:i}};async function Vu(e,t){if(!(`kind`in t))return Bu(e,t);let n=me(e);if(!n)throw Error(`This host does not provide files.artifacts, so spreadsheets cannot be loaded or saved`);if(!fe(t))throw Error(`Invalid spreadsheet dispatch`);return Se(n,t)}var Hu={toolDefinition:r,execute:Vu,generatingMessage:`Creating spreadsheet...`,waitingMessage:`Tell the user that the spreadsheet was created and will be presented shortly.`,isEnabled:()=>!0,systemPrompt:i},Uu=[{name:`Simple Budget`,args:{title:`Monthly Budget`,sheets:[{name:`Budget`,data:[[{v:`Category`},{v:`Amount`}],[{v:`Income`},{v:5e3,f:`$#,##0.00`}],[{v:`Rent`},{v:-1500,f:`$#,##0.00`}],[{v:`Utilities`},{v:-200,f:`$#,##0.00`}],[{v:`Food`},{v:-600,f:`$#,##0.00`}],[{v:`Transport`},{v:-300,f:`$#,##0.00`}],[{v:`Total`},{v:`=SUM(B2:B6)`,f:`$#,##0.00`}]]}]}},{name:`Sales Report`,args:{title:`Q1 Sales Report`,sheets:[{name:`Sales`,data:[[{v:`Product`},{v:`Jan`},{v:`Feb`},{v:`Mar`},{v:`Total`}],[{v:`Widget A`},{v:1200},{v:1350},{v:1500},{v:`=SUM(B2:D2)`}],[{v:`Widget B`},{v:800},{v:920},{v:1100},{v:`=SUM(B3:D3)`}],[{v:`Widget C`},{v:450},{v:480},{v:520},{v:`=SUM(B4:D4)`}],[{v:`Total`},{v:`=SUM(B2:B4)`},{v:`=SUM(C2:C4)`},{v:`=SUM(D2:D4)`},{v:`=SUM(E2:E4)`}]]}]}},{name:`Loan Calculator`,args:{title:`Loan Calculator`,sheets:[{name:`Calculator`,data:[[{v:`Loan Amount`},{v:25e4,f:`$#,##0`}],[{v:`Interest Rate`},{v:.065,f:`0.00%`}],[{v:`Term (Years)`},{v:30}],[{v:``},{v:``}],[{v:`Monthly Payment`},{v:`=PMT(B2/12, B3*12, -B1)`,f:`$#,##0.00`}],[{v:`Total Interest`},{v:`=B5*B3*12-B1`,f:`$#,##0.00`}]]}]}},{name:`World Population`,args:{title:`世界人口(上位10)`,sheets:[{name:`世界人口(上位10)`,data:[[{v:`順位`},{v:`国・地域`},{v:`人口(概数)`,f:`#,##0`},{v:`上位10合計に占める割合`},{v:`世界人口に占める割合`}],[{v:1,f:`#,##0`},{v:`インド`},{v:1428627e3,f:`#,##0`},{v:`=C2/$C$12`,f:`0.00%`},{v:`=C2/$C$13`,f:`0.00%`}],[{v:2,f:`#,##0`},{v:`中国`},{v:1425671e3,f:`#,##0`},{v:`=C3/$C$12`,f:`0.00%`},{v:`=C3/$C$13`,f:`0.00%`}],[{v:3,f:`#,##0`},{v:`アメリカ合衆国`},{v:334e6,f:`#,##0`},{v:`=C4/$C$12`,f:`0.00%`},{v:`=C4/$C$13`,f:`0.00%`}],[{v:4,f:`#,##0`},{v:`インドネシア`},{v:277e6,f:`#,##0`},{v:`=C5/$C$12`,f:`0.00%`},{v:`=C5/$C$13`,f:`0.00%`}],[{v:5,f:`#,##0`},{v:`パキスタン`},{v:24e7,f:`#,##0`},{v:`=C6/$C$12`,f:`0.00%`},{v:`=C6/$C$13`,f:`0.00%`}],[{v:6,f:`#,##0`},{v:`ナイジェリア`},{v:219e6,f:`#,##0`},{v:`=C7/$C$12`,f:`0.00%`},{v:`=C7/$C$13`,f:`0.00%`}],[{v:7,f:`#,##0`},{v:`ブラジル`},{v:216e6,f:`#,##0`},{v:`=C8/$C$12`,f:`0.00%`},{v:`=C8/$C$13`,f:`0.00%`}],[{v:8,f:`#,##0`},{v:`バングラデシュ`},{v:172e6,f:`#,##0`},{v:`=C9/$C$12`,f:`0.00%`},{v:`=C9/$C$13`,f:`0.00%`}],[{v:9,f:`#,##0`},{v:`ロシア`},{v:146e6,f:`#,##0`},{v:`=C10/$C$12`,f:`0.00%`},{v:`=C10/$C$13`,f:`0.00%`}],[{v:10,f:`#,##0`},{v:`メキシコ`},{v:13e7,f:`#,##0`},{v:`=C11/$C$12`,f:`0.00%`},{v:`=C11/$C$13`,f:`0.00%`}],[{v:``},{v:`合計(上位10)`},{v:`=SUM(C2:C11)`,f:`#,##0`},{v:``},{v:``}],[{v:``},{v:`世界推定人口(例)`},{v:805e7,f:`#,##0`},{v:``},{v:``}]]}]}}];Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return ju}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Ll}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Pc}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Oc}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Mu}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Rl}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Bu}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return xu}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Ec}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Hu}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return yu}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Uu}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return zl}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return g}});
|