@malloydata/render 0.0.200-dev241012214927 → 0.0.200-dev241012235421
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/dist/module/index.mjs +11708 -11466
- package/dist/module/index.umd.js +250 -250
- package/dist/register/register.mjs +1 -1
- package/dist/register/register.umd.js +1 -1
- package/dist/webcomponent/malloy-render.mjs +1 -1
- package/dist/webcomponent/malloy-render.umd.js +1 -1
- package/package.json +2 -2
|
@@ -1323,7 +1323,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1323
1323
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof pu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return new Error(`INTERNAL ERROR IN TRANSLATION: ${e}`)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.logError("experiment-not-enabled",{experimentId:e}),!1)}}Ge.MalloyElement=pu;class nme extends pu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ge.Unimplemented=nme;class PO extends pu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ge.ModelEntryReference=PO;class rme extends pu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ge.ExperimentalExperiment=rme;function Qq(t){return t.execute!==void 0}Ge.isDocStatement=Qq;function ime(t){return t instanceof q1||Qq(t)}Ge.isDocStatementOrDocStatementList=ime;class Gq extends pu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ge.ListOf=Gq;class q1 extends Gq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Hq.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,Hq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof q1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ge.DocStatementList=q1;const sme="5a79a191-06bc-43cf-9b12-58741cd82970";function Wq(t){const e=t.inherits?Wq(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function ome(t){const e=Wq(t).join("");return(0,tme.v5)(e,sme)}class jO extends pu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new eme.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new Xge.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new q1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if((0,yv.modelObjIsSource)(i)||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=ome(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if((0,yv.modelObjIsSource)(r)||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,yv.modelObjIsSource)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,zq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,zq.getDialect)(e),r=new Zge.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Ge.Document=jO;var Ev={},Cd={},kr={},Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.canMakeEntry=Gl.SpaceEntry=void 0;class ume{}Gl.SpaceEntry=ume;function ame(t){return"makeEntry"in t}Gl.canMakeEntry=ame,Object.defineProperty(kr,"__esModule",{value:!0}),kr.SpaceField=void 0;const lme=Gl;class cme extends lme.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}kr.SpaceField=cme,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.ViewField=void 0;const fme=kr;class xme extends fme.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Cd.ViewField=xme,Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.ASTViewField=void 0;const dme=Cd;class hme extends dme.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}Ev.ASTViewField=hme,Object.defineProperty(U1,"__esModule",{value:!0}),U1.ViewFieldDeclaration=void 0;const pme=Ge,gme=Br,mme=Sd,yme=Ev;class Eme extends pme.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=gme.extendNoteMethod}makeEntry(e){const n=new yme.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,mme.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}U1.ViewFieldDeclaration=Eme;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var Vq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Vq||(En.QueryClass=Vq={}));var Yq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Yq||(En.LegalRefinementStage=Yq={})),Object.defineProperty(j1,"__esModule",{value:!0}),j1.NestFieldDeclaration=void 0;const Ame=Sd,vme=U1,Xq=En;class Sme extends vme.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Xq.LegalRefinementStage.Single,this.forceQueryClass=Xq.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,Ame.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}j1.NestFieldDeclaration=Sme;var bd={},Mr={};Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.ErrorFactory=void 0;const Kq="~malformed~";class UO{static get structDef(){return{type:"table",name:Kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:Kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:UO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Mr.ErrorFactory=UO,Object.defineProperty(bd,"__esModule",{value:!0}),bd.DefineSourceList=bd.DefineSource=void 0;const _me=Mr,Jq=Ge,Cme=Br;class bme extends Jq.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=Cme.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),_me.ErrorFactory.didCreate(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.logError("parameter-name-conflict",`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}bd.DefineSource=bme;class Tme extends Jq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}bd.DefineSourceList=Tme;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.DefineQueryList=Td.DefineQuery=void 0;const Zq=Ge,Rme=Br;class Ome extends Zq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Rme.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}Td.DefineQuery=Ome;class Dme extends Zq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Td.DefineQueryList=Dme;var xo={};Object.defineProperty(xo,"__esModule",{value:!0}),xo.Source=void 0;const Nme=Ge;class wme extends Nme.MalloyElement{structRef(e){return{structRef:this.getSourceDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.getSourceDef(e),parameters:this.packParameters(n)}}}xo.Source=wme;var z1={},Rd={},Av={},Wl={};Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.mergeFields=Wl.nameFromDef=void 0;function qO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Wl.nameFromDef=qO;function Fme(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>qO(i))),r=t.filter(i=>!n.has(qO(i)));return r.push(...e),r}Wl.mergeFields=Fme;var H1={},yr={},gu={};Object.defineProperty(gu,"__esModule",{value:!0}),gu.DefinedParameter=gu.AbstractParameter=gu.SpaceParam=void 0;const Lme=Gl;class zO extends Lme.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}gu.SpaceParam=zO;class Ime extends zO{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}gu.AbstractParameter=Ime;class $me extends zO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}gu.DefinedParameter=$me;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.StructSpaceFieldBase=void 0;const Bme=kr;class kme extends Bme.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}Od.StructSpaceFieldBase=kme;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.ColumnSpaceField=void 0;const Mme=kr;class Pme extends Mme.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}Q1.ColumnSpaceField=Pme;var vv={};Object.defineProperty(vv,"__esModule",{value:!0}),vv.IRViewField=void 0;const jme=Cd;class Ume extends jme.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}vv.IRViewField=Ume,Object.defineProperty(yr,"__esModule",{value:!0}),yr.StaticSourceSpace=yr.StructSpaceField=yr.StaticSpace=void 0;const qme=Vo,Sv=ce,zme=gu,Hme=kr,_v=Od,Qme=Q1,Gme=vv;class HO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,qme.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,Sv.isJoined)(e)?new ez(e,this.fromStruct.dialect):(0,Sv.isTurtleDef)(e)?new Gme.IRViewField(this,e):new Qme.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if((0,Sv.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new zme.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){const e={...this.fromStruct};return(0,Sv.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof Hme.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof _v.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof _v.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof _v.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}yr.StaticSpace=HO;class ez extends _v.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new HO(this.sourceDef)}}yr.StructSpaceField=ez;class Wme extends HO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}yr.StaticSourceSpace=Wme,Object.defineProperty(H1,"__esModule",{value:!0}),H1.JoinSpaceField=void 0;const Vme=yr;class Yme extends Vme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}H1.JoinSpaceField=Yme;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.ParameterSpace=void 0;const Xme=gu;class Kme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new Xme.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Dd.ParameterSpace=Kme;var Jme=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Zme=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),e3e=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Jme(e,t,n);return Zme(e,t),e};Object.defineProperty(Av,"__esModule",{value:!0}),Av.DynamicSpace=void 0;const t3e=e3e(ce),n3e=Wl,r3e=Mr,i3e=kr,s3e=H1,o3e=Cd,tz=gu,u3e=yr,a3e=Od,l3e=Dd;class c3e extends u3e.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new tz.AbstractParameter(n)));return this}parameterSpace(){return new l3e.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,n3e.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof tz.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof a3e.StructSpaceFieldBase?r.push([a,l]):l instanceof o3e.ViewField?i.push([a,l]):l instanceof i3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof s3e.JoinSpaceField){const l=a.join.structDef(u);r3e.ErrorFactory.didCreate(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&t3e.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}Av.DynamicSpace=c3e,Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.RefinedSpace=void 0;const f3e=Av,x3e=Gl;class QO extends f3e.DynamicSpace{static filteredFrom(e,n,r){const i=new QO(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,x3e.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}Rd.RefinedSpace=QO;var Vl={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.DefinitionList=void 0;const d3e=Ge,nz=Br;class h3e extends d3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,nz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,nz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}rs.DefinitionList=h3e,Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.DeclareFields=void 0;const p3e=rs,g3e=En;class m3e extends p3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=g3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Vl.DeclareFields=m3e;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Filter=ho.FilterElement=void 0;const rz=ce,iz=Ge,GO=En;class y3e extends iz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}ho.FilterElement=y3e;let E3e=class extends iz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=GO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?GO.LegalRefinementStage.Tail:GO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,rz.expressionIsAggregate)(i.expressionType),o=(0,rz.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ho.Filter=E3e;var Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.FieldListEdit=void 0;const A3e=Ge;class v3e extends A3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Nd.FieldListEdit=v3e;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.PrimaryKey=void 0;const S3e=Ge;class _3e extends S3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}wd.PrimaryKey=_3e;var Fd={};Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.Views=void 0;const C3e=rs;class b3e extends C3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Fd.Views=b3e;var Ld={};Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.TimezoneStatement=void 0;const T3e=Ge;class R3e extends T3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}Ld.TimezoneStatement=R3e;var Yl={};Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.ModelAnnotation=Yl.ObjectAnnotation=void 0;const O3e=Yo,D3e=Ge;class sz extends D3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Yl.ObjectAnnotation=sz;class N3e extends sz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=O3e.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}Yl.ModelAnnotation=N3e;var Xl={},Cv={};Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.RenameSpaceField=void 0;const w3e=kr;class F3e extends w3e.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}Cv.RenameSpaceField=F3e,Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Renames=Xl.RenameField=void 0;const L3e=Cv,oz=Ge,I3e=kr;class $3e extends oz.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof I3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new L3e.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}Xl.RenameField=$3e;class B3e extends oz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Xl.Renames=B3e;var Ni={};Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.JoinStatement=Ni.ExpressionJoin=Ni.KeyJoin=Ni.Join=void 0;const WO=ce,k3e=H1,M3e=rs,P3e=Ge,j3e=Br,uz=Mr,U3e=En;class VO extends P3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=j3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new k3e.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),uz.ErrorFactory.structDef)}}Ni.Join=VO;class q3e extends VO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e);if(!(0,WO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if((0,WO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Ni.KeyJoin=q3e;class z3e extends VO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),uz.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,WO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Ni.ExpressionJoin=z3e;class H3e extends M3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=U3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ni.JoinStatement=H3e,Object.defineProperty(z1,"__esModule",{value:!0}),z1.RefinedSource=void 0;const Q3e=ce,G3e=Rd,W3e=Vl,V3e=ho,Y3e=Nd,X3e=wd,K3e=Fd,J3e=xo,Z3e=Ld,eye=Yl,tye=Xl,nye=Dd,rye=Ni;class iye extends J3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof eye.ObjectAnnotation)continue;const g=m;if(m instanceof X3e.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof Y3e.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof W3e.DeclareFields||m instanceof rye.JoinStatement||m instanceof K3e.Views||m instanceof tye.Renames?o.push(...m.list):m instanceof V3e.Filter?u.push(m):m instanceof Z3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new nye.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=G3e.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,Q3e.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}z1.RefinedSource=iye;var mu={};Object.defineProperty(mu,"__esModule",{value:!0}),mu.SourceQueryElement=void 0;const sye=Ge;class YO extends sye.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof YO&&n.errored){e=!1;break}return e}}mu.SourceQueryElement=YO;var bv={},Yc={};Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.QuerySource=void 0;const oye=xo,uye=$y;class aye extends oye.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,uye.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Yc.QuerySource=aye;var Id={},G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.QueryBase=void 0;const lye=Sd,cye=Ge;class fye extends cye.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,lye.detectAndRemovePartialStages)(e.pipeline,this)}}}G1.QueryBase=fye,Object.defineProperty(Id,"__esModule",{value:!0}),Id.QueryArrow=void 0;const xye=ce,dye=xo,az=yr,hye=G1;class pye extends hye.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof dye.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,xye.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new az.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new az.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}Id.QueryArrow=pye,Object.defineProperty(bv,"__esModule",{value:!0}),bv.SQArrow=void 0;const gye=mu,mye=Yc,yye=Id;class Eye extends gye.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new yye.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new mye.QuerySource(e);return this.has({asSource:n}),n}}bv.SQArrow=Eye;var Tv={},$d={},is={};Object.defineProperty(is,"__esModule",{value:!0}),is.getStructFieldDef=is.getFinalStruct=is.opOutputStruct=void 0;const lz=Fl,Aye=dc,Rv=ce,cz=Mr;function fz(t,e,n){const r=cz.ErrorFactory.didCreate(e)||(0,Rv.structHasErrors)(e);(0,Rv.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Rv.segmentHasErrors)(n);if(!r&&!i)try{const s=Aye.Segment.nextStructDef(e,n);if((0,Rv.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
|
|
1324
1324
|
STRUCTDEF: ${(0,lz.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1325
1325
|
QUERY: ${(0,lz.inspect)(n,{breakLength:72,depth:1/0})}`)}return cz.ErrorFactory.structDef}is.opOutputStruct=fz;function vye(t,e,n){for(const r of n)e=fz(t,e,r);return e}is.getFinalStruct=vye;function Sye(t,e){return t.fields.find(n=>(n.as||n.name)===e)}is.getStructFieldDef=Sye,Object.defineProperty($d,"__esModule",{value:!0}),$d.QueryRefine=void 0;const _ye=yr,Cye=is,bye=G1;class Tye extends bye.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new _ye.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Cye.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}$d.QueryRefine=Tye;var W1={},Bd={},er={};Object.defineProperty(er,"__esModule",{value:!0}),er.timeResult=er.resolution=er.castDateToTimestamp=er.castTimestampToDate=er.castTo=er.timeOffset=void 0;const Rye=ce;function Oye(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}er.timeOffset=Oye;function Dye(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,Rye.isAtomicFieldType)(n)&&(i.srcType=n),i}er.castTo=Dye;function Nye(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}er.castTimestampToDate=Nye;function wye(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}er.castDateToTimestamp=wye;function Fye(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}er.resolution=Fye;function Lye(t,e){return e?{...t,timeframe:e}:t}er.timeResult=Lye;var Xc={},ot={},Zt={};Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.FT=void 0;const Iye=bi;function Kc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Er{static in(e,n){return e?n.find(i=>Er.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>Er.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,Iye.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}Zt.FT=Er,Er.nullT=Kc("null"),Er.numberT=Kc("number"),Er.stringT=Kc("string"),Er.dateT=Kc("date"),Er.timestampT=Kc("timestamp"),Er.boolT=Kc("boolean"),Er.anyAtomicT=[Er.numberT,Er.stringT,Er.dateT,Er.timestampT,Er.boolT],Er.aggregateBoolT=Kc("boolean","aggregate");var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.isGranularResult=void 0;function $ye(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}kd.isGranularResult=$ye;var po={};Object.defineProperty(po,"__esModule",{value:!0}),po.isComparison=po.isEquality=po.getExprNode=void 0;function Bye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}po.getExprNode=Bye;function xz(t){return t==="="||t==="!="||t==="~"||t==="!~"}po.isEquality=xz;function kye(t){return xz(t)||t===">="||t==="<="||t===">"||t==="<"}po.isComparison=kye,Object.defineProperty(ot,"__esModule",{value:!0}),ot.applyBinary=ot.getMorphicValue=ot.ExprDuration=ot.ExpressionDef=ot.ATNodeType=void 0;const An=ce,XO=Di,Jc=Zt,Ov=er,dz=kd,Mye=Ge,V1=po;class Pye extends Error{}var KO;(function(t){t[t.And=0]="And",t[t.Or=1]="Or",t[t.Value=2]="Value",t[t.Partial=3]="Partial"})(KO||(ot.ATNodeType=KO={}));class hz extends Mye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Jc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Jc.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${Jc.FT.inspect(n)}`),!1):!0}apply(e,n,r,i=!1){return yz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}atNodeType(){return KO.Value}atExpr(){return this}}ot.ExpressionDef=hz;class JO extends hz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Jc.FT.timestampT,Jc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Jc.FT.typeEq(s,Jc.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,XO.errorFor)("illegal unit expression");let o;if((0,dz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,Ov.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,Ov.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,Ov.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,Ov.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}ot.ExprDuration=JO;function pz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function jye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}ot.getMorphicValue=jye;function gz(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,V1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=pz(e,"timestamp"),a=pz(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function Uye(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function qye(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function zye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,V1.getExprNode)(n),a=Y1("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=X1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=gz(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=Uye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new Pye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=qye(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function Hye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Y1("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=X1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=gz(e,i,n,s)||{node:(0,V1.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function mz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Y1("number",i,s);if(o)return o;const u=X1(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,XO.errorFor)("numbers required")}function Qye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=X1(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=Y1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,dz.isGranularResult)(i))l=new JO(r,i.timeframe);else if(i.dataType==="date")l=new JO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return mz(t,e,n,r)}function yz(t,e,n,r){if((0,V1.isEquality)(n))return zye(t,e,n,r);if((0,V1.isComparison)(n))return Hye(t,e,n,r);if(n==="+"||n==="-")return Qye(t,e,n,r);if(n==="*")return mz(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=X1(e,i,r,s);if(o)return o;const u=Y1("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,XO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}ot.applyBinary=yz;function Y1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function X1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.ExprIdReference=void 0;const Gye=ce,Wye=ot;class Vye extends Wye.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,Gye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Xc.ExprIdReference=Vye,Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.NamedSource=void 0;const ZO=ce,Yye=xo,Xye=Mr,Kye=er,Ez=Ge,Jye=Xc,Zye=Dd;class eEe extends Yye.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof Ez.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Ez.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,ZO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof Jye.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new Zye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,ZO.isCastType)(f.type)&&(p=(0,Kye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,ZO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=Xye.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}Bd.NamedSource=eEe;var K1={},Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.QueryHeadStruct=void 0;const tEe=ce,nEe=xo,rEe=Bd;class iEe extends nEe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,tEe.refIsStructDef)(this.fromRef))return this.fromRef;const n=new rEe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}Dv.QueryHeadStruct=iEe,Object.defineProperty(K1,"__esModule",{value:!0}),K1.QueryReference=void 0;const eD=Mr,sEe=Ge,oEe=Dv,uEe=ce,aEe=is;class lEe extends sEe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:eD.ErrorFactory.structDef,outputStruct:eD.ErrorFactory.structDef,query:eD.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new oEe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,aEe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,uEe.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}K1.QueryReference=lEe,Object.defineProperty(W1,"__esModule",{value:!0}),W1.SQReference=void 0;const cEe=mu,fEe=Yc,xEe=Bd,Az=K1,vz=bi;class dEe extends cEe.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new Az.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,vz.modelObjIsSource)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new Az.QueryReference(this.ref);this.asSource=new fEe.QuerySource(n)}else if((0,vz.modelObjIsSource)(e))this.asSource=new xEe.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}W1.SQReference=dEe,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.SQRefine=void 0;const hEe=mu,pEe=Yc,gEe=$d,mEe=W1;class yEe extends hEe.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof mEe.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new gEe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new pEe.QuerySource(e);return this.has({queryAsSource:n}),n}}}Tv.SQRefine=yEe;var Nv={},J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.QueryRaw=void 0;const EEe=ce,AEe=Ge;class vEe extends AEe.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)},r=(0,EEe.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}J1.QueryRaw=vEe;var Z1={},wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.makeSQLSentence=void 0;const SEe=ce,_Ee=Nt;function CEe(t,e){return{name:`sql://${e}/${bEe(t)}`,connection:e,select:t}}wv.makeSQLSentence=CEe;function bEe(t){const e=t.map(n=>(0,SEe.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,_Ee.generateHash)(e.join(";"))}Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.SQLSource=void 0;const TEe=wv,REe=xo,Fv=Mr;class OEe extends REe.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,TEe.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.logError("invalid-connection-for-sql-source",`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}getSourceDef(){var e;if(!this.validateConnectionName())return Fv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),Fv.ErrorFactory.structDef;const r=this.sqlSentence();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.logError("invalid-sql-source","Invalid SQL, "+s.join(`
|
|
1326
|
-
`)),Fv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Fv.ErrorFactory.structDef}}Z1.SQLSource=OEe,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.SQSource=void 0;const DEe=mu,NEe=J1,wEe=Z1;class FEe extends DEe.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof wEe.SQLSource){const e=new NEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Nv.SQSource=FEe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.SQExtend=void 0;const LEe=z1,IEe=mu;class $Ee extends IEe.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new LEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Lv.SQExtend=$Ee;var Iv={},Oa={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.BinaryBoolean=void 0;const Sz=ce,BEe=Di,kEe=Zt,MEe=po,PEe=ot;class jEe extends PEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[kEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,MEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,BEe.errorFor)("logial required boolean")}}eg.BinaryBoolean=jEe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprLegacyIn=Oa.ExprEquality=Oa.ExprCompare=void 0;const _z=bi,Vt=Zt,UEe=ot,qEe=eg,zEe={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class Cz extends qEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=zEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Oa.ExprCompare=Cz;class HEe extends Cz{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}Oa.ExprEquality=HEe;class QEe extends UEe.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,_z.maxExpressionType)(i,u.expressionType),r=(0,_z.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}Oa.ExprLegacyIn=QEe;var tg={},Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprTime=void 0;const GEe=ce,WEe=ot;class tD extends WEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,GEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new tD(e,r,n.expressionType)}}Md.ExprTime=tD;var Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.Range=void 0;const bz=ce,VEe=Di,YEe=ot;class XEe extends YEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,bz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,bz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,VEe.errorFor)("a range is not a value")}}Kl.Range=XEe,Object.defineProperty(tg,"__esModule",{value:!0}),tg.ExprGranularTime=void 0;const Tz=ce,KEe=Di,Rz=Zt,Oz=er,JEe=ot,$v=Md,Dz=Kl;class ZEe extends JEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Rz.FT.timestampT,Rz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Tz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Tz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,KEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=$v.ExprTime.fromValue("timestamp",n),a=new $v.ExprTime("timestamp",(0,Oz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Dz.Range(u,a)}const i=new $v.ExprTime("date",n.value,n.expressionType),s=(0,Oz.timeOffset)("date",n.value,"+",r,this.units),o=new $v.ExprTime("date",s,n.expressionType);return new Dz.Range(i,o)}}tg.ExprGranularTime=ZEe,Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.Apply=void 0;const eAe=Oa,tAe=kd,Nz=tg;class nAe extends eAe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,tAe.isGranularResult)(r)&&(n=new Nz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Nz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Iv.Apply=nAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.BinaryNumeric=void 0;const rAe=Zt,iAe=ot;class sAe extends iAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[rAe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Pd.BinaryNumeric=sAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.Boolean=void 0;const oAe=ot,uAe=Zt;let aAe=class extends oAe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...uAe.FT.boolT,value:{node:this.value}}}};Bv.Boolean=aAe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const nD=ce,wz=Ge,lAe=Xc;class cAe extends wz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,nD.expressionIsAggregate)(n.expressionType)||((0,nD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof lAe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,nD.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=cAe;class fAe extends wz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Jl.FunctionOrdering=fAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprAddSub=void 0;const xAe=Pd;class dAe extends xAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}kv.ExprAddSub=dAe;var Da={},pt={},ng={};Object.defineProperty(ng,"__esModule",{value:!0}),ng.ReferenceField=void 0;const Fz=kr;class hAe extends Fz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Fz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}ng.ReferenceField=hAe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=bi;function pAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=pAe;function gAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=gAe;function mAe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=mAe;function yAe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=yAe;function EAe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=EAe;function AAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=AAe;function vAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=vAe;function SAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=SAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const _Ae=ng,CAe=rs,Lz=Ge,Iz=Br,Zl=Mn;class wi extends Lz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Iz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new _Ae.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=wi;class bAe extends wi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=bAe;class TAe extends wi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=TAe;class RAe extends wi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=RAe;class OAe extends wi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=OAe;class DAe extends wi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Zl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=DAe;class rD extends wi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Zl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return rD.indexOutputName(this.path)}}pt.IndexFieldReference=rD;class NAe extends wi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Zl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=NAe;class wAe extends wi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Zl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=wAe;class FAe extends wi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Zl.typecheckProject)(e,this)}}pt.ProjectFieldReference=FAe;class LAe extends wi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Zl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=LAe;class IAe extends wi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Zl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=IAe;class $Ae extends wi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Zl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=$Ae;class BAe extends wi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=BAe;class kAe extends Lz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Iz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=kAe;class MAe extends CAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=MAe,Object.defineProperty(Da,"__esModule",{value:!0}),Da.ExprAggregateFunction=void 0;const rg=ce,PAe=Nt,jAe=Di,$z=yr,UAe=Zt,qAe=pt,zAe=ot,HAe=kr,QAe=Xc;class GAe extends zAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[UAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof $z.StructSpaceField))if((0,rg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>WAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,rg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=sD(l,f),m=oD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=VAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,jAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...iD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...iD(e,r))}return n}}Da.ExprAggregateFunction=GAe;function WAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function iD(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof $z.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof HAe.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,PAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,rg.isAtomic)(o)&&!(0,rg.isJoined)(o))if((0,rg.hasExpression)(o)){const u=iD(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function sD(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function oD(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function VAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=sD(i,e),o=oD(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=sD(l,e),f=oD(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof qAe.FieldReference?`${n.refString}.${r}()`:n instanceof QAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprAlternationTree=void 0;const Pv=ce,jd=ot,YAe=po;function uD(t){const e=t.atExpr();switch(e.atNodeType()){case jd.ATNodeType.And:case jd.ATNodeType.Partial:return;case jd.ATNodeType.Or:{if(e instanceof Bz){const n=uD(e.left);if(n){const r=uD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Bz extends jd.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}equalityList(){return this.inList===void 0&&(this.inList=uD(this)||[]),this.inList}apply(e,n,r,i){if((0,YAe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,Pv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Pv.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Pv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Pv.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?jd.ATNodeType.Or:jd.ATNodeType.And}}Mv.ExprAlternationTree=Bz;var Ud={};Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.ExprAsymmetric=void 0;const XAe=Da;class KAe extends XAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}Ud.ExprAsymmetric=KAe;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.ExprAvg=void 0;const JAe=Ud;class ZAe extends JAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}jv.ExprAvg=ZAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprCast=void 0;const eve=er,tve=ot;class nve extends tve.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,eve.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Uv.ExprCast=nve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprCoalesce=void 0;const kz=bi,Mz=Zt,rve=ot;class ive extends rve.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Mz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Mz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,kz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,kz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}qv.ExprCoalesce=ive;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprCount=void 0;const sve=Da;class ove extends sve.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}zv.ExprCount=ove;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprCountDistinct=void 0;const Qv=Zt,uve=Da;class ave extends uve.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Qv.FT.numberT,Qv.FT.stringT,Qv.FT.dateT,Qv.FT.timestampT]}}Hv.ExprCountDistinct=ave;var Gv={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.Limit=void 0;const lve=Ge,cve=En;class fve extends lve.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=cve.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}e0.Limit=fve;var qd={};Object.defineProperty(qd,"__esModule",{value:!0}),qd.PartitionBy=void 0;const xve=Ge;class dve extends xve.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}qd.PartitionBy=dve;var ig={},t0={};Object.defineProperty(t0,"__esModule",{value:!0}),t0.FieldName=void 0;const hve=Ge;class pve extends hve.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}t0.FieldName=pve,Object.defineProperty(ig,"__esModule",{value:!0}),ig.ExprFunc=void 0;const ss=ce,gve=Di,mve=Od,yve=ot,Eve=t0,Pz=Nt;class Ave extends yve.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,ss.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Pz.composeSQLExpr)(L),evalSpace:(0,ss.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,gve.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,ss.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof mve.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=vve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,ss.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ss.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ss.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,ss.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,ss.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ss.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=Sve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new Eve.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,Pz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,ss.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ss.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}ig.ExprFunc=Ave;function vve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,ss.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,ss.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function Sve(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprProps=void 0;const _ve=ce,Cve=Di,bve=Zt,Tve=Jl,Rve=e0,Ove=qd,Dve=ot,Nve=ig;class wve extends Dve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=bve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,_ve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,Cve.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof Ove.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof Rve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof Tve.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof Nve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Gv.ExprProps=wve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprLogicalOp=void 0;const Fve=eg,jz=Zt;class Lve extends Fve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[jz.FT.boolT,jz.FT.aggregateBoolT]}}Wv.ExprLogicalOp=Lve;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprMax=void 0;const Yv=Zt,Ive=Da;class $ve extends Ive.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Yv.FT.numberT,Yv.FT.stringT,Yv.FT.dateT,Yv.FT.timestampT]}returns(e){return e.dataType}}Vv.ExprMax=$ve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprMin=void 0;const Kv=Zt,Bve=Da;class kve extends Bve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Kv.FT.numberT,Kv.FT.stringT,Kv.FT.dateT,Kv.FT.timestampT]}returns(e){return e.dataType}}Xv.ExprMin=kve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprMinus=void 0;const Mve=Di,Uz=Zt,Pve=ot;class jve extends Pve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Uz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Uz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,Mve.errorFor)("negate requires number")}}Jv.ExprMinus=jve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprMulDiv=void 0;const Uve=Pd;class qve extends Uve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Zv.ExprMulDiv=qve;var eS={},sg={};Object.defineProperty(sg,"__esModule",{value:!0}),sg.Unary=void 0;const zve=ot;class Hve extends zve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}sg.Unary=Hve,Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprNot=void 0;const qz=Zt,Qve=sg;class Gve extends Qve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[qz.FT.boolT,qz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}eS.ExprNot=Gve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprNow=void 0;const Wve=ot;class Vve extends Wve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}tS.ExprNow=Vve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprNULL=void 0;const Yve=ot;class Xve extends Yve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}nS.ExprNULL=Xve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprNumber=void 0;const Kve=Zt,Jve=ot;class Zve extends Jve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...Kve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}rS.ExprNumber=Zve;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprParens=void 0;const aD=ot;class eSe extends aD.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}apply(e,n,r,i){return this.expr.atNodeType()===aD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,aD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}iS.ExprParens=eSe;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprRegEx=void 0;const tSe=ot;class nSe extends tSe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}sS.ExprRegEx=nSe;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprString=void 0;const rSe=ot,iSe=Zt;class sSe extends rSe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...iSe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}oS.ExprString=sSe;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprSum=void 0;const oSe=Ud;class uSe extends oSe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}uS.ExprSum=uSe;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprTimeExtract=void 0;const Zc=ce,zz=Di,lD=ot,aSe=Kl;class og extends lD.ExpressionDef{static extractor(e){const n=og.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=og.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof aSe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,zz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,lD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,lD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,zz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}aS.ExprTimeExtract=og,og.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var lS={},go={},cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.QueryInputSpace=void 0;const lSe=Ni,cSe=Rd;class fSe extends cSe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof lSe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}cS.QueryInputSpace=fSe;var xSe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),dSe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),hSe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&xSe(e,t,n);return dSe(e,t),e};Object.defineProperty(go,"__esModule",{value:!0}),go.ReduceFieldSpace=go.QuerySpace=go.QueryOperationSpace=void 0;const fS=hSe(ce),cD=Wl,pSe=t0,gSe=kr,mSe=pt,ySe=Rd,ESe=Q1,ASe=yr,vSe=cS;class Hz extends ySe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new vSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof ASe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();fS.isAtomicFieldType(l.dataType)&&fS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}go.QueryOperationSpace=Hz;class Qz extends Hz{addRefineFromFields(e){var n;if(fS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new pSe.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new ESe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof mSe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof gSe.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!_Se(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(fS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,cD.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,cD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,cD.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}go.QuerySpace=Qz;class SSe extends Qz{constructor(){super(...arguments),this.segmentType="reduce"}}go.ReduceFieldSpace=SSe;function _Se(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprUngroup=void 0;const Gz=ce,CSe=go,bSe=Zt,TSe=ot;class RSe extends TSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=bSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Gz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Gz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof CSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}lS.ExprUngroup=RSe;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ForRange=void 0;const Wz=bi,Vz=Di,Yz=Zt,dS=er,OSe=ot,hS=Md,Xz=Kl;class DSe extends OSe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Yz.FT.timestampT,Yz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Vz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Wz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Wz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Vz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,dS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,dS.timeOffset)("date",i.value,"+",o.value,u),g=new hS.ExprTime("date",m);return new Xz.Range(p,g).apply(e,n,r)}const l=hS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,dS.castDateToTimestamp)(f),c=new hS.ExprTime("timestamp",f,i.expressionType)}const x=(0,dS.timeOffset)("timestamp",f,"+",o.value,u),h=new hS.ExprTime("timestamp",x,i.expressionType);return new Xz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}xS.ForRange=DSe;var tr={},Fi={};Object.defineProperty(Fi,"__esModule",{value:!0});class ef extends Error{}class NSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class wSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class FSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class ug extends ef{}class Kz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class n0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",mo="short",os="long",fD={year:Me,month:Me,day:Me},Jz={year:Me,month:mo,day:Me},LSe={year:Me,month:mo,day:Me,weekday:mo},Zz={year:Me,month:os,day:Me},eH={year:Me,month:os,day:Me,weekday:os},tH={hour:Me,minute:Me},nH={hour:Me,minute:Me,second:Me},rH={hour:Me,minute:Me,second:Me,timeZoneName:mo},iH={hour:Me,minute:Me,second:Me,timeZoneName:os},sH={hour:Me,minute:Me,hourCycle:"h23"},oH={hour:Me,minute:Me,second:Me,hourCycle:"h23"},uH={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:mo},aH={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:os},lH={year:Me,month:Me,day:Me,hour:Me,minute:Me},cH={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},fH={year:Me,month:mo,day:Me,hour:Me,minute:Me},xH={year:Me,month:mo,day:Me,hour:Me,minute:Me,second:Me},ISe={year:Me,month:mo,day:Me,weekday:mo,hour:Me,minute:Me},dH={year:Me,month:os,day:Me,hour:Me,minute:Me,timeZoneName:mo},hH={year:Me,month:os,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:mo},pH={year:Me,month:os,day:Me,weekday:os,hour:Me,minute:Me,timeZoneName:os},gH={year:Me,month:os,day:Me,weekday:os,hour:Me,minute:Me,second:Me,timeZoneName:os};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function pS(t){return typeof t=="number"&&t%1===0}function $Se(t){return typeof t=="string"}function BSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function mH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function kSe(t){return Array.isArray(t)?t:[t]}function yH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function MSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function zd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Na(t,e,n){return pS(t)&&t>=e&&t<=n}function PSe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function r0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function xD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function dD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function ag(t){return t%4===0&&(t%100!==0||t%400===0)}function lg(t){return ag(t)?366:365}function gS(t,e){const n=PSe(e-1,12)+1,r=t+(e-n)/12;return n===2?ag(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function hD(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function mS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function pD(t){return t>99?t:t>60?1900+t:2e3+t}function EH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function yS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function AH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function ES(t,e){const n={};for(const r in t)if(zd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=AH(i)}return n}function cg(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function AS(t){return MSe(t,["hour","minute","second","millisecond"])}const vH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,jSe=["January","February","March","April","May","June","July","August","September","October","November","December"],SH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],USe=["J","F","M","A","M","J","J","A","S","O","N","D"];function _H(t){switch(t){case"narrow":return[...USe];case"short":return[...SH];case"long":return[...jSe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const CH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],bH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],qSe=["M","T","W","T","F","S","S"];function TH(t){switch(t){case"narrow":return[...qSe];case"short":return[...bH];case"long":return[...CH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const RH=["AM","PM"],zSe=["Before Christ","Anno Domini"],HSe=["BC","AD"],QSe=["B","A"];function OH(t){switch(t){case"narrow":return[...QSe];case"short":return[...HSe];case"long":return[...zSe];default:return null}}function GSe(t){return RH[t.hour<12?0:1]}function WSe(t,e){return TH(e)[t.weekday-1]}function VSe(t,e){return _H(e)[t.month-1]}function YSe(t,e){return OH(e)[t.year<0?0:1]}function XSe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function DH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const KSe={D:fD,DD:Jz,DDD:Zz,DDDD:eH,t:tH,tt:nH,ttt:rH,tttt:iH,T:sH,TT:oH,TTT:uH,TTTT:aH,f:lH,ff:fH,fff:dH,ffff:pH,F:cH,FF:xH,FFF:hH,FFFF:gH};class Li{static create(e,n={}){return new Li(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return KSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return wn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?GSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?VSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?WSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Li.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?YSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return DH(Li.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Li.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return DH(s,i(u))}}class yo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Hd=class{get type(){throw new n0}get name(){throw new n0}get ianaName(){return this.name}get isUniversal(){throw new n0}offsetName(e,n){throw new n0}formatOffset(e,n){throw new n0}offset(e){throw new n0}equals(e){throw new n0}get isValid(){throw new n0}},gD=null;class vS extends Hd{static get instance(){return gD===null&&(gD=new vS),gD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return EH(e,n,r)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let SS={};function JSe(t){return SS[t]||(SS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),SS[t]}const ZSe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function e4e(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function t4e(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ZSe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let _S={};class yu extends Hd{static create(e){return _S[e]||(_S[e]=new yu(e)),_S[e]}static resetCache(){_S={},SS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return EH(e,n,r,this.name)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=JSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?t4e(r,n):e4e(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=hD({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let mD=null;class Pr extends Hd{static get utcInstance(){return mD===null&&(mD=new Pr(0)),mD}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(yS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${cg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${cg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return cg(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class NH extends Hd{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function i0(t,e){if(_t(t)||t===null)return e;if(t instanceof Hd)return t;if($Se(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new NH(t)}let wH=()=>Date.now(),FH="system",LH=null,IH=null,$H=null,BH;class Fn{static get now(){return wH}static set now(e){wH=e}static set defaultZone(e){FH=e}static get defaultZone(){return i0(FH,vS.instance)}static get defaultLocale(){return LH}static set defaultLocale(e){LH=e}static get defaultNumberingSystem(){return IH}static set defaultNumberingSystem(e){IH=e}static get defaultOutputCalendar(){return $H}static set defaultOutputCalendar(e){$H=e}static get throwOnInvalid(){return BH}static set throwOnInvalid(e){BH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let kH={};function n4e(t,e={}){const n=JSON.stringify([t,e]);let r=kH[n];return r||(r=new Intl.ListFormat(t,e),kH[n]=r),r}let yD={};function ED(t,e={}){const n=JSON.stringify([t,e]);let r=yD[n];return r||(r=new Intl.DateTimeFormat(t,e),yD[n]=r),r}let AD={};function r4e(t,e={}){const n=JSON.stringify([t,e]);let r=AD[n];return r||(r=new Intl.NumberFormat(t,e),AD[n]=r),r}let vD={};function i4e(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=vD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),vD[i]=s),s}let fg=null;function s4e(){return fg||(fg=new Intl.DateTimeFormat().resolvedOptions().locale,fg)}function o4e(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=ED(t).resolvedOptions()}catch{n=ED(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function u4e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function a4e(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function l4e(t){const e=[];for(let n=1;n<=7;n++){const r=at.utc(2016,11,13+n);e.push(t(r))}return e}function CS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function c4e(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class f4e{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=r4e(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):dD(e,3);return wn(n,this.padTo)}}}class x4e{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:at.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=ED(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class d4e{constructor(e,n,r){this.opts={style:"long",...r},!n&&mH()&&(this.rtf=i4e(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):XSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":s4e()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){fg=null,yD={},AD={},vD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=o4e(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=u4e(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=c4e(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return CS(this,e,r,_H,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=a4e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return CS(this,e,r,TH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=l4e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return CS(this,void 0,e,()=>RH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[at.utc(2016,11,13,9),at.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return CS(this,e,n,OH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[at.utc(-40,1,1),at.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new f4e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new x4e(e,this.intl,n)}relFormatter(e={}){return new d4e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return n4e(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Gd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Wd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function MH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=r0(e[n+i]);return[r,null,n+i]}}const PH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,h4e=`(?:${PH.source}?(?:\\[(${vH.source})\\])?)?`,SD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jH=RegExp(`${SD.source}${h4e}`),_D=RegExp(`(?:T${jH.source})?`),p4e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,g4e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,m4e=/(\d{4})-?(\d{3})/,y4e=MH("weekYear","weekNumber","weekDay"),E4e=MH("year","ordinal"),A4e=/(\d{4})-(\d\d)-(\d\d)/,UH=RegExp(`${SD.source} ?(?:${PH.source}|(${vH.source}))?`),v4e=RegExp(`(?: ${UH.source})?`);function Vd(t,e,n){const r=t[e];return _t(r)?n:r0(r)}function S4e(t,e){return[{year:Vd(t,e),month:Vd(t,e+1,1),day:Vd(t,e+2,1)},null,e+3]}function Yd(t,e){return[{hours:Vd(t,e,0),minutes:Vd(t,e+1,0),seconds:Vd(t,e+2,0),milliseconds:xD(t[e+3])},null,e+4]}function xg(t,e){const n=!t[e]&&!t[e+1],r=yS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function dg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const _4e=RegExp(`^T?${SD.source}$`),C4e=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function b4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(xD(l),f)}]}const T4e={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function CD(t,e,n,r,i,s,o){const u={year:e.length===2?pD(r0(e)):r0(e),month:SH.indexOf(n)+1,day:r0(r),hour:r0(i),minute:r0(s)};return o&&(u.second=r0(o)),t&&(u.weekday=t.length>3?CH.indexOf(t)+1:bH.indexOf(t)+1),u}const R4e=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function O4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=CD(e,i,r,n,s,o,u);let h;return a?h=T4e[a]:l?h=0:h=yS(c,f),[x,new Pr(h)]}function D4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const N4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,w4e=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,F4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function qH(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,i,r,n,s,o,u),Pr.utcInstance]}function L4e(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,u,n,r,i,s,o),Pr.utcInstance]}const I4e=Qd(p4e,_D),$4e=Qd(g4e,_D),B4e=Qd(m4e,_D),k4e=Qd(jH),zH=Gd(S4e,Yd,xg,dg),M4e=Gd(y4e,Yd,xg,dg),P4e=Gd(E4e,Yd,xg,dg),j4e=Gd(Yd,xg,dg);function U4e(t){return Wd(t,[I4e,zH],[$4e,M4e],[B4e,P4e],[k4e,j4e])}function q4e(t){return Wd(D4e(t),[R4e,O4e])}function z4e(t){return Wd(t,[N4e,qH],[w4e,qH],[F4e,L4e])}function H4e(t){return Wd(t,[C4e,b4e])}const Q4e=Gd(Yd);function G4e(t){return Wd(t,[_4e,Q4e])}const W4e=Qd(A4e,v4e),V4e=Qd(UH),Y4e=Gd(Yd,xg,dg);function X4e(t){return Wd(t,[W4e,zH],[V4e,Y4e])}const K4e="Invalid Duration",HH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},J4e={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...HH},Ls=146097/400,Xd=146097/4800,Z4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Xd/7,days:Xd,hours:Xd*24,minutes:Xd*24*60,seconds:Xd*24*60*60,milliseconds:Xd*24*60*60*1e3},...HH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],e_e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function t_e(t){return t<0?Math.floor(t):Math.ceil(t)}function QH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?t_e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function n_e(t,e){e_e.reduce((n,r)=>_t(e[r])?n:(n&&QH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Z4e:J4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:ES(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=H4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=G4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new FSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Kz(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Li.create(this.loc,r).formatDurationFromString(this,e):K4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=dD(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(zd(n.values,i)||zd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=AH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...ES(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return n_e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&QH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const hg="Invalid Interval";function r_e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new wSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=yg(e),i=yg(n),s=r_e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=yg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=yg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=at.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=at.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(yg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:hg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:hg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:hg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:hg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:hg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let pg=class{static hasDST(e=Fn.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return i0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:mH()}}};function GH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function i_e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=GH(u,a);return(l-l%7)/7}],["days",GH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function s_e(t,e,n,r){let[i,s,o,u]=i_e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const bD={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},WH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},o_e=bD.hanidec.replace(/[\[|\]]/g,"").split("");function u_e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(bD.hanidec)!==-1)e+=o_e.indexOf(t[n]);else for(const i in WH){const[s,o]=WH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Eo({numberingSystem:t},e=""){return new RegExp(`${bD[t||"latn"]}${e}`)}const a_e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(u_e(n))}}const VH="[ ]",YH=new RegExp(VH,"g");function l_e(t){return t.replace(/\./g,"\\.?").replace(YH,VH)}function XH(t){return t.replace(/\./g,"").replace(YH," ").toLowerCase()}function Ao(t,e){return t===null?null:{regex:RegExp(t.map(l_e).join("|")),deser:([n])=>t.findIndex(r=>XH(n)===XH(r))+e}}function KH(t,e){return{regex:t,deser:([,n,r])=>yS(n,r),groups:e}}function TD(t){return{regex:t,deser:([e])=>e}}function c_e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function f_e(t,e){const n=Eo(e),r=Eo(e,"{2}"),i=Eo(e,"{3}"),s=Eo(e,"{4}"),o=Eo(e,"{6}"),u=Eo(e,"{1,2}"),a=Eo(e,"{1,3}"),l=Eo(e,"{1,6}"),c=Eo(e,"{1,9}"),f=Eo(e,"{2,4}"),x=Eo(e,"{4,6}"),h=g=>({regex:RegExp(c_e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Ao(e.eras("short",!1),0);case"GG":return Ao(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,pD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Ao(e.months("short",!0,!1),1);case"MMMM":return Ao(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Ao(e.months("short",!1,!1),1);case"LLLL":return Ao(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return TD(c);case"uu":return TD(u);case"uuu":return $t(n);case"a":return Ao(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,pD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Ao(e.weekdays("short",!1,!1),1);case"EEEE":return Ao(e.weekdays("long",!1,!1),1);case"ccc":return Ao(e.weekdays("short",!0,!1),1);case"cccc":return Ao(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return KH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return KH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return TD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:a_e};return m.token=t,m}const x_e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function d_e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=x_e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function h_e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function p_e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(zd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function g_e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=xD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let RD=null;function m_e(){return RD||(RD=at.fromMillis(1555555555555)),RD}function y_e(t,e){if(t.literal)return t;const n=Li.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Li.create(e,n).formatDateTimeParts(m_e()).map(o=>d_e(o,e,n));return s.includes(void 0)?t:s}function E_e(t,e){return Array.prototype.concat(...t.map(n=>y_e(n,e)))}function JH(t,e,n){const r=E_e(Li.parseFormat(n),t),i=r.map(o=>f_e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=h_e(i),a=RegExp(o,"i"),[l,c]=p_e(e,a,u),[f,x,h]=c?g_e(c):[null,null,void 0];if(zd(c,"a")&&zd(c,"H"))throw new ug("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function A_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=JH(t,e,n);return[r,i,s,o]}const ZH=[0,31,59,90,120,151,181,212,243,273,304,334],eQ=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new yo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function tQ(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function nQ(t,e,n){return n+(ag(t)?eQ:ZH)[e-1]}function rQ(t,e){const n=ag(t)?eQ:ZH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function OD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r),s=tQ(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=mS(u)):o>mS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...AS(t)}}function iQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=tQ(e,1,4),s=lg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=lg(u)):o>s?(u=e+1,o-=lg(e)):u=e;const{month:a,day:l}=rQ(u,o);return{year:u,month:a,day:l,...AS(t)}}function DD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r);return{year:e,ordinal:i,...AS(t)}}function sQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=rQ(e,n);return{year:e,month:r,day:i,...AS(t)}}function v_e(t){const e=pS(t.weekYear),n=Na(t.weekNumber,1,mS(t.weekYear)),r=Na(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function S_e(t){const e=pS(t.year),n=Na(t.ordinal,1,lg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function oQ(t){const e=pS(t.year),n=Na(t.month,1,12),r=Na(t.day,1,gS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function uQ(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Na(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Na(n,0,59),u=Na(r,0,59),a=Na(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const ND="Invalid DateTime",aQ=864e13;function bS(t){return new yo("unsupported zone",`the zone "${t.name}" is not supported`)}function wD(t){return t.weekData===null&&(t.weekData=OD(t.c)),t.weekData}function gg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new at({...n,...e,old:n})}function lQ(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function cQ(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function TS(t,e,n){return lQ(hD(t),e,n)}function fQ(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,gS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=hD(s);let[a,l]=lQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function mg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=at.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return at.invalid(new yo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function RS(t,e,n=!0){return t.isValid?Li.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function FD(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function xQ(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const dQ={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},__e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},C_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},hQ=["year","month","day","hour","minute","second","millisecond"],b_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],T_e=["year","ordinal","hour","minute","second","millisecond"];function pQ(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Kz(t);return e}function gQ(t,e){const n=i0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of hQ)_t(t[l])&&(t[l]=dQ[l]);const u=oQ(t)||uQ(t);if(u)return at.invalid(u);const a=n.offset(i);[s,o]=TS(t,a,n)}return new at({ts:s,zone:n,loc:r,o})}function mQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=dD(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function yQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class at{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new yo("invalid input"):null)||(n.isValid?null:bS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=cQ(this.ts,u),r=Number.isNaN(i.year)?new yo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new at({})}static local(){const[e,n]=yQ(arguments),[r,i,s,o,u,a,l]=n;return gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=yQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=BSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=i0(n.zone,Fn.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(bS(i))}static fromMillis(e,n={}){if(tf(e))return e<-aQ||e>aQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:i0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new at({ts:e*1e3,zone:i0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=i0(n.zone,Fn.defaultZone);if(!r.isValid)return at.invalid(bS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=ES(e,pQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new ug("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=cQ(i,s);h?(p=b_e,m=__e,g=OD(g)):u?(p=T_e,m=C_e,g=DD(g)):(p=hQ,m=dQ);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?v_e(o):u?S_e(o):oQ(o),A=E||uQ(o);if(A)return at.invalid(A);const v=h?iQ(o):u?sQ(o):o,[_,S]=TS(v,s,r),C=new at({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?at.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=U4e(e);return mg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=q4e(e);return mg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=z4e(e);return mg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=A_e(o,e,n);return c?at.invalid(c):mg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return at.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=X4e(e);return mg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new NSe(r);return new at({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?wD(this).weekYear:NaN}get weekNumber(){return this.isValid?wD(this).weekNumber:NaN}get weekday(){return this.isValid?wD(this).weekday:NaN}get ordinal(){return this.isValid?DD(this.c).ordinal:NaN}get monthShort(){return this.isValid?pg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?pg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?pg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?pg.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return ag(this.year)}get daysInMonth(){return gS(this.year,this.month)}get daysInYear(){return this.isValid?lg(this.year):NaN}get weeksInWeekYear(){return this.isValid?mS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Li.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=i0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=TS(o,s,e)}return gg(this,{ts:i,zone:e})}else return at.invalid(bS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return gg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=ES(e,pQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new ug("Can't mix ordinal dates with month/day");let l;r?l=iQ({...OD(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(gS(l.year,l.month),l.day))):l=sQ({...DD(this.c),...n});const[c,f]=TS(l,this.o,this.zone);return gg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return gg(this,fQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return gg(this,fQ(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Li.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):ND}toLocaleString(e=fD,n={}){return this.isValid?Li.create(this.loc.clone(n),e).formatDateTime(this):ND}toLocaleParts(e={}){return this.isValid?Li.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=FD(this,o);return u+="T",u+=xQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?FD(this,e==="extended"):null}toISOWeekDate(){return RS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+xQ(this,o==="extended",n,e,r,s):null}toRFC2822(){return RS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return RS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?FD(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),RS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():ND}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=kSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=s_e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(at.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||at.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),mQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?mQ(e.base||at.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(at.isDateTime))throw new Fs("min requires all arguments be DateTimes");return yH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(at.isDateTime))throw new Fs("max requires all arguments be DateTimes");return yH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return JH(o,e,n)}static fromStringExplain(e,n,r={}){return at.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return fD}static get DATE_MED(){return Jz}static get DATE_MED_WITH_WEEKDAY(){return LSe}static get DATE_FULL(){return Zz}static get DATE_HUGE(){return eH}static get TIME_SIMPLE(){return tH}static get TIME_WITH_SECONDS(){return nH}static get TIME_WITH_SHORT_OFFSET(){return rH}static get TIME_WITH_LONG_OFFSET(){return iH}static get TIME_24_SIMPLE(){return sH}static get TIME_24_WITH_SECONDS(){return oH}static get TIME_24_WITH_SHORT_OFFSET(){return uH}static get TIME_24_WITH_LONG_OFFSET(){return aH}static get DATETIME_SHORT(){return lH}static get DATETIME_SHORT_WITH_SECONDS(){return cH}static get DATETIME_MED(){return fH}static get DATETIME_MED_WITH_SECONDS(){return xH}static get DATETIME_MED_WITH_WEEKDAY(){return ISe}static get DATETIME_FULL(){return dH}static get DATETIME_FULL_WITH_SECONDS(){return hH}static get DATETIME_HUGE(){return pH}static get DATETIME_HUGE_WITH_SECONDS(){return gH}}function yg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return at.fromJSDate(t);if(t&&typeof t=="object")return at.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const R_e="2.5.2";var O_e=Fi.DateTime=at;Fi.Duration=Ct,Fi.FixedOffsetZone=Pr,Fi.IANAZone=yu,Fi.Info=pg,Fi.Interval=dn,Fi.InvalidZone=NH,Fi.Settings=Fn,Fi.SystemZone=vS,Fi.VERSION=R_e,Fi.Zone=Hd,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const s0=Fi,D_e=ce,N_e=Kl,EQ=Md,LD=ot;class w_e extends Error{}tr.TimeFormatError=w_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const AQ="yyyy",vQ=`${AQ}-LL`,$s=`${vQ}-dd`,SQ=`${$s} HH`,_Q=`${SQ}:mm`,ID=`${_Q}:ss`;class CQ extends LD.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class $D extends CQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=s0.DateTime.fromFormat(e,ID);if(s.isValid)return new $D(r,n);if(s=s0.DateTime.fromFormat(e,_Q),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(ID);return new BD(r,n,"timestamp",o)}}}tr.LiteralTimestamp=$D;class BD extends CQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,LD.getMorphicValue)(i,"timestamp"),a=(0,LD.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,D_e.isTemporalField)(o.dataType)){const u=o.dataType;return new N_e.Range(new EQ.ExprTime(u,i.value),new EQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class kD extends BD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,SQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(ID),new kD(n,r)}}tr.LiteralHour=kD;class Eg extends BD{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class MD extends Eg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new MD(n,r)}}tr.LiteralDay=MD;class PD extends Eg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=s0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new PD(n,r)}}}tr.LiteralWeek=PD;class jD extends Eg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,vQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new jD(n,r)}}}tr.LiteralMonth=jD;class UD extends Eg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=s0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new UD(n,r)}}}tr.LiteralQuarter=UD;class qD extends Eg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,AQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new qD(n,r)}}}tr.LiteralYear=qD;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.PartialCompare=void 0;const bQ=ot;class F_e extends bQ.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}atNodeType(){return bQ.ATNodeType.Partial}}OS.PartialCompare=F_e;var Kd={};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.PickWhen=Kd.Pick=void 0;const Eu=ce,Jd=Zt,L_e=ot,I_e=Ge;function DS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class $_e extends L_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"case",kids:{caseWhen:[],caseThen:[]}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Jd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=DS(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=DS(s,l),Jd.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"case",kids:{caseWhen:[],caseThen:[]}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Jd.FT.typeEq(a.when,Jd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Jd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=DS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=DS(i,u),Jd.FT.typeEq(i,u,!0)?(n.kids.caseElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Kd.Pick=$_e;class B_e extends I_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}Kd.PickWhen=B_e;var Zd={};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.CaseWhen=Zd.Case=void 0;const k_e=ot,M_e=Ge,Ag=Zt,uf=bi;function TQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class P_e extends k_e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,uf.maxExpressionType)(i,o.expressionType),s=(0,uf.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!Ag.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Ag.FT.typeEq(l.when,Ag.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Ag.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=TQ(a,l.then),i=(0,uf.maxExpressionType)(i,(0,uf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,uf.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!Ag.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=TQ(a,l),i=(0,uf.maxExpressionType)(i,l.expressionType),s=(0,uf.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}Zd.Case=P_e;class j_e extends M_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}Zd.CaseWhen=j_e;var eh={};Object.defineProperty(eh,"__esModule",{value:!0}),eh.RecordLiteral=eh.RecordElement=void 0;const RQ=bi,U_e=ot,q_e=Ge;class z_e extends q_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}eh.RecordElement=z_e;class H_e extends U_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,RQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,RQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}eh.RecordLiteral=H_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.Timeframe=void 0;const Q_e=ce,G_e=Ge;class W_e extends G_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,Q_e.isTimestampUnit)(n)?n:"second"}}NS.Timeframe=W_e;var wS={};Object.defineProperty(wS,"__esModule",{value:!0}),wS.TopBy=void 0;const V_e=ce,OQ=ot,Y_e=Ge;class X_e extends Y_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof OQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof OQ.ExpressionDef){const n=this.by.getExpression(e);return(0,V_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}wS.TopBy=X_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.ImportStatement=o0.ImportSelect=o0.ImportSourceName=void 0;const zD=Ge;class K_e extends zD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}o0.ImportSourceName=K_e;class J_e extends zD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}o0.ImportSelect=J_e;class Z_e extends zD.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}o0.ImportStatement=Z_e;var vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.ExtendBlock=void 0;const e5e=Ge,t5e=En;class n5e extends e5e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=t5e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}vg.ExtendBlock=n5e;var FS={};Object.defineProperty(FS,"__esModule",{value:!0}),FS.Argument=void 0;const r5e=Ge;class i5e extends r5e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}FS.Argument=i5e;var LS={};Object.defineProperty(LS,"__esModule",{value:!0}),LS.HasParameter=void 0;const DQ=ce,s5e=Ge;class o5e extends s5e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,DQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,DQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}LS.HasParameter=o5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.AnonymousQuery=void 0;const u5e=Ge,a5e=Br;class l5e extends u5e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=a5e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}IS.AnonymousQuery=l5e;var u0={};Object.defineProperty(u0,"__esModule",{value:!0}),u0.View=void 0;const c5e=Ge;let f5e=class extends c5e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};u0.View=f5e;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.ViewArrow=void 0;const x5e=yr,d5e=u0;class h5e extends d5e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new x5e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}$S.ViewArrow=h5e;var BS={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.refine=void 0;const HD=bi,QD=Wl;function p5e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,HD.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,HD.isQuerySegment)(o)&&(0,HD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,QD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,QD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(QD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Sg.refine=p5e,Object.defineProperty(BS,"__esModule",{value:!0}),BS.ViewRefine=void 0;const g5e=Mr,m5e=is,y5e=Sg,E5e=u0;class A5e extends E5e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,m5e.getFinalStruct)(this.refinement,e.structDef(),i):g5e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,y5e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}BS.ViewRefine=A5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.ReferenceView=void 0;const GD=ce,NQ=Mr,v5e=is,S5e=kr,_5e=Sg,C5e=u0;class b5e extends C5e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:NQ.ErrorFactory.structDef,outputStruct:NQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof S5e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,GD.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,GD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,GD.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,v5e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,_5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}kS.ReferenceView=b5e;var MS={},_g={},PS={},Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Index=void 0;const T5e=Ge,R5e=En;let O5e=class extends T5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=R5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Cg.Index=O5e;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.SampleProperty=void 0;const D5e=Ge,wQ=En;class N5e extends D5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=wQ.LegalRefinementStage.Tail,this.forceQueryClass=wQ.QueryClass.Index}sampling(){return this.sample}}bg.SampleProperty=N5e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.IndexFieldSpace=void 0;const FQ=ce,WD=pt,w5e=kr,F5e=go,L5e=ng,I5e=yr;class $5e extends F5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof WD.FieldReference?super.pushFields(n):n instanceof WD.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof w5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof L5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof I5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=WD.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,FQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,FQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}jS.IndexFieldSpace=$5e,Object.defineProperty(PS,"__esModule",{value:!0}),PS.IndexBuilder=void 0;const VD=ce,B5e=Mr,k5e=ho,M5e=Cg,P5e=e0,j5e=bg,U5e=jS;class q5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new U5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof k5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof P5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof M5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof j5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,VD.isIndexSegment)(e)&&!(0,VD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),B5e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,VD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}PS.IndexBuilder=q5e;var US={},Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.GroupBy=void 0;const z5e=rs,LQ=En;class H5e extends z5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=LQ.LegalRefinementStage.Single,this.forceQueryClass=LQ.QueryClass.Grouping}}Tg.GroupBy=H5e;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ProjectFieldSpace=void 0;const YD=ce,Q5e=go;class G5e extends Q5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,YD.expressionIsAggregate)(e.expressionType)?!1:(0,YD.expressionInvolvesAggregate)(e.expressionType)&&(0,YD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}qS.ProjectFieldSpace=G5e;var a0={},af={};Object.defineProperty(af,"__esModule",{value:!0}),af.Ordering=af.OrderBy=void 0;const W5e=ce,IQ=t0,$Q=Ge,V5e=En;class Y5e extends $Q.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof IQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof IQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,W5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}af.OrderBy=Y5e;class X5e extends $Q.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=V5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}af.Ordering=X5e;var Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.Top=void 0;const BQ=ce,K5e=t0,J5e=Ge,Z5e=En;let eCe=class extends J5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=Z5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof K5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,BQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,BQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Rg.Top=eCe,Object.defineProperty(a0,"__esModule",{value:!0}),a0.ReduceBuilder=a0.QuerySegmentBuilder=void 0;const kQ=ce,tCe=Mr,nCe=ho,rCe=e0,MQ=af,PQ=Rg,iCe=go,sCe=rs;class jQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof sCe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof nCe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof PQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof rCe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof MQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof PQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof MQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}a0.QuerySegmentBuilder=jQ;class oCe extends jQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new iCe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,kQ.isReduceSegment)(e)||(0,kQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),tCe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}a0.ReduceBuilder=oCe,Object.defineProperty(US,"__esModule",{value:!0}),US.ProjectBuilder=void 0;const UQ=ce,uCe=Mr,aCe=Tg,lCe=qS,cCe=a0;class fCe extends cCe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new lCe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof aCe.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,UQ.isProjectSegment)(e)||(0,UQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),uCe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}US.ProjectBuilder=fCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.PartialBuilder=void 0;const xCe=bi,dCe=a0;class hCe extends dCe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,xCe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}zS.PartialBuilder=hCe,Object.defineProperty(_g,"__esModule",{value:!0}),_g.QOpDesc=void 0;const pCe=PS,gCe=US,mCe=a0,yCe=Ge,ECe=is,ACe=yr,lf=En,vCe=zS;class SCe extends yCe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=lf.QueryClass.Grouping:this.refineThis.type==="project"?n=lf.QueryClass.Project:this.refineThis.type==="index"&&(n=lf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=lf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case lf.QueryClass.Grouping:return new mCe.ReduceBuilder(e,this.refineThis,n,r);case lf.QueryClass.Project:return new gCe.ProjectBuilder(e,this.refineThis,n,r);case lf.QueryClass.Index:return new pCe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new vCe.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new ACe.StaticSourceSpace((0,ECe.opOutputStruct)(this,e.structDef(),i))}}}_g.QOpDesc=SCe,Object.defineProperty(MS,"__esModule",{value:!0}),MS.QOpDescView=void 0;const _Ce=ce,CCe=yr,qQ=_g,bCe=is,XD=En,TCe=u0;class RCe extends TCe.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,_Ce.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new qQ.QOpDesc([]),o=new qQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case XD.LegalRefinementStage.Head:s.push(u);break;case XD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case XD.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,bCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new CCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}MS.QOpDescView=RCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const zQ=ce,OCe=Zt,DCe=kd,NCe=Ge,cf=Mn,wCe=Br,FCe=kr;class l0 extends NCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=wCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new KD(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,zQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,DCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof KD&&e.foundCircle)&&r.dataType!=="error"){const u=OCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new HQ(e,this))}}hn.AtomicFieldDeclaration=l0;class LCe extends l0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=LCe;class ICe extends l0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=ICe;class $Ce extends l0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=$Ce;class BCe extends l0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=BCe;class kCe extends l0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=kCe;class MCe extends l0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=MCe;class PCe extends l0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=PCe;class KD{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=KD;class HQ extends FCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,zQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=HQ;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.Aggregate=void 0;const jCe=rs,QQ=En;let UCe=class extends jCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=QQ.LegalRefinementStage.Single,this.forceQueryClass=QQ.QueryClass.Grouping}};HS.Aggregate=UCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.Calculate=void 0;const qCe=rs,zCe=En;class HCe extends qCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=zCe.LegalRefinementStage.Single}}QS.Calculate=HCe;var Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.Dimensions=void 0;const QCe=Vl;class GCe extends QCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Og.Dimensions=GCe;var Dg={};Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.Measures=void 0;const WCe=Vl;class VCe extends WCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Dg.Measures=VCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.Nests=void 0;const YCe=rs,GQ=En;class XCe extends YCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=GQ.LegalRefinementStage.Single,this.forceQueryClass=GQ.QueryClass.Grouping}}GS.Nests=XCe;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.ProjectStatement=void 0;const KCe=rs,WQ=En;class JCe extends KCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=WQ.QueryClass.Project,this.queryRefinementStage=WQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}WS.ProjectStatement=JCe;var c0={},wa={};Object.defineProperty(wa,"__esModule",{value:!0}),wa.findReferences=wa.deprecatedParseTableURI=wa.constructTableKey=void 0;const ZCe=Nl,JD=on;function ZD(t){const e=(0,JD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,JD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class ebe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=VQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,JD.getId)(e.connectionId()),r=ZD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=ZD(e.tableURI()),{connectionName:r,tablePath:i}=YQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=ZD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function VQ(t,e){return t===void 0?e:`${t}:${e}`}wa.constructTableKey=VQ;function YQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}wa.deprecatedParseTableURI=YQ;function tbe(t,e,n){const r=new ebe(t,e),i=r;return ZCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}wa.findReferences=tbe,Object.defineProperty(c0,"__esModule",{value:!0}),c0.TableFunctionSource=c0.TableMethodSource=c0.TableSource=void 0;const XQ=wa,nbe=xo,KQ=Mr;class e7 extends nbe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return KQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,XQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),KQ.ErrorFactory.structDef}}c0.TableSource=e7;class rbe extends e7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}c0.TableMethodSource=rbe;class ibe extends e7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,XQ.deprecatedParseTableURI)(this.tableURI)}}c0.TableFunctionSource=ibe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.SQLString=void 0;const sbe=Ge,JQ=mu;class obe extends sbe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(ube)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof JQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}VS.SQLString=obe;function ube(t){return t instanceof JQ.SourceQueryElement}var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.SourceDesc=void 0;const abe=Ge;class lbe extends abe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}YS.SourceDesc=lbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.isSourceProperty=void 0;const cbe=ho,fbe=Vl,xbe=Nd,dbe=Xl,hbe=wd,pbe=Fd,gbe=Ld,mbe=Yl,ybe=Ni;function Ebe(t){return t instanceof cbe.Filter||t instanceof ybe.JoinStatement||t instanceof fbe.DeclareFields||t instanceof xbe.FieldListEdit||t instanceof dbe.Renames||t instanceof hbe.PrimaryKey||t instanceof mbe.ObjectAnnotation||t instanceof pbe.Views||t instanceof gbe.TimezoneStatement}XS.isSourceProperty=Ebe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.isFieldCollectionMember=void 0;const Abe=hn,ZQ=pt;function vbe(t){return t instanceof ZQ.FieldReference||t instanceof ZQ.WildcardFieldReference||t instanceof Abe.AtomicFieldDeclaration}KS.isFieldCollectionMember=vbe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.isQueryElement=void 0;const Sbe=Id,_be=$d,Cbe=K1,bbe=J1;function Tbe(t){return t instanceof Sbe.QueryArrow||t instanceof _be.QueryRefine||t instanceof Cbe.QueryReference||t instanceof bbe.QueryRaw}JS.isQueryElement=Tbe;var eG={};Object.defineProperty(eG,"__esModule",{value:!0});var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.isQueryProperty=void 0;function Rbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}ZS.isQueryProperty=Rbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.isQueryExtendProperty=void 0;const Obe=Og,Dbe=Ni,Nbe=Dg;function wbe(t){return t instanceof Obe.Dimensions||t instanceof Nbe.Measures||t instanceof Dbe.JoinStatement}e4.isQueryExtendProperty=wbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.isFieldPropStatement=void 0;const Fbe=Jl,Lbe=ho,Ibe=e0,$be=qd;function Bbe(t){return t instanceof Lbe.Filter||t instanceof Ibe.Limit||t instanceof $be.PartitionBy||t instanceof Fbe.FunctionOrdering}t4.isFieldPropStatement=Bbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(j1,t),n(bd,t),n(Td,t),n(xo,t),n(z1,t),n(mu,t),n(bv,t),n(Tv,t),n(Nv,t),n(W1,t),n(Lv,t),n(Nd,t),n(wd,t),n(Xl,t),n(Fd,t),n(Ld,t),n(Iv,t),n(Pd,t),n(Bv,t),n(Jl,t),n(kv,t),n(Da,t),n(Mv,t),n(Ud,t),n(jv,t),n(Uv,t),n(qv,t),n(Oa,t),n(zv,t),n(Hv,t),n(Gv,t),n(ig,t),n(tg,t),n(Xc,t),n(Wv,t),n(Vv,t),n(Xv,t),n(Jv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(iS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(xS,t),n(tr,t),n(OS,t),n(qd,t),n(Kd,t),n(Zd,t),n(eh,t),n(Kl,t),n(NS,t),n(wS,t),n(sg,t),n(o0,t),n(vg,t),n(FS,t),n(LS,t),n(IS,t),n($d,t),n(Id,t),n(u0,t),n($S,t),n(BS,t),n(kS,t),n(MS,t),n(hn,t),n(pt,t),n(HS,t),n(QS,t),n(Vl,t),n(Og,t),n(vg,t),n(ho,t),n(Tg,t),n(Cg,t),n(Ni,t),n(U1,t),n(e0,t),n(Dg,t),n(j1,t),n(GS,t),n(af,t),n(WS,t),n(_g,t),n(bg,t),n(Rg,t),n(Bd,t),n(Yc,t),n(Z1,t),n(c0,t),n(VS,t),n(Yl,t),n(po,t),n(YS,t),n(XS,t),n(ot,t),n(KS,t),n(t0,t),n(Ge,t),n(JS,t),n(eG,t),n(ZS,t),n(e4,t),n(t4,t)}(pv);var n4={},th={};Object.defineProperty(th,"__esModule",{value:!0}),th.ConstantExpression=th.ConstantFieldSpace=void 0;const kbe=ot;class tG{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}th.ConstantFieldSpace=tG;class Mbe extends kbe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new tG),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}th.ConstantExpression=Mbe;var Pbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),jbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Pbe(e,t,n);return jbe(e,t),e};Object.defineProperty(n4,"__esModule",{value:!0}),n4.MalloyToAST=void 0;const nG=xA,qbe=z2,ie=Ube(pv),t7=gv,rG=Yn,zbe=pv,Pn=on,n7=ce,Hbe=Yo,Qbe=th;class iG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class r7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const Gbe=["##! m4warnings=error"];class Wbe extends qbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of Gbe){const s=Hbe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new rG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof r7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new rG.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof nG.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof nG.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Qbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,n7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(ie.isEquality(n))return this.astAt(new ie.ExprEquality(r,n,i),e);if(ie.isComparison(n))return this.astAt(new ie.ExprCompare(r,n,i),e);throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,n7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,n7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new ie.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new ie.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new r7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new r7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new iG)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof zbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new iG}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new ie.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}n4.MalloyToAST=Wbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.Zone=void 0;class Vbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}r4.Zone=Vbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForDocumentSymbols=void 0;const Ybe=Nl,Xbe=on;class Kbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Xbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function Jbe(t,e,n){const r=new Kbe(t,e,[],[]),i=r;return Ybe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}i4.walkForDocumentSymbols=Jbe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.walkForDocumentCompletions=void 0;const Zbe=Nl,eTe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],tTe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],nTe=["source","explore","query","sql"];class rTe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of eTe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of tTe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of nTe)this.completions.push({type:"model_property",text:`${r}: `})}}}function iTe(t,e,n){const r=new rTe(t,[],n),i=r;return Zbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}s4.walkForDocumentCompletions=iTe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.walkForDocumentHelpContext=void 0;const sTe=s6;class oTe extends sTe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function uTe(t,e){return new oTe(e).visit(t)}o4.walkForDocumentHelpContext=uTe;var u4={},Ng={};Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.locationContainsPosition=void 0;function aTe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Ng.locationContainsPosition=aTe,Object.defineProperty(u4,"__esModule",{value:!0}),u4.ReferenceList=void 0;const lTe=Ng;class cTe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,lTe.locationContainsPosition)(r.location,e))return r}}u4.ReferenceList=cTe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isNeedResponse=void 0;function fTe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}a4.isNeedResponse=fTe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.walkForModelAnnotation=void 0;const xTe=Nl;class dTe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function hTe(t,e,n){const r=new dTe(t,e,n),i=r;return xTe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}l4.walkForModelAnnotation=hTe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForTablePath=void 0;const sG=on,pTe=Nl;class gTe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,sG.getId)(e.connectionId()),[r,i]=(0,sG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function mTe(t,e,n){const r=new gTe(t,e),i=r;return pTe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}c4.walkForTablePath=mTe;var yTe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ETe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ATe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&yTe(e,t,n);return ETe(e,t),e};Object.defineProperty(cu,"__esModule",{value:!0}),cu.MalloyParserErrorHandler=cu.MalloyTranslator=cu.MalloyChildTranslator=cu.MalloyTranslation=void 0;const oG=xA,vTe=ce,STe=OA,_Te=F,uG=ATe(pv),CTe=n4,i7=gv,bTe=wa,s7=r4,TTe=i4,RTe=s4,OTe=o4,DTe=u4,f4=a4,NTe=Ng,aG=Yo,wTe=l4,FTe=c4;class LTe extends STe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class ITe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1326
|
+
`)),Fv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Fv.ErrorFactory.structDef}}Z1.SQLSource=OEe,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.SQSource=void 0;const DEe=mu,NEe=J1,wEe=Z1;class FEe extends DEe.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof wEe.SQLSource){const e=new NEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Nv.SQSource=FEe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.SQExtend=void 0;const LEe=z1,IEe=mu;class $Ee extends IEe.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new LEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Lv.SQExtend=$Ee;var Iv={},Oa={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.BinaryBoolean=void 0;const Sz=ce,BEe=Di,kEe=Zt,MEe=po,PEe=ot;class jEe extends PEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[kEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,MEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,BEe.errorFor)("logial required boolean")}}eg.BinaryBoolean=jEe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprLegacyIn=Oa.ExprEquality=Oa.ExprCompare=void 0;const _z=bi,Vt=Zt,UEe=ot,qEe=eg,zEe={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class Cz extends qEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=zEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Oa.ExprCompare=Cz;class HEe extends Cz{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}Oa.ExprEquality=HEe;class QEe extends UEe.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,_z.maxExpressionType)(i,u.expressionType),r=(0,_z.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}Oa.ExprLegacyIn=QEe;var tg={},Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprTime=void 0;const GEe=ce,WEe=ot;class tD extends WEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,GEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new tD(e,r,n.expressionType)}}Md.ExprTime=tD;var Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.Range=void 0;const bz=ce,VEe=Di,YEe=ot;class XEe extends YEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,bz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,bz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,VEe.errorFor)("a range is not a value")}}Kl.Range=XEe,Object.defineProperty(tg,"__esModule",{value:!0}),tg.ExprGranularTime=void 0;const Tz=ce,KEe=Di,Rz=Zt,Oz=er,JEe=ot,$v=Md,Dz=Kl;class ZEe extends JEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Rz.FT.timestampT,Rz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Tz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Tz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,KEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=$v.ExprTime.fromValue("timestamp",n),a=new $v.ExprTime("timestamp",(0,Oz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Dz.Range(u,a)}const i=new $v.ExprTime("date",n.value,n.expressionType),s=(0,Oz.timeOffset)("date",n.value,"+",r,this.units),o=new $v.ExprTime("date",s,n.expressionType);return new Dz.Range(i,o)}}tg.ExprGranularTime=ZEe,Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.Apply=void 0;const eAe=Oa,tAe=kd,Nz=tg;class nAe extends eAe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,tAe.isGranularResult)(r)&&(n=new Nz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Nz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Iv.Apply=nAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.BinaryNumeric=void 0;const rAe=Zt,iAe=ot;class sAe extends iAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[rAe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Pd.BinaryNumeric=sAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.Boolean=void 0;const oAe=ot,uAe=Zt;let aAe=class extends oAe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...uAe.FT.boolT,value:{node:this.value}}}};Bv.Boolean=aAe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const nD=ce,wz=Ge,lAe=Xc;class cAe extends wz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,nD.expressionIsAggregate)(n.expressionType)||((0,nD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof lAe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,nD.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=cAe;class fAe extends wz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Jl.FunctionOrdering=fAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprAddSub=void 0;const xAe=Pd;class dAe extends xAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}kv.ExprAddSub=dAe;var Da={},pt={},ng={};Object.defineProperty(ng,"__esModule",{value:!0}),ng.ReferenceField=void 0;const Fz=kr;class hAe extends Fz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Fz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}ng.ReferenceField=hAe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=bi;function pAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=pAe;function gAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=gAe;function mAe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=mAe;function yAe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=yAe;function EAe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=EAe;function AAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=AAe;function vAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=vAe;function SAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=SAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const _Ae=ng,CAe=rs,Lz=Ge,Iz=Br,Zl=Mn;class wi extends Lz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Iz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new _Ae.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=wi;class bAe extends wi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=bAe;class TAe extends wi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=TAe;class RAe extends wi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=RAe;class OAe extends wi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=OAe;class DAe extends wi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Zl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=DAe;class rD extends wi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Zl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return rD.indexOutputName(this.path)}}pt.IndexFieldReference=rD;class NAe extends wi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Zl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=NAe;class wAe extends wi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Zl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=wAe;class FAe extends wi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Zl.typecheckProject)(e,this)}}pt.ProjectFieldReference=FAe;class LAe extends wi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Zl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=LAe;class IAe extends wi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Zl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=IAe;class $Ae extends wi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Zl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=$Ae;class BAe extends wi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=BAe;class kAe extends Lz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Iz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=kAe;class MAe extends CAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=MAe,Object.defineProperty(Da,"__esModule",{value:!0}),Da.ExprAggregateFunction=void 0;const rg=ce,PAe=Nt,jAe=Di,$z=yr,UAe=Zt,qAe=pt,zAe=ot,HAe=kr,QAe=Xc;class GAe extends zAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[UAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof $z.StructSpaceField))if((0,rg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>WAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,rg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=sD(l,f),m=oD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=VAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,jAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...iD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...iD(e,r))}return n}}Da.ExprAggregateFunction=GAe;function WAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function iD(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof $z.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof HAe.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,PAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,rg.isAtomic)(o)&&!(0,rg.isJoined)(o))if((0,rg.hasExpression)(o)){const u=iD(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function sD(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function oD(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function VAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=sD(i,e),o=oD(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=sD(l,e),f=oD(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof qAe.FieldReference?`${n.refString}.${r}()`:n instanceof QAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprAlternationTree=void 0;const Pv=ce,jd=ot,YAe=po;function uD(t){const e=t.atExpr();switch(e.atNodeType()){case jd.ATNodeType.And:case jd.ATNodeType.Partial:return;case jd.ATNodeType.Or:{if(e instanceof Bz){const n=uD(e.left);if(n){const r=uD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Bz extends jd.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}equalityList(){return this.inList===void 0&&(this.inList=uD(this)||[]),this.inList}apply(e,n,r,i){if((0,YAe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,Pv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Pv.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Pv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Pv.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?jd.ATNodeType.Or:jd.ATNodeType.And}}Mv.ExprAlternationTree=Bz;var Ud={};Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.ExprAsymmetric=void 0;const XAe=Da;class KAe extends XAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}Ud.ExprAsymmetric=KAe;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.ExprAvg=void 0;const JAe=Ud;class ZAe extends JAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}jv.ExprAvg=ZAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprCast=void 0;const eve=er,tve=ot;class nve extends tve.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,eve.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Uv.ExprCast=nve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprCoalesce=void 0;const kz=bi,Mz=Zt,rve=ot;class ive extends rve.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Mz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Mz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,kz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,kz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}qv.ExprCoalesce=ive;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprCount=void 0;const sve=Da;class ove extends sve.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}zv.ExprCount=ove;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprCountDistinct=void 0;const Qv=Zt,uve=Da;class ave extends uve.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Qv.FT.numberT,Qv.FT.stringT,Qv.FT.dateT,Qv.FT.timestampT]}}Hv.ExprCountDistinct=ave;var Gv={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.Limit=void 0;const lve=Ge,cve=En;class fve extends lve.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=cve.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}e0.Limit=fve;var qd={};Object.defineProperty(qd,"__esModule",{value:!0}),qd.PartitionBy=void 0;const xve=Ge;class dve extends xve.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}qd.PartitionBy=dve;var ig={},t0={};Object.defineProperty(t0,"__esModule",{value:!0}),t0.FieldName=void 0;const hve=Ge;class pve extends hve.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}t0.FieldName=pve,Object.defineProperty(ig,"__esModule",{value:!0}),ig.ExprFunc=void 0;const ss=ce,gve=Di,mve=Od,yve=ot,Eve=t0,Pz=Nt;class Ave extends yve.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,ss.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Pz.composeSQLExpr)(L),evalSpace:(0,ss.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,gve.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,ss.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof mve.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=vve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,ss.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ss.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ss.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,ss.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,ss.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ss.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=Sve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new Eve.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,Pz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,ss.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ss.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}ig.ExprFunc=Ave;function vve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,ss.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,ss.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function Sve(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprProps=void 0;const _ve=ce,Cve=Di,bve=Zt,Tve=Jl,Rve=e0,Ove=qd,Dve=ot,Nve=ig;class wve extends Dve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=bve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,_ve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,Cve.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof Ove.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof Rve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof Tve.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof Nve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Gv.ExprProps=wve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprLogicalOp=void 0;const Fve=eg,jz=Zt;class Lve extends Fve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[jz.FT.boolT,jz.FT.aggregateBoolT]}}Wv.ExprLogicalOp=Lve;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprMax=void 0;const Yv=Zt,Ive=Da;class $ve extends Ive.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Yv.FT.numberT,Yv.FT.stringT,Yv.FT.dateT,Yv.FT.timestampT]}returns(e){return e.dataType}}Vv.ExprMax=$ve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprMin=void 0;const Kv=Zt,Bve=Da;class kve extends Bve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Kv.FT.numberT,Kv.FT.stringT,Kv.FT.dateT,Kv.FT.timestampT]}returns(e){return e.dataType}}Xv.ExprMin=kve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprMinus=void 0;const Mve=Di,Uz=Zt,Pve=ot;class jve extends Pve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Uz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Uz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,Mve.errorFor)("negate requires number")}}Jv.ExprMinus=jve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprMulDiv=void 0;const Uve=Pd;class qve extends Uve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Zv.ExprMulDiv=qve;var eS={},sg={};Object.defineProperty(sg,"__esModule",{value:!0}),sg.Unary=void 0;const zve=ot;class Hve extends zve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}sg.Unary=Hve,Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprNot=void 0;const qz=Zt,Qve=sg;class Gve extends Qve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[qz.FT.boolT,qz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}eS.ExprNot=Gve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprNow=void 0;const Wve=ot;class Vve extends Wve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}tS.ExprNow=Vve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprNULL=void 0;const Yve=ot;class Xve extends Yve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}nS.ExprNULL=Xve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprNumber=void 0;const Kve=Zt,Jve=ot;class Zve extends Jve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...Kve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}rS.ExprNumber=Zve;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprParens=void 0;const aD=ot;class eSe extends aD.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}apply(e,n,r,i){return this.expr.atNodeType()===aD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,aD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}iS.ExprParens=eSe;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprRegEx=void 0;const tSe=ot;class nSe extends tSe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}sS.ExprRegEx=nSe;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprString=void 0;const rSe=ot,iSe=Zt;class sSe extends rSe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...iSe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}oS.ExprString=sSe;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprSum=void 0;const oSe=Ud;class uSe extends oSe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}uS.ExprSum=uSe;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprTimeExtract=void 0;const Zc=ce,zz=Di,lD=ot,aSe=Kl;class og extends lD.ExpressionDef{static extractor(e){const n=og.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=og.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof aSe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,zz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,lD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,lD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,zz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}aS.ExprTimeExtract=og,og.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var lS={},go={},cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.QueryInputSpace=void 0;const lSe=Ni,cSe=Rd;class fSe extends cSe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof lSe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}cS.QueryInputSpace=fSe;var xSe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),dSe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),hSe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&xSe(e,t,n);return dSe(e,t),e};Object.defineProperty(go,"__esModule",{value:!0}),go.ReduceFieldSpace=go.QuerySpace=go.QueryOperationSpace=void 0;const fS=hSe(ce),cD=Wl,pSe=t0,gSe=kr,mSe=pt,ySe=Rd,ESe=Q1,ASe=yr,vSe=cS;class Hz extends ySe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new vSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof ASe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();fS.isAtomicFieldType(l.dataType)&&fS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}go.QueryOperationSpace=Hz;class Qz extends Hz{addRefineFromFields(e){var n;if(fS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new pSe.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new ESe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof mSe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof gSe.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!_Se(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(fS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,cD.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,cD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,cD.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}go.QuerySpace=Qz;class SSe extends Qz{constructor(){super(...arguments),this.segmentType="reduce"}}go.ReduceFieldSpace=SSe;function _Se(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprUngroup=void 0;const Gz=ce,CSe=go,bSe=Zt,TSe=ot;class RSe extends TSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=bSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Gz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Gz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof CSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}lS.ExprUngroup=RSe;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ForRange=void 0;const Wz=bi,Vz=Di,Yz=Zt,dS=er,OSe=ot,hS=Md,Xz=Kl;class DSe extends OSe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Yz.FT.timestampT,Yz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Vz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Wz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Wz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Vz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,dS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,dS.timeOffset)("date",i.value,"+",o.value,u),g=new hS.ExprTime("date",m);return new Xz.Range(p,g).apply(e,n,r)}const l=hS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,dS.castDateToTimestamp)(f),c=new hS.ExprTime("timestamp",f,i.expressionType)}const x=(0,dS.timeOffset)("timestamp",f,"+",o.value,u),h=new hS.ExprTime("timestamp",x,i.expressionType);return new Xz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}xS.ForRange=DSe;var tr={},Fi={};Object.defineProperty(Fi,"__esModule",{value:!0});class ef extends Error{}class NSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class wSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class FSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class ug extends ef{}class Kz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class n0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",mo="short",os="long",fD={year:Me,month:Me,day:Me},Jz={year:Me,month:mo,day:Me},LSe={year:Me,month:mo,day:Me,weekday:mo},Zz={year:Me,month:os,day:Me},eH={year:Me,month:os,day:Me,weekday:os},tH={hour:Me,minute:Me},nH={hour:Me,minute:Me,second:Me},rH={hour:Me,minute:Me,second:Me,timeZoneName:mo},iH={hour:Me,minute:Me,second:Me,timeZoneName:os},sH={hour:Me,minute:Me,hourCycle:"h23"},oH={hour:Me,minute:Me,second:Me,hourCycle:"h23"},uH={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:mo},aH={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:os},lH={year:Me,month:Me,day:Me,hour:Me,minute:Me},cH={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},fH={year:Me,month:mo,day:Me,hour:Me,minute:Me},xH={year:Me,month:mo,day:Me,hour:Me,minute:Me,second:Me},ISe={year:Me,month:mo,day:Me,weekday:mo,hour:Me,minute:Me},dH={year:Me,month:os,day:Me,hour:Me,minute:Me,timeZoneName:mo},hH={year:Me,month:os,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:mo},pH={year:Me,month:os,day:Me,weekday:os,hour:Me,minute:Me,timeZoneName:os},gH={year:Me,month:os,day:Me,weekday:os,hour:Me,minute:Me,second:Me,timeZoneName:os};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function pS(t){return typeof t=="number"&&t%1===0}function $Se(t){return typeof t=="string"}function BSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function mH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function kSe(t){return Array.isArray(t)?t:[t]}function yH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function MSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function zd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Na(t,e,n){return pS(t)&&t>=e&&t<=n}function PSe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function r0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function xD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function dD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function ag(t){return t%4===0&&(t%100!==0||t%400===0)}function lg(t){return ag(t)?366:365}function gS(t,e){const n=PSe(e-1,12)+1,r=t+(e-n)/12;return n===2?ag(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function hD(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function mS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function pD(t){return t>99?t:t>60?1900+t:2e3+t}function EH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function yS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function AH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function ES(t,e){const n={};for(const r in t)if(zd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=AH(i)}return n}function cg(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function AS(t){return MSe(t,["hour","minute","second","millisecond"])}const vH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,jSe=["January","February","March","April","May","June","July","August","September","October","November","December"],SH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],USe=["J","F","M","A","M","J","J","A","S","O","N","D"];function _H(t){switch(t){case"narrow":return[...USe];case"short":return[...SH];case"long":return[...jSe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const CH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],bH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],qSe=["M","T","W","T","F","S","S"];function TH(t){switch(t){case"narrow":return[...qSe];case"short":return[...bH];case"long":return[...CH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const RH=["AM","PM"],zSe=["Before Christ","Anno Domini"],HSe=["BC","AD"],QSe=["B","A"];function OH(t){switch(t){case"narrow":return[...QSe];case"short":return[...HSe];case"long":return[...zSe];default:return null}}function GSe(t){return RH[t.hour<12?0:1]}function WSe(t,e){return TH(e)[t.weekday-1]}function VSe(t,e){return _H(e)[t.month-1]}function YSe(t,e){return OH(e)[t.year<0?0:1]}function XSe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function DH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const KSe={D:fD,DD:Jz,DDD:Zz,DDDD:eH,t:tH,tt:nH,ttt:rH,tttt:iH,T:sH,TT:oH,TTT:uH,TTTT:aH,f:lH,ff:fH,fff:dH,ffff:pH,F:cH,FF:xH,FFF:hH,FFFF:gH};class Li{static create(e,n={}){return new Li(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return KSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return wn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?GSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?VSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?WSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Li.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?YSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return DH(Li.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Li.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return DH(s,i(u))}}class yo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Hd=class{get type(){throw new n0}get name(){throw new n0}get ianaName(){return this.name}get isUniversal(){throw new n0}offsetName(e,n){throw new n0}formatOffset(e,n){throw new n0}offset(e){throw new n0}equals(e){throw new n0}get isValid(){throw new n0}},gD=null;class vS extends Hd{static get instance(){return gD===null&&(gD=new vS),gD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return EH(e,n,r)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let SS={};function JSe(t){return SS[t]||(SS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),SS[t]}const ZSe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function e4e(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function t4e(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ZSe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let _S={};class yu extends Hd{static create(e){return _S[e]||(_S[e]=new yu(e)),_S[e]}static resetCache(){_S={},SS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return EH(e,n,r,this.name)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=JSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?t4e(r,n):e4e(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=hD({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let mD=null;class Pr extends Hd{static get utcInstance(){return mD===null&&(mD=new Pr(0)),mD}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(yS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${cg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${cg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return cg(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class NH extends Hd{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function i0(t,e){if(_t(t)||t===null)return e;if(t instanceof Hd)return t;if($Se(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new NH(t)}let wH=()=>Date.now(),FH="system",LH=null,IH=null,$H=null,BH;class Fn{static get now(){return wH}static set now(e){wH=e}static set defaultZone(e){FH=e}static get defaultZone(){return i0(FH,vS.instance)}static get defaultLocale(){return LH}static set defaultLocale(e){LH=e}static get defaultNumberingSystem(){return IH}static set defaultNumberingSystem(e){IH=e}static get defaultOutputCalendar(){return $H}static set defaultOutputCalendar(e){$H=e}static get throwOnInvalid(){return BH}static set throwOnInvalid(e){BH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let kH={};function n4e(t,e={}){const n=JSON.stringify([t,e]);let r=kH[n];return r||(r=new Intl.ListFormat(t,e),kH[n]=r),r}let yD={};function ED(t,e={}){const n=JSON.stringify([t,e]);let r=yD[n];return r||(r=new Intl.DateTimeFormat(t,e),yD[n]=r),r}let AD={};function r4e(t,e={}){const n=JSON.stringify([t,e]);let r=AD[n];return r||(r=new Intl.NumberFormat(t,e),AD[n]=r),r}let vD={};function i4e(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=vD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),vD[i]=s),s}let fg=null;function s4e(){return fg||(fg=new Intl.DateTimeFormat().resolvedOptions().locale,fg)}function o4e(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=ED(t).resolvedOptions()}catch{n=ED(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function u4e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function a4e(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function l4e(t){const e=[];for(let n=1;n<=7;n++){const r=at.utc(2016,11,13+n);e.push(t(r))}return e}function CS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function c4e(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class f4e{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=r4e(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):dD(e,3);return wn(n,this.padTo)}}}class x4e{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:at.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=ED(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class d4e{constructor(e,n,r){this.opts={style:"long",...r},!n&&mH()&&(this.rtf=i4e(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):XSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":s4e()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){fg=null,yD={},AD={},vD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=o4e(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=u4e(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=c4e(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return CS(this,e,r,_H,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=a4e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return CS(this,e,r,TH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=l4e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return CS(this,void 0,e,()=>RH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[at.utc(2016,11,13,9),at.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return CS(this,e,n,OH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[at.utc(-40,1,1),at.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new f4e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new x4e(e,this.intl,n)}relFormatter(e={}){return new d4e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return n4e(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Gd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Wd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function MH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=r0(e[n+i]);return[r,null,n+i]}}const PH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,h4e=`(?:${PH.source}?(?:\\[(${vH.source})\\])?)?`,SD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jH=RegExp(`${SD.source}${h4e}`),_D=RegExp(`(?:T${jH.source})?`),p4e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,g4e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,m4e=/(\d{4})-?(\d{3})/,y4e=MH("weekYear","weekNumber","weekDay"),E4e=MH("year","ordinal"),A4e=/(\d{4})-(\d\d)-(\d\d)/,UH=RegExp(`${SD.source} ?(?:${PH.source}|(${vH.source}))?`),v4e=RegExp(`(?: ${UH.source})?`);function Vd(t,e,n){const r=t[e];return _t(r)?n:r0(r)}function S4e(t,e){return[{year:Vd(t,e),month:Vd(t,e+1,1),day:Vd(t,e+2,1)},null,e+3]}function Yd(t,e){return[{hours:Vd(t,e,0),minutes:Vd(t,e+1,0),seconds:Vd(t,e+2,0),milliseconds:xD(t[e+3])},null,e+4]}function xg(t,e){const n=!t[e]&&!t[e+1],r=yS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function dg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const _4e=RegExp(`^T?${SD.source}$`),C4e=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function b4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(xD(l),f)}]}const T4e={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function CD(t,e,n,r,i,s,o){const u={year:e.length===2?pD(r0(e)):r0(e),month:SH.indexOf(n)+1,day:r0(r),hour:r0(i),minute:r0(s)};return o&&(u.second=r0(o)),t&&(u.weekday=t.length>3?CH.indexOf(t)+1:bH.indexOf(t)+1),u}const R4e=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function O4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=CD(e,i,r,n,s,o,u);let h;return a?h=T4e[a]:l?h=0:h=yS(c,f),[x,new Pr(h)]}function D4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const N4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,w4e=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,F4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function qH(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,i,r,n,s,o,u),Pr.utcInstance]}function L4e(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,u,n,r,i,s,o),Pr.utcInstance]}const I4e=Qd(p4e,_D),$4e=Qd(g4e,_D),B4e=Qd(m4e,_D),k4e=Qd(jH),zH=Gd(S4e,Yd,xg,dg),M4e=Gd(y4e,Yd,xg,dg),P4e=Gd(E4e,Yd,xg,dg),j4e=Gd(Yd,xg,dg);function U4e(t){return Wd(t,[I4e,zH],[$4e,M4e],[B4e,P4e],[k4e,j4e])}function q4e(t){return Wd(D4e(t),[R4e,O4e])}function z4e(t){return Wd(t,[N4e,qH],[w4e,qH],[F4e,L4e])}function H4e(t){return Wd(t,[C4e,b4e])}const Q4e=Gd(Yd);function G4e(t){return Wd(t,[_4e,Q4e])}const W4e=Qd(A4e,v4e),V4e=Qd(UH),Y4e=Gd(Yd,xg,dg);function X4e(t){return Wd(t,[W4e,zH],[V4e,Y4e])}const K4e="Invalid Duration",HH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},J4e={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...HH},Ls=146097/400,Xd=146097/4800,Z4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Xd/7,days:Xd,hours:Xd*24,minutes:Xd*24*60,seconds:Xd*24*60*60,milliseconds:Xd*24*60*60*1e3},...HH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],e_e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function t_e(t){return t<0?Math.floor(t):Math.ceil(t)}function QH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?t_e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function n_e(t,e){e_e.reduce((n,r)=>_t(e[r])?n:(n&&QH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Z4e:J4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:ES(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=H4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=G4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new FSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Kz(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Li.create(this.loc,r).formatDurationFromString(this,e):K4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=dD(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(zd(n.values,i)||zd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=AH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...ES(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return n_e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&QH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const hg="Invalid Interval";function r_e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new wSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=yg(e),i=yg(n),s=r_e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=yg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=yg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=at.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=at.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(yg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:hg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:hg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:hg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:hg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:hg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let pg=class{static hasDST(e=Fn.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return i0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:mH()}}};function GH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function i_e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=GH(u,a);return(l-l%7)/7}],["days",GH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function s_e(t,e,n,r){let[i,s,o,u]=i_e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const bD={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},WH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},o_e=bD.hanidec.replace(/[\[|\]]/g,"").split("");function u_e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(bD.hanidec)!==-1)e+=o_e.indexOf(t[n]);else for(const i in WH){const[s,o]=WH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Eo({numberingSystem:t},e=""){return new RegExp(`${bD[t||"latn"]}${e}`)}const a_e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(u_e(n))}}const VH="[ ]",YH=new RegExp(VH,"g");function l_e(t){return t.replace(/\./g,"\\.?").replace(YH,VH)}function XH(t){return t.replace(/\./g,"").replace(YH," ").toLowerCase()}function Ao(t,e){return t===null?null:{regex:RegExp(t.map(l_e).join("|")),deser:([n])=>t.findIndex(r=>XH(n)===XH(r))+e}}function KH(t,e){return{regex:t,deser:([,n,r])=>yS(n,r),groups:e}}function TD(t){return{regex:t,deser:([e])=>e}}function c_e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function f_e(t,e){const n=Eo(e),r=Eo(e,"{2}"),i=Eo(e,"{3}"),s=Eo(e,"{4}"),o=Eo(e,"{6}"),u=Eo(e,"{1,2}"),a=Eo(e,"{1,3}"),l=Eo(e,"{1,6}"),c=Eo(e,"{1,9}"),f=Eo(e,"{2,4}"),x=Eo(e,"{4,6}"),h=g=>({regex:RegExp(c_e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Ao(e.eras("short",!1),0);case"GG":return Ao(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,pD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Ao(e.months("short",!0,!1),1);case"MMMM":return Ao(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Ao(e.months("short",!1,!1),1);case"LLLL":return Ao(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return TD(c);case"uu":return TD(u);case"uuu":return $t(n);case"a":return Ao(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,pD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Ao(e.weekdays("short",!1,!1),1);case"EEEE":return Ao(e.weekdays("long",!1,!1),1);case"ccc":return Ao(e.weekdays("short",!0,!1),1);case"cccc":return Ao(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return KH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return KH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return TD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:a_e};return m.token=t,m}const x_e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function d_e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=x_e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function h_e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function p_e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(zd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function g_e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=xD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let RD=null;function m_e(){return RD||(RD=at.fromMillis(1555555555555)),RD}function y_e(t,e){if(t.literal)return t;const n=Li.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Li.create(e,n).formatDateTimeParts(m_e()).map(o=>d_e(o,e,n));return s.includes(void 0)?t:s}function E_e(t,e){return Array.prototype.concat(...t.map(n=>y_e(n,e)))}function JH(t,e,n){const r=E_e(Li.parseFormat(n),t),i=r.map(o=>f_e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=h_e(i),a=RegExp(o,"i"),[l,c]=p_e(e,a,u),[f,x,h]=c?g_e(c):[null,null,void 0];if(zd(c,"a")&&zd(c,"H"))throw new ug("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function A_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=JH(t,e,n);return[r,i,s,o]}const ZH=[0,31,59,90,120,151,181,212,243,273,304,334],eQ=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new yo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function tQ(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function nQ(t,e,n){return n+(ag(t)?eQ:ZH)[e-1]}function rQ(t,e){const n=ag(t)?eQ:ZH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function OD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r),s=tQ(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=mS(u)):o>mS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...AS(t)}}function iQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=tQ(e,1,4),s=lg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=lg(u)):o>s?(u=e+1,o-=lg(e)):u=e;const{month:a,day:l}=rQ(u,o);return{year:u,month:a,day:l,...AS(t)}}function DD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r);return{year:e,ordinal:i,...AS(t)}}function sQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=rQ(e,n);return{year:e,month:r,day:i,...AS(t)}}function v_e(t){const e=pS(t.weekYear),n=Na(t.weekNumber,1,mS(t.weekYear)),r=Na(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function S_e(t){const e=pS(t.year),n=Na(t.ordinal,1,lg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function oQ(t){const e=pS(t.year),n=Na(t.month,1,12),r=Na(t.day,1,gS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function uQ(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Na(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Na(n,0,59),u=Na(r,0,59),a=Na(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const ND="Invalid DateTime",aQ=864e13;function bS(t){return new yo("unsupported zone",`the zone "${t.name}" is not supported`)}function wD(t){return t.weekData===null&&(t.weekData=OD(t.c)),t.weekData}function gg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new at({...n,...e,old:n})}function lQ(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function cQ(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function TS(t,e,n){return lQ(hD(t),e,n)}function fQ(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,gS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=hD(s);let[a,l]=lQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function mg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=at.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return at.invalid(new yo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function RS(t,e,n=!0){return t.isValid?Li.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function FD(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function xQ(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const dQ={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},__e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},C_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},hQ=["year","month","day","hour","minute","second","millisecond"],b_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],T_e=["year","ordinal","hour","minute","second","millisecond"];function pQ(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Kz(t);return e}function gQ(t,e){const n=i0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of hQ)_t(t[l])&&(t[l]=dQ[l]);const u=oQ(t)||uQ(t);if(u)return at.invalid(u);const a=n.offset(i);[s,o]=TS(t,a,n)}return new at({ts:s,zone:n,loc:r,o})}function mQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=dD(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function yQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class at{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new yo("invalid input"):null)||(n.isValid?null:bS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=cQ(this.ts,u),r=Number.isNaN(i.year)?new yo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new at({})}static local(){const[e,n]=yQ(arguments),[r,i,s,o,u,a,l]=n;return gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=yQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=BSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=i0(n.zone,Fn.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(bS(i))}static fromMillis(e,n={}){if(tf(e))return e<-aQ||e>aQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:i0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new at({ts:e*1e3,zone:i0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=i0(n.zone,Fn.defaultZone);if(!r.isValid)return at.invalid(bS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=ES(e,pQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new ug("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=cQ(i,s);h?(p=b_e,m=__e,g=OD(g)):u?(p=T_e,m=C_e,g=DD(g)):(p=hQ,m=dQ);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?v_e(o):u?S_e(o):oQ(o),A=E||uQ(o);if(A)return at.invalid(A);const v=h?iQ(o):u?sQ(o):o,[_,S]=TS(v,s,r),C=new at({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?at.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=U4e(e);return mg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=q4e(e);return mg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=z4e(e);return mg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=A_e(o,e,n);return c?at.invalid(c):mg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return at.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=X4e(e);return mg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof yo?e:new yo(e,n);if(Fn.throwOnInvalid)throw new NSe(r);return new at({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?wD(this).weekYear:NaN}get weekNumber(){return this.isValid?wD(this).weekNumber:NaN}get weekday(){return this.isValid?wD(this).weekday:NaN}get ordinal(){return this.isValid?DD(this.c).ordinal:NaN}get monthShort(){return this.isValid?pg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?pg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?pg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?pg.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return ag(this.year)}get daysInMonth(){return gS(this.year,this.month)}get daysInYear(){return this.isValid?lg(this.year):NaN}get weeksInWeekYear(){return this.isValid?mS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Li.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=i0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=TS(o,s,e)}return gg(this,{ts:i,zone:e})}else return at.invalid(bS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return gg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=ES(e,pQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new ug("Can't mix ordinal dates with month/day");let l;r?l=iQ({...OD(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(gS(l.year,l.month),l.day))):l=sQ({...DD(this.c),...n});const[c,f]=TS(l,this.o,this.zone);return gg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return gg(this,fQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return gg(this,fQ(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Li.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):ND}toLocaleString(e=fD,n={}){return this.isValid?Li.create(this.loc.clone(n),e).formatDateTime(this):ND}toLocaleParts(e={}){return this.isValid?Li.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=FD(this,o);return u+="T",u+=xQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?FD(this,e==="extended"):null}toISOWeekDate(){return RS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+xQ(this,o==="extended",n,e,r,s):null}toRFC2822(){return RS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return RS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?FD(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),RS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():ND}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=kSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=s_e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(at.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||at.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),mQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?mQ(e.base||at.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(at.isDateTime))throw new Fs("min requires all arguments be DateTimes");return yH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(at.isDateTime))throw new Fs("max requires all arguments be DateTimes");return yH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return JH(o,e,n)}static fromStringExplain(e,n,r={}){return at.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return fD}static get DATE_MED(){return Jz}static get DATE_MED_WITH_WEEKDAY(){return LSe}static get DATE_FULL(){return Zz}static get DATE_HUGE(){return eH}static get TIME_SIMPLE(){return tH}static get TIME_WITH_SECONDS(){return nH}static get TIME_WITH_SHORT_OFFSET(){return rH}static get TIME_WITH_LONG_OFFSET(){return iH}static get TIME_24_SIMPLE(){return sH}static get TIME_24_WITH_SECONDS(){return oH}static get TIME_24_WITH_SHORT_OFFSET(){return uH}static get TIME_24_WITH_LONG_OFFSET(){return aH}static get DATETIME_SHORT(){return lH}static get DATETIME_SHORT_WITH_SECONDS(){return cH}static get DATETIME_MED(){return fH}static get DATETIME_MED_WITH_SECONDS(){return xH}static get DATETIME_MED_WITH_WEEKDAY(){return ISe}static get DATETIME_FULL(){return dH}static get DATETIME_FULL_WITH_SECONDS(){return hH}static get DATETIME_HUGE(){return pH}static get DATETIME_HUGE_WITH_SECONDS(){return gH}}function yg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return at.fromJSDate(t);if(t&&typeof t=="object")return at.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const R_e="2.5.2";var O_e=Fi.DateTime=at;Fi.Duration=Ct,Fi.FixedOffsetZone=Pr,Fi.IANAZone=yu,Fi.Info=pg,Fi.Interval=dn,Fi.InvalidZone=NH,Fi.Settings=Fn,Fi.SystemZone=vS,Fi.VERSION=R_e,Fi.Zone=Hd,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const s0=Fi,D_e=ce,N_e=Kl,EQ=Md,LD=ot;class w_e extends Error{}tr.TimeFormatError=w_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const AQ="yyyy",vQ=`${AQ}-LL`,$s=`${vQ}-dd`,SQ=`${$s} HH`,_Q=`${SQ}:mm`,ID=`${_Q}:ss`;class CQ extends LD.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class $D extends CQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=s0.DateTime.fromFormat(e,ID);if(s.isValid)return new $D(r,n);if(s=s0.DateTime.fromFormat(e,_Q),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(ID);return new BD(r,n,"timestamp",o)}}}tr.LiteralTimestamp=$D;class BD extends CQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,LD.getMorphicValue)(i,"timestamp"),a=(0,LD.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,D_e.isTemporalField)(o.dataType)){const u=o.dataType;return new N_e.Range(new EQ.ExprTime(u,i.value),new EQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class kD extends BD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,SQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(ID),new kD(n,r)}}tr.LiteralHour=kD;class Eg extends BD{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class MD extends Eg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new MD(n,r)}}tr.LiteralDay=MD;class PD extends Eg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=s0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new PD(n,r)}}}tr.LiteralWeek=PD;class jD extends Eg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,vQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new jD(n,r)}}}tr.LiteralMonth=jD;class UD extends Eg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=s0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new UD(n,r)}}}tr.LiteralQuarter=UD;class qD extends Eg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=s0.DateTime.fromFormat(n.text,AQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new qD(n,r)}}}tr.LiteralYear=qD;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.PartialCompare=void 0;const bQ=ot;class F_e extends bQ.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}atNodeType(){return bQ.ATNodeType.Partial}}OS.PartialCompare=F_e;var Kd={};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.PickWhen=Kd.Pick=void 0;const Eu=ce,Jd=Zt,L_e=ot,I_e=Ge;function DS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class $_e extends L_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"case",kids:{caseWhen:[],caseThen:[]}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Jd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=DS(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=DS(s,l),Jd.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"case",kids:{caseWhen:[],caseThen:[]}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Jd.FT.typeEq(a.when,Jd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Jd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=DS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=DS(i,u),Jd.FT.typeEq(i,u,!0)?(n.kids.caseElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Kd.Pick=$_e;class B_e extends I_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}Kd.PickWhen=B_e;var Zd={};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.CaseWhen=Zd.Case=void 0;const k_e=ot,M_e=Ge,Ag=Zt,uf=bi;function TQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class P_e extends k_e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,uf.maxExpressionType)(i,o.expressionType),s=(0,uf.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!Ag.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Ag.FT.typeEq(l.when,Ag.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Ag.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=TQ(a,l.then),i=(0,uf.maxExpressionType)(i,(0,uf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,uf.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!Ag.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=TQ(a,l),i=(0,uf.maxExpressionType)(i,l.expressionType),s=(0,uf.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}Zd.Case=P_e;class j_e extends M_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}Zd.CaseWhen=j_e;var eh={};Object.defineProperty(eh,"__esModule",{value:!0}),eh.RecordLiteral=eh.RecordElement=void 0;const RQ=bi,U_e=ot,q_e=Ge;class z_e extends q_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}eh.RecordElement=z_e;class H_e extends U_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,RQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,RQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}eh.RecordLiteral=H_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.Timeframe=void 0;const Q_e=ce,G_e=Ge;class W_e extends G_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,Q_e.isTimestampUnit)(n)?n:"second"}}NS.Timeframe=W_e;var wS={};Object.defineProperty(wS,"__esModule",{value:!0}),wS.TopBy=void 0;const V_e=ce,OQ=ot,Y_e=Ge;class X_e extends Y_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof OQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof OQ.ExpressionDef){const n=this.by.getExpression(e);return(0,V_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}wS.TopBy=X_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.ImportStatement=o0.ImportSelect=o0.ImportSourceName=void 0;const zD=Ge;class K_e extends zD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}o0.ImportSourceName=K_e;class J_e extends zD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}o0.ImportSelect=J_e;class Z_e extends zD.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}o0.ImportStatement=Z_e;var vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.ExtendBlock=void 0;const e5e=Ge,t5e=En;class n5e extends e5e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=t5e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}vg.ExtendBlock=n5e;var FS={};Object.defineProperty(FS,"__esModule",{value:!0}),FS.Argument=void 0;const r5e=Ge;class i5e extends r5e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}FS.Argument=i5e;var LS={};Object.defineProperty(LS,"__esModule",{value:!0}),LS.HasParameter=void 0;const DQ=ce,s5e=Ge;class o5e extends s5e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,DQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,DQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}LS.HasParameter=o5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.AnonymousQuery=void 0;const u5e=Ge,a5e=Br;class l5e extends u5e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=a5e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}IS.AnonymousQuery=l5e;var u0={};Object.defineProperty(u0,"__esModule",{value:!0}),u0.View=void 0;const c5e=Ge;let f5e=class extends c5e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};u0.View=f5e;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.ViewArrow=void 0;const x5e=yr,d5e=u0;class h5e extends d5e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new x5e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}$S.ViewArrow=h5e;var BS={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.refine=void 0;const HD=bi,QD=Wl;function p5e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,HD.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,HD.isQuerySegment)(o)&&(0,HD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,QD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,QD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(QD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Sg.refine=p5e,Object.defineProperty(BS,"__esModule",{value:!0}),BS.ViewRefine=void 0;const g5e=Mr,m5e=is,y5e=Sg,E5e=u0;class A5e extends E5e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,m5e.getFinalStruct)(this.refinement,e.structDef(),i):g5e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,y5e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}BS.ViewRefine=A5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.ReferenceView=void 0;const GD=ce,NQ=Mr,v5e=is,S5e=kr,_5e=Sg,C5e=u0;class b5e extends C5e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:NQ.ErrorFactory.structDef,outputStruct:NQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof S5e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,GD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,GD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,GD.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,v5e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,_5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}kS.ReferenceView=b5e;var MS={},_g={},PS={},Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Index=void 0;const T5e=Ge,R5e=En;let O5e=class extends T5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=R5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Cg.Index=O5e;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.SampleProperty=void 0;const D5e=Ge,wQ=En;class N5e extends D5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=wQ.LegalRefinementStage.Tail,this.forceQueryClass=wQ.QueryClass.Index}sampling(){return this.sample}}bg.SampleProperty=N5e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.IndexFieldSpace=void 0;const FQ=ce,WD=pt,w5e=kr,F5e=go,L5e=ng,I5e=yr;class $5e extends F5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof WD.FieldReference?super.pushFields(n):n instanceof WD.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof w5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof L5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof I5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=WD.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,FQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,FQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}jS.IndexFieldSpace=$5e,Object.defineProperty(PS,"__esModule",{value:!0}),PS.IndexBuilder=void 0;const VD=ce,B5e=Mr,k5e=ho,M5e=Cg,P5e=e0,j5e=bg,U5e=jS;class q5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new U5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof k5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof P5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof M5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof j5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,VD.isIndexSegment)(e)&&!(0,VD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),B5e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,VD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}PS.IndexBuilder=q5e;var US={},Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.GroupBy=void 0;const z5e=rs,LQ=En;class H5e extends z5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=LQ.LegalRefinementStage.Single,this.forceQueryClass=LQ.QueryClass.Grouping}}Tg.GroupBy=H5e;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ProjectFieldSpace=void 0;const YD=ce,Q5e=go;class G5e extends Q5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,YD.expressionIsAggregate)(e.expressionType)?!1:(0,YD.expressionInvolvesAggregate)(e.expressionType)&&(0,YD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}qS.ProjectFieldSpace=G5e;var a0={},af={};Object.defineProperty(af,"__esModule",{value:!0}),af.Ordering=af.OrderBy=void 0;const W5e=ce,IQ=t0,$Q=Ge,V5e=En;class Y5e extends $Q.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof IQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof IQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,W5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}af.OrderBy=Y5e;class X5e extends $Q.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=V5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}af.Ordering=X5e;var Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.Top=void 0;const BQ=ce,K5e=t0,J5e=Ge,Z5e=En;let eCe=class extends J5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=Z5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof K5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,BQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,BQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Rg.Top=eCe,Object.defineProperty(a0,"__esModule",{value:!0}),a0.ReduceBuilder=a0.QuerySegmentBuilder=void 0;const kQ=ce,tCe=Mr,nCe=ho,rCe=e0,MQ=af,PQ=Rg,iCe=go,sCe=rs;class jQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof sCe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof nCe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof PQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof rCe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof MQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof PQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof MQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}a0.QuerySegmentBuilder=jQ;class oCe extends jQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new iCe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,kQ.isReduceSegment)(e)||(0,kQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),tCe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}a0.ReduceBuilder=oCe,Object.defineProperty(US,"__esModule",{value:!0}),US.ProjectBuilder=void 0;const UQ=ce,uCe=Mr,aCe=Tg,lCe=qS,cCe=a0;class fCe extends cCe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new lCe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof aCe.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,UQ.isProjectSegment)(e)||(0,UQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),uCe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}US.ProjectBuilder=fCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.PartialBuilder=void 0;const xCe=bi,dCe=a0;class hCe extends dCe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,xCe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}zS.PartialBuilder=hCe,Object.defineProperty(_g,"__esModule",{value:!0}),_g.QOpDesc=void 0;const pCe=PS,gCe=US,mCe=a0,yCe=Ge,ECe=is,ACe=yr,lf=En,vCe=zS;class SCe extends yCe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=lf.QueryClass.Grouping:this.refineThis.type==="project"?n=lf.QueryClass.Project:this.refineThis.type==="index"&&(n=lf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=lf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case lf.QueryClass.Grouping:return new mCe.ReduceBuilder(e,this.refineThis,n,r);case lf.QueryClass.Project:return new gCe.ProjectBuilder(e,this.refineThis,n,r);case lf.QueryClass.Index:return new pCe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new vCe.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new ACe.StaticSourceSpace((0,ECe.opOutputStruct)(this,e.structDef(),i))}}}_g.QOpDesc=SCe,Object.defineProperty(MS,"__esModule",{value:!0}),MS.QOpDescView=void 0;const _Ce=ce,CCe=yr,qQ=_g,bCe=is,XD=En,TCe=u0;class RCe extends TCe.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,_Ce.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new qQ.QOpDesc([]),o=new qQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case XD.LegalRefinementStage.Head:s.push(u);break;case XD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case XD.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,bCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new CCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}MS.QOpDescView=RCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const zQ=ce,OCe=Zt,DCe=kd,NCe=Ge,cf=Mn,wCe=Br,FCe=kr;class l0 extends NCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=wCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new KD(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,zQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,DCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof KD&&e.foundCircle)&&r.dataType!=="error"){const u=OCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new HQ(e,this))}}hn.AtomicFieldDeclaration=l0;class LCe extends l0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=LCe;class ICe extends l0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=ICe;class $Ce extends l0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=$Ce;class BCe extends l0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=BCe;class kCe extends l0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=kCe;class MCe extends l0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=MCe;class PCe extends l0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,cf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=PCe;class KD{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=KD;class HQ extends FCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,zQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=HQ;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.Aggregate=void 0;const jCe=rs,QQ=En;let UCe=class extends jCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=QQ.LegalRefinementStage.Single,this.forceQueryClass=QQ.QueryClass.Grouping}};HS.Aggregate=UCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.Calculate=void 0;const qCe=rs,zCe=En;class HCe extends qCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=zCe.LegalRefinementStage.Single}}QS.Calculate=HCe;var Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.Dimensions=void 0;const QCe=Vl;class GCe extends QCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Og.Dimensions=GCe;var Dg={};Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.Measures=void 0;const WCe=Vl;class VCe extends WCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Dg.Measures=VCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.Nests=void 0;const YCe=rs,GQ=En;class XCe extends YCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=GQ.LegalRefinementStage.Single,this.forceQueryClass=GQ.QueryClass.Grouping}}GS.Nests=XCe;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.ProjectStatement=void 0;const KCe=rs,WQ=En;class JCe extends KCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=WQ.QueryClass.Project,this.queryRefinementStage=WQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}WS.ProjectStatement=JCe;var c0={},wa={};Object.defineProperty(wa,"__esModule",{value:!0}),wa.findReferences=wa.deprecatedParseTableURI=wa.constructTableKey=void 0;const ZCe=Nl,JD=on;function ZD(t){const e=(0,JD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,JD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class ebe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=VQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,JD.getId)(e.connectionId()),r=ZD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=ZD(e.tableURI()),{connectionName:r,tablePath:i}=YQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=ZD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function VQ(t,e){return t===void 0?e:`${t}:${e}`}wa.constructTableKey=VQ;function YQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}wa.deprecatedParseTableURI=YQ;function tbe(t,e,n){const r=new ebe(t,e),i=r;return ZCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}wa.findReferences=tbe,Object.defineProperty(c0,"__esModule",{value:!0}),c0.TableFunctionSource=c0.TableMethodSource=c0.TableSource=void 0;const XQ=wa,nbe=xo,KQ=Mr;class e7 extends nbe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return KQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,XQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),KQ.ErrorFactory.structDef}}c0.TableSource=e7;class rbe extends e7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}c0.TableMethodSource=rbe;class ibe extends e7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,XQ.deprecatedParseTableURI)(this.tableURI)}}c0.TableFunctionSource=ibe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.SQLString=void 0;const sbe=Ge,JQ=mu;class obe extends sbe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(ube)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof JQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}VS.SQLString=obe;function ube(t){return t instanceof JQ.SourceQueryElement}var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.SourceDesc=void 0;const abe=Ge;class lbe extends abe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}YS.SourceDesc=lbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.isSourceProperty=void 0;const cbe=ho,fbe=Vl,xbe=Nd,dbe=Xl,hbe=wd,pbe=Fd,gbe=Ld,mbe=Yl,ybe=Ni;function Ebe(t){return t instanceof cbe.Filter||t instanceof ybe.JoinStatement||t instanceof fbe.DeclareFields||t instanceof xbe.FieldListEdit||t instanceof dbe.Renames||t instanceof hbe.PrimaryKey||t instanceof mbe.ObjectAnnotation||t instanceof pbe.Views||t instanceof gbe.TimezoneStatement}XS.isSourceProperty=Ebe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.isFieldCollectionMember=void 0;const Abe=hn,ZQ=pt;function vbe(t){return t instanceof ZQ.FieldReference||t instanceof ZQ.WildcardFieldReference||t instanceof Abe.AtomicFieldDeclaration}KS.isFieldCollectionMember=vbe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.isQueryElement=void 0;const Sbe=Id,_be=$d,Cbe=K1,bbe=J1;function Tbe(t){return t instanceof Sbe.QueryArrow||t instanceof _be.QueryRefine||t instanceof Cbe.QueryReference||t instanceof bbe.QueryRaw}JS.isQueryElement=Tbe;var eG={};Object.defineProperty(eG,"__esModule",{value:!0});var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.isQueryProperty=void 0;function Rbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}ZS.isQueryProperty=Rbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.isQueryExtendProperty=void 0;const Obe=Og,Dbe=Ni,Nbe=Dg;function wbe(t){return t instanceof Obe.Dimensions||t instanceof Nbe.Measures||t instanceof Dbe.JoinStatement}e4.isQueryExtendProperty=wbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.isFieldPropStatement=void 0;const Fbe=Jl,Lbe=ho,Ibe=e0,$be=qd;function Bbe(t){return t instanceof Lbe.Filter||t instanceof Ibe.Limit||t instanceof $be.PartitionBy||t instanceof Fbe.FunctionOrdering}t4.isFieldPropStatement=Bbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(j1,t),n(bd,t),n(Td,t),n(xo,t),n(z1,t),n(mu,t),n(bv,t),n(Tv,t),n(Nv,t),n(W1,t),n(Lv,t),n(Nd,t),n(wd,t),n(Xl,t),n(Fd,t),n(Ld,t),n(Iv,t),n(Pd,t),n(Bv,t),n(Jl,t),n(kv,t),n(Da,t),n(Mv,t),n(Ud,t),n(jv,t),n(Uv,t),n(qv,t),n(Oa,t),n(zv,t),n(Hv,t),n(Gv,t),n(ig,t),n(tg,t),n(Xc,t),n(Wv,t),n(Vv,t),n(Xv,t),n(Jv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(iS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(xS,t),n(tr,t),n(OS,t),n(qd,t),n(Kd,t),n(Zd,t),n(eh,t),n(Kl,t),n(NS,t),n(wS,t),n(sg,t),n(o0,t),n(vg,t),n(FS,t),n(LS,t),n(IS,t),n($d,t),n(Id,t),n(u0,t),n($S,t),n(BS,t),n(kS,t),n(MS,t),n(hn,t),n(pt,t),n(HS,t),n(QS,t),n(Vl,t),n(Og,t),n(vg,t),n(ho,t),n(Tg,t),n(Cg,t),n(Ni,t),n(U1,t),n(e0,t),n(Dg,t),n(j1,t),n(GS,t),n(af,t),n(WS,t),n(_g,t),n(bg,t),n(Rg,t),n(Bd,t),n(Yc,t),n(Z1,t),n(c0,t),n(VS,t),n(Yl,t),n(po,t),n(YS,t),n(XS,t),n(ot,t),n(KS,t),n(t0,t),n(Ge,t),n(JS,t),n(eG,t),n(ZS,t),n(e4,t),n(t4,t)}(pv);var n4={},th={};Object.defineProperty(th,"__esModule",{value:!0}),th.ConstantExpression=th.ConstantFieldSpace=void 0;const kbe=ot;class tG{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}th.ConstantFieldSpace=tG;class Mbe extends kbe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new tG),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}th.ConstantExpression=Mbe;var Pbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),jbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Pbe(e,t,n);return jbe(e,t),e};Object.defineProperty(n4,"__esModule",{value:!0}),n4.MalloyToAST=void 0;const nG=xA,qbe=z2,ie=Ube(pv),t7=gv,rG=Yn,zbe=pv,Pn=on,n7=ce,Hbe=Yo,Qbe=th;class iG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class r7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const Gbe=["##! m4warnings=error"];class Wbe extends qbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of Gbe){const s=Hbe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new rG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,t7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof r7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new rG.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof nG.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof nG.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Qbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,n7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(ie.isEquality(n))return this.astAt(new ie.ExprEquality(r,n,i),e);if(ie.isComparison(n))return this.astAt(new ie.ExprCompare(r,n,i),e);throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,n7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,n7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new ie.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new ie.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new r7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new r7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new iG)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof zbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new iG}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new ie.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}n4.MalloyToAST=Wbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.Zone=void 0;class Vbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}r4.Zone=Vbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForDocumentSymbols=void 0;const Ybe=Nl,Xbe=on;class Kbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Xbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function Jbe(t,e,n){const r=new Kbe(t,e,[],[]),i=r;return Ybe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}i4.walkForDocumentSymbols=Jbe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.walkForDocumentCompletions=void 0;const Zbe=Nl,eTe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],tTe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],nTe=["source","explore","query","sql"];class rTe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of eTe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of tTe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of nTe)this.completions.push({type:"model_property",text:`${r}: `})}}}function iTe(t,e,n){const r=new rTe(t,[],n),i=r;return Zbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}s4.walkForDocumentCompletions=iTe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.walkForDocumentHelpContext=void 0;const sTe=s6;class oTe extends sTe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function uTe(t,e){return new oTe(e).visit(t)}o4.walkForDocumentHelpContext=uTe;var u4={},Ng={};Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.locationContainsPosition=void 0;function aTe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Ng.locationContainsPosition=aTe,Object.defineProperty(u4,"__esModule",{value:!0}),u4.ReferenceList=void 0;const lTe=Ng;class cTe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,lTe.locationContainsPosition)(r.location,e))return r}}u4.ReferenceList=cTe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isNeedResponse=void 0;function fTe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}a4.isNeedResponse=fTe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.walkForModelAnnotation=void 0;const xTe=Nl;class dTe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function hTe(t,e,n){const r=new dTe(t,e,n),i=r;return xTe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}l4.walkForModelAnnotation=hTe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForTablePath=void 0;const sG=on,pTe=Nl;class gTe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,sG.getId)(e.connectionId()),[r,i]=(0,sG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function mTe(t,e,n){const r=new gTe(t,e),i=r;return pTe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}c4.walkForTablePath=mTe;var yTe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ETe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ATe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&yTe(e,t,n);return ETe(e,t),e};Object.defineProperty(cu,"__esModule",{value:!0}),cu.MalloyParserErrorHandler=cu.MalloyTranslator=cu.MalloyChildTranslator=cu.MalloyTranslation=void 0;const oG=xA,vTe=ce,STe=OA,_Te=F,uG=ATe(pv),CTe=n4,i7=gv,bTe=wa,s7=r4,TTe=i4,RTe=s4,OTe=o4,DTe=u4,f4=a4,NTe=Ng,aG=Yo,wTe=l4,FTe=c4;class LTe extends STe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class ITe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1327
1327
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=oG.CharStreams.fromString(e),i=new LTe(r),s=new oG.CommonTokenStream(i),o=new _Te.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new cG(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class $Te{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,bTe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,f4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,f4.isNeedResponse)(u))return u}return null}}class BTe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new CTe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof uG.Unimplemented&&u.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,f4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class kTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,TTe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class MTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,RTe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class PTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,OTe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class jTe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,wTe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class UTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,FTe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class qTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=aG.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,f4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof uG.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class o7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new aG.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new ITe,this.modelAnnotationStep=new jTe(this.parseStep),this.metadataStep=new kTe(this.parseStep),this.completionsStep=new MTe(this.parseStep),this.helpContextStep=new PTe(this.parseStep),this.importsAndTablesStep=new $Te(this.parseStep),this.astStep=new BTe(this.importsAndTablesStep),this.tablePathInfoStep=new UTe(this.parseStep),this.translateStep=new qTe(this.astStep),this.references=new DTe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new lG(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
|
|
1328
1328
|
| ${l}`,u>0&&(i=i+`
|
|
1329
1329
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|