@malloydata/render 0.0.203-dev241022191525 → 0.0.203-dev241022210817
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 +11409 -11647
- package/dist/module/index.umd.js +248 -248
- package/dist/register/register.mjs +322 -318
- package/dist/register/register.umd.js +1 -1
- package/dist/webcomponent/malloy-render.mjs +322 -318
- package/dist/webcomponent/malloy-render.umd.js +1 -1
- package/package.json +2 -2
|
@@ -1326,7 +1326,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1326
1326
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof yu)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)}}Qe.MalloyElement=yu;class Tge extends yu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Qe.Unimplemented=Tge;class jO extends yu{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}}Qe.ModelEntryReference=jO;class Rge extends yu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Qe.ExperimentalExperiment=Rge;function Qq(t){return t.execute!==void 0}Qe.isDocStatement=Qq;function Oge(t){return t instanceof X1||Qq(t)}Qe.isDocStatementOrDocStatementList=Oge;class Gq extends yu{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}}}Qe.ListOf=Gq;class X1 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 X1){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}}}Qe.DocStatementList=X1;const Dge="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 Nge(t){const e=Wq(t).join("");return(0,bge.v5)(e,Dge)}class UO extends yu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new Cge.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new Age.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new X1(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,bv.isSourceDef)(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=Nge(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,bv.isSourceDef)(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,bv.isSourceDef)(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 _ge.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Qe.Document=UO;var Tv={},Nd={},Br={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.canMakeEntry=Xl.SpaceEntry=void 0;class wge{}Xl.SpaceEntry=wge;function Fge(t){return"makeEntry"in t}Xl.canMakeEntry=Fge,Object.defineProperty(Br,"__esModule",{value:!0}),Br.SpaceField=void 0;const Lge=Xl;class Ige extends Lge.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(){}}Br.SpaceField=Ige,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.ViewField=void 0;const $ge=Br;class Bge extends $ge.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Nd.ViewField=Bge,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.ASTViewField=void 0;const kge=Nd;class Mge extends kge.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)}}Tv.ASTViewField=Mge,Object.defineProperty(K1,"__esModule",{value:!0}),K1.ViewFieldDeclaration=void 0;const Pge=Qe,jge=$r,Uge=Od,qge=Tv;class zge extends Pge.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=jge.extendNoteMethod}makeEntry(e){const n=new qge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Uge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}K1.ViewFieldDeclaration=zge;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(Y1,"__esModule",{value:!0}),Y1.NestFieldDeclaration=void 0;const Hge=Od,Qge=K1,Kq=En;class Gge extends Qge.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Kq.LegalRefinementStage.Single,this.forceQueryClass=Kq.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,Hge.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")}}Y1.NestFieldDeclaration=Gge;var wd={},kr={};Object.defineProperty(kr,"__esModule",{value:!0}),kr.ErrorFactory=void 0;const Xq="~malformed~";class qO{static get structDef(){return{type:"table",name:Xq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:Xq,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:qO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}kr.ErrorFactory=qO,Object.defineProperty(wd,"__esModule",{value:!0}),wd.DefineSourceList=wd.DefineSource=void 0;const Wge=kr,Jq=Qe,Vge=$r;class Yge 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=Vge.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),Wge.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`)}}wd.DefineSource=Yge;class Kge extends Jq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}wd.DefineSourceList=Kge;var Fd={};Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.DefineQueryList=Fd.DefineQuery=void 0;const Zq=Qe,Xge=$r;class Jge extends Zq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Xge.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})}}Fd.DefineQuery=Jge;class Zge extends Zq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Fd.DefineQueryList=Zge;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Source=void 0;const eme=Qe;class tme extends eme.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)}}}ho.Source=tme;var J1={},Ld={},Rv={},Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.mergeFields=Jl.nameFromDef=void 0;function zO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Jl.nameFromDef=zO;function nme(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>zO(i))),r=t.filter(i=>!n.has(zO(i)));return r.push(...e),r}Jl.mergeFields=nme;var Z1={},mr={},Eu={};Object.defineProperty(Eu,"__esModule",{value:!0}),Eu.DefinedParameter=Eu.AbstractParameter=Eu.SpaceParam=void 0;const rme=Xl;class HO extends rme.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Eu.SpaceParam=HO;class ime extends HO{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"}}}Eu.AbstractParameter=ime;class sme extends HO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Eu.DefinedParameter=sme;var Id={};Object.defineProperty(Id,"__esModule",{value:!0}),Id.StructSpaceFieldBase=void 0;const ome=Br;class ume extends ome.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"}}}Id.StructSpaceFieldBase=ume;var eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.ColumnSpaceField=void 0;const ame=Br;class lme extends ame.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}eg.ColumnSpaceField=lme;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.IRViewField=void 0;const cme=Nd;class fme extends cme.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()}}Ov.IRViewField=fme,Object.defineProperty(mr,"__esModule",{value:!0}),mr.StaticSourceSpace=mr.StructSpaceField=mr.StaticSpace=void 0;const xme=Xo,Dv=We,dme=Eu,hme=Br,Nv=Id,pme=eg,gme=Ov;class QO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,xme.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,Dv.isJoined)(e)?new ez(e,this.fromStruct.dialect):(0,Dv.isTurtleDef)(e)?new gme.IRViewField(this,e):new pme.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,Dv.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new dme.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,Dv.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 Nv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof Nv.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof Nv.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}}mr.StaticSpace=QO;class ez extends Nv.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new QO(this.sourceDef)}}mr.StructSpaceField=ez;class mme extends QO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}mr.StaticSourceSpace=mme,Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.JoinSpaceField=void 0;const yme=mr;class Eme extends yme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}Z1.JoinSpaceField=Eme;var $d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.ParameterSpace=void 0;const Ame=Eu;class vme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new Ame.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}}$d.ParameterSpace=vme;var Sme=N&&N.__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]}),_me=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Cme=N&&N.__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)&&Sme(e,t,n);return _me(e,t),e};Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.DynamicSpace=void 0;const bme=Cme(We),Tme=Jl,Rme=kr,Ome=Br,Dme=Z1,Nme=Nd,tz=Eu,wme=mr,Fme=Id,Lme=$d;class Ime extends wme.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 Lme.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,Tme.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 Fme.StructSpaceFieldBase?r.push([a,l]):l instanceof Nme.ViewField?i.push([a,l]):l instanceof Ome.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof Dme.JoinSpaceField){const l=a.join.structDef(u);Rme.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&&bme.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}Rv.DynamicSpace=Ime,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.RefinedSpace=void 0;const $me=Rv,Bme=Xl;class GO extends $me.DynamicSpace{static filteredFrom(e,n,r){const i=new GO(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,Bme.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}Ld.RefinedSpace=GO;var Zl={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.DefinitionList=void 0;const kme=Qe,nz=$r;class Mme extends kme.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=Mme,Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.DeclareFields=void 0;const Pme=rs,jme=En;class Ume extends Pme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=jme.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Zl.DeclareFields=Ume;var po={};Object.defineProperty(po,"__esModule",{value:!0}),po.Filter=po.FilterElement=void 0;const rz=We,iz=Qe,WO=En;class qme 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}}}po.FilterElement=qme;let zme=class extends iz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=WO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?WO.LegalRefinementStage.Tail:WO.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}};po.Filter=zme;var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.FieldListEdit=void 0;const Hme=Qe;class Qme extends Hme.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Bd.FieldListEdit=Qme;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.PrimaryKey=void 0;const Gme=Qe;class Wme extends Gme.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}kd.PrimaryKey=Wme;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.Views=void 0;const Vme=rs;class Yme extends Vme.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Md.Views=Yme;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.TimezoneStatement=void 0;const Kme=Qe;class Xme extends Kme.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)}}Pd.TimezoneStatement=Xme;var e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.ModelAnnotation=e0.ObjectAnnotation=void 0;const Jme=Jo,Zme=Qe;class sz extends Zme.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}e0.ObjectAnnotation=sz;class e3e extends sz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Jme.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)}}e0.ModelAnnotation=e3e;var t0={},wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.RenameSpaceField=void 0;const t3e=Br;class n3e extends t3e.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()}}wv.RenameSpaceField=n3e,Object.defineProperty(t0,"__esModule",{value:!0}),t0.Renames=t0.RenameField=void 0;const r3e=wv,oz=Qe,i3e=Br;class s3e 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 r3e.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`)}}t0.RenameField=s3e;class o3e extends oz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}t0.Renames=o3e;var Oi={};Object.defineProperty(Oi,"__esModule",{value:!0}),Oi.JoinStatement=Oi.ExpressionJoin=Oi.KeyJoin=Oi.Join=void 0;const VO=We,u3e=Z1,a3e=rs,l3e=Qe,c3e=$r,uz=kr,f3e=En;class YO extends l3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=c3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new u3e.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)}}Oi.Join=YO;class x3e extends YO{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,VO.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,VO.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")}}Oi.KeyJoin=x3e;class d3e extends YO{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,VO.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}}Oi.ExpressionJoin=d3e;class h3e extends a3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=f3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n),e.alwaysJoins.push(n.name.refString)}}Oi.JoinStatement=h3e,Object.defineProperty(J1,"__esModule",{value:!0}),J1.RefinedSource=void 0;const p3e=We,g3e=Ld,m3e=Zl,y3e=po,E3e=Bd,A3e=kd,v3e=Md,S3e=ho,_3e=Pd,C3e=e0,b3e=t0,T3e=$d,R3e=Oi;class O3e extends S3e.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 C3e.ObjectAnnotation)continue;const g=m;if(m instanceof A3e.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 E3e.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 m3e.DeclareFields||m instanceof R3e.JoinStatement||m instanceof v3e.Views||m instanceof b3e.Renames?o.push(...m.list):m instanceof y3e.Filter?u.push(m):m instanceof _3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new T3e.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,p3e.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)}}J1.RefinedSource=O3e;var Au={};Object.defineProperty(Au,"__esModule",{value:!0}),Au.SourceQueryElement=void 0;const D3e=Qe;class KO extends D3e.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 KO&&n.errored){e=!1;break}return e}}Au.SourceQueryElement=KO;var Fv={},tf={};Object.defineProperty(tf,"__esModule",{value:!0}),tf.QuerySource=void 0;const N3e=ho,w3e=zy;class F3e extends N3e.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,w3e.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}tf.QuerySource=F3e;var jd={},tg={};Object.defineProperty(tg,"__esModule",{value:!0}),tg.QueryBase=void 0;const L3e=Od,I3e=Qe;class $3e extends I3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,L3e.detectAndRemovePartialStages)(e.pipeline,this)}}}tg.QueryBase=$3e,Object.defineProperty(jd,"__esModule",{value:!0}),jd.QueryArrow=void 0;const B3e=We,k3e=ho,az=mr,M3e=tg;class P3e extends M3e.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 k3e.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,B3e.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}}}jd.QueryArrow=P3e,Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.SQArrow=void 0;const j3e=Au,U3e=tf,q3e=jd;class z3e extends j3e.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 q3e.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 U3e.QuerySource(e);return this.has({asSource:n}),n}}Fv.SQArrow=z3e;var Lv={},Ud={},is={};Object.defineProperty(is,"__esModule",{value:!0}),is.getStructFieldDef=is.getFinalStruct=is.opOutputStruct=void 0;const lz=kl,H3e=yc,Iv=We,cz=kr;function fz(t,e,n){const r=cz.ErrorFactory.didCreate(e)||(0,Iv.structHasErrors)(e);(0,Iv.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Iv.segmentHasErrors)(n);if(!r&&!i)try{const s=H3e.Segment.nextStructDef(e,n);if((0,Iv.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
|
|
1327
1327
|
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}
|
|
1328
1328
|
QUERY: ${(0,lz.inspect)(n,{breakLength:72,depth:1/0})}`)}return cz.ErrorFactory.structDef}is.opOutputStruct=fz;function Q3e(t,e,n){for(const r of n)e=fz(t,e,r);return e}is.getFinalStruct=Q3e;function G3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}is.getStructFieldDef=G3e,Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.QueryRefine=void 0;const W3e=mr,V3e=is,Y3e=tg;class K3e extends Y3e.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 W3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,V3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ud.QueryRefine=K3e;var ng={},qd={},Di={};Object.defineProperty(Di,"__esModule",{value:!0}),Di.mkTimeResult=Di.resolution=Di.castTo=Di.timeOffset=void 0;const xz=We;function X3e(t,e,n,r,i){return{node:"delta",kids:{base:(0,xz.mkTemporal)(e,t),delta:r},op:n,units:i}}Di.timeOffset=X3e;function J3e(t,e,n,r=!1){let i;return typeof t!="string"?i={node:"cast",dstSQLType:t.raw,e,safe:r}:i={node:"cast",dstType:{type:t},e,safe:r},(0,xz.isCastType)(n)&&(i.srcType={type:n}),i}Di.castTo=J3e;function Z3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Di.resolution=Z3e;function eye(t,e){return e?{...t,timeframe:e}:t}Di.mkTimeResult=eye;var nf={},ut={},Zt={};Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.FT=void 0;const tye=Yi;function rf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class yr{static in(e,n){return e?n.find(i=>yr.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=>yr.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,tye.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}Zt.FT=yr,yr.nullT=rf("null"),yr.numberT=rf("number"),yr.stringT=rf("string"),yr.dateT=rf("date"),yr.timestampT=rf("timestamp"),yr.boolT=rf("boolean"),yr.anyAtomicT=[yr.numberT,yr.stringT,yr.dateT,yr.timestampT,yr.boolT],yr.aggregateBoolT=rf("boolean","aggregate");var zd={};Object.defineProperty(zd,"__esModule",{value:!0}),zd.isGranularResult=void 0;function nye(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}zd.isGranularResult=nye;var go={};Object.defineProperty(go,"__esModule",{value:!0}),go.isComparison=go.isEquality=go.getExprNode=void 0;function rye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}go.getExprNode=rye;function dz(t){return t==="="||t==="!="||t==="~"||t==="!~"}go.isEquality=dz;function iye(t){return dz(t)||t===">="||t==="<="||t===">"||t==="<"}go.isComparison=iye,Object.defineProperty(ut,"__esModule",{value:!0}),ut.applyBinary=ut.getMorphicValue=ut.ExprDuration=ut.ExpressionDef=ut.ATNodeType=void 0;const An=We,XO=Ri,sf=Zt,$v=Di,hz=zd,sye=Qe,rg=go;class oye extends Error{}var JO;(function(t){t[t.And=0]="And",t[t.Or=1]="Or",t[t.Value=2]="Value",t[t.Partial=3]="Partial"})(JO||(ut.ATNodeType=JO={}));class pz extends sye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=sf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!sf.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 ${sf.FT.inspect(n)}`),!1):!0}apply(e,n,r,i=!1){return Ez(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}atNodeType(){return JO.Value}atExpr(){return this}}ut.ExpressionDef=pz;class ZO extends pz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[sf.FT.timestampT,sf.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(!sf.FT.typeEq(s,sf.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,hz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,$v.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,$v.mkTimeResult)({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,$v.mkTimeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,$v.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"}}}ut.ExprDuration=ZO;function gz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function uye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}ut.getMorphicValue=uye;function mz(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,rg.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=gz(e,"timestamp"),a=gz(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 aye(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 lye(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 cye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,rg.getExprNode)(n),a=ig("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=sg(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=mz(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=aye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new oye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=lye(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 fye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=ig("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=sg(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=mz(e,i,n,s)||{node:(0,rg.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 yz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=ig("number",i,s);if(o)return o;const u=sg(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 xye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=sg(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=ig(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,hz.isGranularResult)(i))l=new ZO(r,i.timeframe);else if(i.dataType==="date")l=new ZO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return yz(t,e,n,r)}function Ez(t,e,n,r){if((0,rg.isEquality)(n))return cye(t,e,n,r);if((0,rg.isComparison)(n))return fye(t,e,n,r);if(n==="+"||n==="-")return xye(t,e,n,r);if(n==="*")return yz(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=sg(e,i,r,s);if(o)return o;const u=ig("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`)}ut.applyBinary=Ez;function ig(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 sg(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(nf,"__esModule",{value:!0}),nf.ExprIdReference=void 0;const dye=We,hye=ut;class pye extends hye.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,dye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}nf.ExprIdReference=pye,Object.defineProperty(qd,"__esModule",{value:!0}),qd.NamedSource=void 0;const eD=We,gye=ho,mye=kr,yye=Di,Az=Qe,Eye=nf,Aye=$d;class vye extends gye.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 Az.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Az.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,eD.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 Eye.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 Aye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,eD.isCastType)(f.type)&&(p=(0,yye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,eD.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=mye.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}}qd.NamedSource=vye;var og={},Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.QueryHeadStruct=void 0;const Sye=We,_ye=ho,Cye=qd;class bye extends _ye.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Sye.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Cye.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}Bv.QueryHeadStruct=bye,Object.defineProperty(og,"__esModule",{value:!0}),og.QueryReference=void 0;const tD=kr,Tye=Qe,Rye=Bv,Oye=We,Dye=is;class Nye extends Tye.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:tD.ErrorFactory.structDef,outputStruct:tD.ErrorFactory.structDef,query:tD.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 Rye.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,Dye.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,Oye.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}}og.QueryReference=Nye,Object.defineProperty(ng,"__esModule",{value:!0}),ng.SQReference=void 0;const wye=Au,Fye=tf,Lye=qd,vz=og,Sz=Yi;class Iye extends wye.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 vz.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,Sz.isSourceDef)(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 vz.QueryReference(this.ref);this.asSource=new Fye.QuerySource(n)}else if((0,Sz.isSourceDef)(e))this.asSource=new Lye.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}}ng.SQReference=Iye,Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.SQRefine=void 0;const $ye=Au,Bye=tf,kye=Ud,Mye=ng;class Pye extends $ye.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 Mye.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 kye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Bye.QuerySource(e);return this.has({queryAsSource:n}),n}}}Lv.SQRefine=Pye;var kv={},ug={};Object.defineProperty(ug,"__esModule",{value:!0}),ug.QueryRaw=void 0;const jye=We,Uye=Qe;class qye extends Uye.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,jye.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}}ug.QueryRaw=qye;var ag={},Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.makeSQLSentence=void 0;const zye=We,Hye=Nt;function Qye(t,e){return{name:`sql://${e}/${Gye(t)}`,connection:e,select:t}}Mv.makeSQLSentence=Qye;function Gye(t){const e=t.map(n=>(0,zye.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,Hye.generateHash)(e.join(";"))}Object.defineProperty(ag,"__esModule",{value:!0}),ag.SQLSource=void 0;const Wye=Mv,Vye=ho,Pv=kr;class Yye extends Vye.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,Wye.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 Pv.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"),Pv.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(`
|
|
1329
|
-
`)),Pv.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"),Pv.ErrorFactory.structDef}}ag.SQLSource=Yye,Object.defineProperty(kv,"__esModule",{value:!0}),kv.SQSource=void 0;const Kye=Au,Xye=ug,Jye=ag;class Zye extends Kye.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 Jye.SQLSource){const e=new Xye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}kv.SQSource=Zye;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.SQExtend=void 0;const eEe=J1,tEe=Au;class nEe extends tEe.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 eEe.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}}jv.SQExtend=nEe;var Uv={},wa={},lg={};Object.defineProperty(lg,"__esModule",{value:!0}),lg.BinaryBoolean=void 0;const _z=We,rEe=Ri,iEe=Zt,sEe=go,oEe=ut;class uEe extends oEe.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=[iEe.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,_z.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,_z.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,sEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,rEe.errorFor)("logial required boolean")}}lg.BinaryBoolean=uEe,Object.defineProperty(wa,"__esModule",{value:!0}),wa.ExprLegacyIn=wa.ExprEquality=wa.ExprCompare=void 0;const Cz=Yi,Yt=Zt,aEe=ut,lEe=lg,cEe={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class bz extends lEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=cEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}wa.ExprCompare=bz;class fEe extends bz{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)}}wa.ExprEquality=fEe;class xEe extends aEe.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,Cz.maxExpressionType)(i,u.expressionType),r=(0,Cz.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}}}}}wa.ExprLegacyIn=xEe;var cg={},Hd={};Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.ExprTime=void 0;const dEe=We,hEe=ut;class nD extends hEe.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:{type:e},e:n.value};(0,dEe.isTemporalField)(n.dataType)&&(i.srcType={type:n.dataType}),r=i}return new nD(e,r,n.expressionType)}}Hd.ExprTime=nD;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.Range=void 0;const Tz=We,pEe=Ri,gEe=ut;class mEe extends gEe.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,Tz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Tz.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,pEe.errorFor)("a range is not a value")}}n0.Range=mEe,Object.defineProperty(cg,"__esModule",{value:!0}),cg.ExprGranularTime=void 0;const rD=We,yEe=Ri,Rz=Zt,Oz=Di,EEe=ut,qv=Hd,Dz=n0;class AEe extends EEe.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,rD.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:(0,rD.mkTemporal)(r.value,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,rD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,yEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=qv.ExprTime.fromValue("timestamp",n),a=new qv.ExprTime("timestamp",(0,Oz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Dz.Range(u,a)}const i=new qv.ExprTime("date",n.value,n.expressionType),s=(0,Oz.timeOffset)("date",n.value,"+",r,this.units),o=new qv.ExprTime("date",s,n.expressionType);return new Dz.Range(i,o)}}cg.ExprGranularTime=AEe,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.Apply=void 0;const vEe=wa,SEe=zd,Nz=cg;class _Ee extends vEe.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,SEe.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)}}Uv.Apply=_Ee;var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.BinaryNumeric=void 0;const CEe=Zt,bEe=ut;class TEe extends bEe.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=[CEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Qd.BinaryNumeric=TEe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.Boolean=void 0;const REe=ut,OEe=Zt;let DEe=class extends REe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...OEe.FT.boolT,value:{node:this.value}}}};zv.Boolean=DEe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.FunctionOrdering=r0.FunctionOrderBy=void 0;const iD=We,wz=Qe,NEe=nf;class wEe 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,iD.expressionIsAggregate)(n.expressionType)||((0,iD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof NEe.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,iD.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}}}r0.FunctionOrderBy=wEe;class FEe 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))}}r0.FunctionOrdering=FEe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprAddSub=void 0;const LEe=Qd;class IEe extends LEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Hv.ExprAddSub=IEe;var Fa={},pt={},fg={};Object.defineProperty(fg,"__esModule",{value:!0}),fg.ReferenceField=void 0;const Fz=Br;class $Ee 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"}}}fg.ReferenceField=$Ee;var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.typecheckGroupBy=jn.typecheckAggregate=jn.typecheckCalculate=jn.typecheckDeclare=jn.typecheckMeasure=jn.typecheckDimension=jn.typecheckIndex=jn.typecheckProject=void 0;const vn=Yi;function BEe(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?`)}}jn.typecheckProject=BEe;function kEe(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`)}}jn.typecheckIndex=kEe;function MEe(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`)}jn.typecheckDimension=MEe;function PEe(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`)}jn.typecheckMeasure=PEe;function jEe(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")}jn.typecheckDeclare=jEe;function UEe(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?`)}}jn.typecheckCalculate=UEe;function qEe(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?`)}}jn.typecheckAggregate=qEe;function zEe(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?`)}}jn.typecheckGroupBy=zEe,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 HEe=fg,QEe=rs,Lz=Qe,Iz=$r,i0=jn;class Ni 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 HEe.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=Ni;class GEe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=GEe;class WEe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=WEe;class VEe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=VEe;class YEe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=YEe;class KEe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,i0.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=KEe;class sD extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,i0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return sD.indexOutputName(this.path)}}pt.IndexFieldReference=sD;class XEe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,i0.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=XEe;class JEe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,i0.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=JEe;class ZEe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,i0.typecheckProject)(e,this)}}pt.ProjectFieldReference=ZEe;class eAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,i0.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=eAe;class tAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,i0.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=tAe;class nAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,i0.typecheckDimension)(e,this)}}pt.DimensionFieldReference=nAe;class rAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=rAe;class iAe 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=iAe;class sAe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=sAe,Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.ExprAggregateFunction=void 0;const xg=We,oAe=Nt,uAe=Ri,$z=mr,aAe=Zt,lAe=pt,cAe=ut,fAe=Br,xAe=nf;class dAe extends cAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[aAe.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,xg.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=>hAe(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,xg.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=uD(l,f),m=aD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=pAe(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,uAe.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(...oD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...oD(e,r))}return n}}Fa.ExprAggregateFunction=dAe;function hAe(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 oD(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 fAe.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,oAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,xg.isAtomic)(o)&&!(0,xg.isJoined)(o))if((0,xg.hasExpression)(o)){const u=oD(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 uD(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 aD(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 pAe(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=uD(i,e),o=aD(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=uD(l,e),f=aD(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 lAe.FieldReference?`${n.refString}.${r}()`:n instanceof xAe.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 Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprAlternationTree=void 0;const Gv=We,Gd=ut,gAe=go;function lD(t){const e=t.atExpr();switch(e.atNodeType()){case Gd.ATNodeType.And:case Gd.ATNodeType.Partial:return;case Gd.ATNodeType.Or:{if(e instanceof Bz){const n=lD(e.left);if(n){const r=lD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Bz extends Gd.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=lD(this)||[]),this.inList}apply(e,n,r,i){if((0,gAe.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,Gv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Gv.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,Gv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Gv.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==="|"?Gd.ATNodeType.Or:Gd.ATNodeType.And}}Qv.ExprAlternationTree=Bz;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.ExprAsymmetric=void 0;const mAe=Fa;class yAe extends mAe.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}`}}}}Wd.ExprAsymmetric=yAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprAvg=void 0;const EAe=Wd;class AAe extends EAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Wv.ExprAvg=AAe;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprCast=void 0;const vAe=Di,SAe=ut;class _Ae extends SAe.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,vAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Vv.ExprCast=_Ae;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprCoalesce=void 0;const kz=Yi,Mz=Zt,CAe=ut;class bAe extends CAe.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)})}}Yv.ExprCoalesce=bAe;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprCount=void 0;const TAe=Fa;class RAe extends TAe.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"}}}Kv.ExprCount=RAe;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprCountDistinct=void 0;const Jv=Zt,OAe=Fa;class DAe extends OAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Jv.FT.numberT,Jv.FT.stringT,Jv.FT.dateT,Jv.FT.timestampT]}}Xv.ExprCountDistinct=DAe;var Zv={},s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.Limit=void 0;const NAe=Qe,wAe=En;class FAe extends NAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=wAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}s0.Limit=FAe;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PartitionBy=void 0;const LAe=Qe;class IAe extends LAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Vd.PartitionBy=IAe;var dg={},o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.FieldName=void 0;const $Ae=Qe;class BAe extends $Ae.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])}}o0.FieldName=BAe,Object.defineProperty(dg,"__esModule",{value:!0}),dg.ExprFunc=void 0;const ss=We,kAe=Ri,MAe=Id,PAe=ut,jAe=o0,Pz=Nt;class UAe extends PAe.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,kAe.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 MAe.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=qAe(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=zAe(O),M=L.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=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",W)}const H=[];for(const W of L)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const G=new jAe.FieldName(W.name);this.has({name:G});const K=e.lookup([G]);if(K.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${K.error.message}`);K.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.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}}}dg.ExprFunc=UAe;function qAe(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 zAe(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(Zv,"__esModule",{value:!0}),Zv.ExprProps=void 0;const HAe=We,QAe=Ri,GAe=Zt,WAe=r0,VAe=s0,YAe=Vd,KAe=ut,XAe=dg;class JAe extends KAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=GAe.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,HAe.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,QAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof YAe.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 VAe.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 WAe.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 XAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Zv.ExprProps=JAe;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprLogicalOp=void 0;const ZAe=lg,jz=Zt;class eve extends ZAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[jz.FT.boolT,jz.FT.aggregateBoolT]}}eS.ExprLogicalOp=eve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprMax=void 0;const nS=Zt,tve=Fa;class nve extends tve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[nS.FT.numberT,nS.FT.stringT,nS.FT.dateT,nS.FT.timestampT]}returns(e){return e.dataType}}tS.ExprMax=nve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprMin=void 0;const iS=Zt,rve=Fa;class ive extends rve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[iS.FT.numberT,iS.FT.stringT,iS.FT.dateT,iS.FT.timestampT]}returns(e){return e.dataType}}rS.ExprMin=ive;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprMinus=void 0;const sve=Ri,Uz=Zt,ove=ut;class uve extends ove.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,sve.errorFor)("negate requires number")}}sS.ExprMinus=uve;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprMulDiv=void 0;const ave=Qd;class lve extends ave.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}oS.ExprMulDiv=lve;var uS={},hg={};Object.defineProperty(hg,"__esModule",{value:!0}),hg.Unary=void 0;const cve=ut;class fve extends cve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}hg.Unary=fve,Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprNot=void 0;const qz=Zt,xve=hg;class dve extends xve.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"}}}}}uS.ExprNot=dve;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprNow=void 0;const hve=ut;class pve extends hve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}aS.ExprNow=pve;var lS={};Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprNULL=void 0;const gve=ut;class mve extends gve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}lS.ExprNULL=mve;var cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.ExprNumber=void 0;const yve=Zt,Eve=ut;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...yve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}cS.ExprNumber=Ave;var fS={};Object.defineProperty(fS,"__esModule",{value:!0}),fS.ExprParens=void 0;const cD=ut;class vve extends cD.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()===cD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,cD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}fS.ExprParens=vve;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ExprRegEx=void 0;const Sve=ut;class _ve extends Sve.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"}}}xS.ExprRegEx=_ve;var dS={};Object.defineProperty(dS,"__esModule",{value:!0}),dS.ExprString=void 0;const Cve=ut,bve=Zt;class Tve extends Cve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...bve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}dS.ExprString=Tve;var hS={};Object.defineProperty(hS,"__esModule",{value:!0}),hS.ExprSum=void 0;const Rve=Wd;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}hS.ExprSum=Ove;var pS={};Object.defineProperty(pS,"__esModule",{value:!0}),pS.ExprTimeExtract=void 0;const vu=We,zz=Ri,fD=ut,Dve=n0;class pg extends fD.ExpressionDef{static extractor(e){const n=pg.pluralMap[e];if(n)return n;if((0,vu.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=pg.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 Dve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,vu.maxExpressionType)(i.expressionType,s.expressionType),u=(0,vu.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,vu.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,vu.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,fD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,fD.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,vu.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:(0,vu.mkTemporal)(i.value,a),right:(0,vu.mkTemporal)(s.value,a)}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,vu.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:(0,vu.mkTemporal)(i.value,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}'`)}}pS.ExprTimeExtract=pg,pg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var gS={},mo={},mS={};Object.defineProperty(mS,"__esModule",{value:!0}),mS.QueryInputSpace=void 0;const Nve=Oi,wve=Ld;class Fve extends wve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Nve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}mS.QueryInputSpace=Fve;var Lve=N&&N.__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]}),Ive=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$ve=N&&N.__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)&&Lve(e,t,n);return Ive(e,t),e};Object.defineProperty(mo,"__esModule",{value:!0}),mo.ReduceFieldSpace=mo.QuerySpace=mo.QueryOperationSpace=void 0;const yS=$ve(We),xD=Jl,Bve=o0,kve=Br,Mve=pt,Pve=Ld,jve=eg,Uve=mr,qve=mS;class Hz extends Pve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new qve.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 Uve.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();yS.isAtomicFieldType(l.dataType)&&yS.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)}}mo.QueryOperationSpace=Hz;class Qz extends Hz{addRefineFromFields(e){var n;if(yS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Bve.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 jve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Mve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof kve.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)&&!Hve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(yS.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,xD.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,xD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,xD.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}}mo.QuerySpace=Qz;class zve extends Qz{constructor(){super(...arguments),this.segmentType="reduce"}}mo.ReduceFieldSpace=zve;function Hve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(gS,"__esModule",{value:!0}),gS.ExprUngroup=void 0;const Gz=We,Qve=mo,Gve=Zt,Wve=ut;class Vve extends Wve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=Gve.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 Qve.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`)}}gS.ExprUngroup=Vve;var ES={};Object.defineProperty(ES,"__esModule",{value:!0}),ES.ForRange=void 0;const Wz=Yi,Vz=Ri,Yz=Zt,AS=Di,Yve=ut,vS=Hd,Kz=n0;class Kve extends Yve.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,AS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,AS.timeOffset)("date",i.value,"+",o.value,u),g=new vS.ExprTime("date",m);return new Kz.Range(p,g).apply(e,n,r)}const l=vS.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,AS.castTo)("timestamp",f,"date"),c=new vS.ExprTime("timestamp",f,i.expressionType)}const x=(0,AS.timeOffset)("timestamp",f,"+",o.value,u),h=new vS.ExprTime("timestamp",x,i.expressionType);return new Kz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}ES.ForRange=Kve;var er={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class of extends Error{}class Xve extends of{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Jve extends of{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Zve extends of{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class gg extends of{}class Xz extends of{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends of{}class u0 extends of{constructor(){super("Zone is an abstract class")}}const ke="numeric",yo="short",os="long",dD={year:ke,month:ke,day:ke},Jz={year:ke,month:yo,day:ke},eSe={year:ke,month:yo,day:ke,weekday:yo},Zz={year:ke,month:os,day:ke},eH={year:ke,month:os,day:ke,weekday:os},tH={hour:ke,minute:ke},nH={hour:ke,minute:ke,second:ke},rH={hour:ke,minute:ke,second:ke,timeZoneName:yo},iH={hour:ke,minute:ke,second:ke,timeZoneName:os},sH={hour:ke,minute:ke,hourCycle:"h23"},oH={hour:ke,minute:ke,second:ke,hourCycle:"h23"},uH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:yo},aH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:os},lH={year:ke,month:ke,day:ke,hour:ke,minute:ke},cH={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},fH={year:ke,month:yo,day:ke,hour:ke,minute:ke},xH={year:ke,month:yo,day:ke,hour:ke,minute:ke,second:ke},tSe={year:ke,month:yo,day:ke,weekday:yo,hour:ke,minute:ke},dH={year:ke,month:os,day:ke,hour:ke,minute:ke,timeZoneName:yo},hH={year:ke,month:os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:yo},pH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,timeZoneName:os},gH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,second:ke,timeZoneName:os};function _t(t){return typeof t>"u"}function uf(t){return typeof t=="number"}function SS(t){return typeof t=="number"&&t%1===0}function nSe(t){return typeof t=="string"}function rSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function mH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function iSe(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 sSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function La(t,e,n){return SS(t)&&t>=e&&t<=n}function oSe(t,e){return t-e*Math.floor(t/e)}function Fn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function a0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function af(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function hD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function pD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function mg(t){return t%4===0&&(t%100!==0||t%400===0)}function yg(t){return mg(t)?366:365}function _S(t,e){const n=oSe(e-1,12)+1,r=t+(e-n)/12;return n===2?mg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function gD(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 CS(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 mD(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 bS(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 TS(t,e){const n={};for(const r in t)if(Yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=AH(i)}return n}function Eg(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}${Fn(n,2)}:${Fn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Fn(n,2)}${Fn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function RS(t){return sSe(t,["hour","minute","second","millisecond"])}const vH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,uSe=["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"],aSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function _H(t){switch(t){case"narrow":return[...aSe];case"short":return[...SH];case"long":return[...uSe];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"],lSe=["M","T","W","T","F","S","S"];function TH(t){switch(t){case"narrow":return[...lSe];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"],cSe=["Before Christ","Anno Domini"],fSe=["BC","AD"],xSe=["B","A"];function OH(t){switch(t){case"narrow":return[...xSe];case"short":return[...fSe];case"long":return[...cSe];default:return null}}function dSe(t){return RH[t.hour<12?0:1]}function hSe(t,e){return TH(e)[t.weekday-1]}function pSe(t,e){return _H(e)[t.month-1]}function gSe(t,e){return OH(e)[t.year<0?0:1]}function mSe(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 ySe={D:dD,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 Fi{static create(e,n={}){return new Fi(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 ySe[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 Fn(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?dSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?pSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?hSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?gSe(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(Fi.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=Fi.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 Eo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Kd=class{get type(){throw new u0}get name(){throw new u0}get ianaName(){return this.name}get isUniversal(){throw new u0}offsetName(e,n){throw new u0}formatOffset(e,n){throw new u0}offset(e){throw new u0}equals(e){throw new u0}get isValid(){throw new u0}},yD=null;class OS extends Kd{static get instance(){return yD===null&&(yD=new OS),yD}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 Eg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let DS={};function ESe(t){return DS[t]||(DS[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"})),DS[t]}const ASe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function vSe(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 SSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ASe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let NS={};class Su extends Kd{static create(e){return NS[e]||(NS[e]=new Su(e)),NS[e]}static resetCache(){NS={},DS={}}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=Su.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 Eg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=ESe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?SSe(r,n):vSe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=gD({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 ED=null;class Mr extends Kd{static get utcInstance(){return ED===null&&(ED=new Mr(0)),ED}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(bS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Eg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Eg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Eg(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 Kd{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 l0(t,e){if(_t(t)||t===null)return e;if(t instanceof Kd)return t;if(nSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||Su.create(t)}else return uf(t)?Mr.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 Ln{static get now(){return wH}static set now(e){wH=e}static set defaultZone(e){FH=e}static get defaultZone(){return l0(FH,OS.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(),Su.resetCache()}}let kH={};function _Se(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 AD={};function vD(t,e={}){const n=JSON.stringify([t,e]);let r=AD[n];return r||(r=new Intl.DateTimeFormat(t,e),AD[n]=r),r}let SD={};function CSe(t,e={}){const n=JSON.stringify([t,e]);let r=SD[n];return r||(r=new Intl.NumberFormat(t,e),SD[n]=r),r}let _D={};function bSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=_D[i];return s||(s=new Intl.RelativeTimeFormat(t,e),_D[i]=s),s}let Ag=null;function TSe(){return Ag||(Ag=new Intl.DateTimeFormat().resolvedOptions().locale,Ag)}function RSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=vD(t).resolvedOptions()}catch{n=vD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function OSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function DSe(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function NSe(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 wS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function wSe(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 FSe{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=CSe(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):pD(e,3);return Fn(n,this.padTo)}}}class LSe{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&&Su.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=vD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class ISe{constructor(e,n,r){this.opts={style:"long",...r},!n&&mH()&&(this.rtf=bSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):mSe(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||Ln.defaultLocale,o=s||(i?"en-US":TSe()),u=n||Ln.defaultNumberingSystem,a=r||Ln.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){Ag=null,AD={},SD={},_D={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=RSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=OSe(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=wSe(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 wS(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]=DSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return wS(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]=NSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return wS(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 wS(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 FSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new LSe(e,this.intl,n)}relFormatter(e={}){return new ISe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return _Se(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 Xd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Jd(...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 Zd(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]]=a0(e[n+i]);return[r,null,n+i]}}const PH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,$Se=`(?:${PH.source}?(?:\\[(${vH.source})\\])?)?`,CD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jH=RegExp(`${CD.source}${$Se}`),bD=RegExp(`(?:T${jH.source})?`),BSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,MSe=/(\d{4})-?(\d{3})/,PSe=MH("weekYear","weekNumber","weekDay"),jSe=MH("year","ordinal"),USe=/(\d{4})-(\d\d)-(\d\d)/,UH=RegExp(`${CD.source} ?(?:${PH.source}|(${vH.source}))?`),qSe=RegExp(`(?: ${UH.source})?`);function eh(t,e,n){const r=t[e];return _t(r)?n:a0(r)}function zSe(t,e){return[{year:eh(t,e),month:eh(t,e+1,1),day:eh(t,e+2,1)},null,e+3]}function th(t,e){return[{hours:eh(t,e,0),minutes:eh(t,e+1,0),seconds:eh(t,e+2,0),milliseconds:hD(t[e+3])},null,e+4]}function vg(t,e){const n=!t[e]&&!t[e+1],r=bS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function Sg(t,e){const n=t[e]?Su.create(t[e]):null;return[{},n,e+1]}const HSe=RegExp(`^T?${CD.source}$`),QSe=/^-?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 GSe(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(af(n)),months:x(af(r)),weeks:x(af(i)),days:x(af(s)),hours:x(af(o)),minutes:x(af(u)),seconds:x(af(a),a==="-0"),milliseconds:x(hD(l),f)}]}const WSe={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 TD(t,e,n,r,i,s,o){const u={year:e.length===2?mD(a0(e)):a0(e),month:SH.indexOf(n)+1,day:a0(r),hour:a0(i),minute:a0(s)};return o&&(u.second=a0(o)),t&&(u.weekday=t.length>3?CH.indexOf(t)+1:bH.indexOf(t)+1),u}const VSe=/^(?:(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 YSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=TD(e,i,r,n,s,o,u);let h;return a?h=WSe[a]:l?h=0:h=bS(c,f),[x,new Mr(h)]}function KSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const XSe=/^(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$/,JSe=/^(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$/,ZSe=/^(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[TD(e,i,r,n,s,o,u),Mr.utcInstance]}function e4e(t){const[,e,n,r,i,s,o,u]=t;return[TD(e,u,n,r,i,s,o),Mr.utcInstance]}const t4e=Xd(BSe,bD),n4e=Xd(kSe,bD),r4e=Xd(MSe,bD),i4e=Xd(jH),zH=Jd(zSe,th,vg,Sg),s4e=Jd(PSe,th,vg,Sg),o4e=Jd(jSe,th,vg,Sg),u4e=Jd(th,vg,Sg);function a4e(t){return Zd(t,[t4e,zH],[n4e,s4e],[r4e,o4e],[i4e,u4e])}function l4e(t){return Zd(KSe(t),[VSe,YSe])}function c4e(t){return Zd(t,[XSe,qH],[JSe,qH],[ZSe,e4e])}function f4e(t){return Zd(t,[QSe,GSe])}const x4e=Jd(th);function d4e(t){return Zd(t,[HSe,x4e])}const h4e=Xd(USe,qSe),p4e=Xd(UH),g4e=Jd(th,vg,Sg);function m4e(t){return Zd(t,[h4e,zH],[p4e,g4e])}const y4e="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}},E4e={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,nh=146097/4800,A4e={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:nh/7,days:nh,hours:nh*24,minutes:nh*24*60,seconds:nh*24*60*60,milliseconds:nh*24*60*60*1e3},...HH},lf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],v4e=lf.slice(0).reverse();function cf(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 S4e(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?S4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function _4e(t,e){v4e.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?A4e:E4e,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:TS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(uf(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]=f4e(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]=d4e(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Zve(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 Xz(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?Fi.create(this.loc,r).formatDurationFromString(this,e):y4e}toHuman(e={}){const n=lf.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+=pD(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 lf)(Yd(n.values,i)||Yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return cf(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 cf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...TS(e,Ct.normalizeUnit)};return cf(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),cf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return _4e(this.matrix,e),cf(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 lf)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;uf(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)lf.indexOf(l)>lf.indexOf(o)&&QH(this.matrix,i,l,n,o)}else uf(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 cf(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 cf(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 lf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const _g="Invalid Interval";function C4e(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Jve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=Rg(e),i=Rg(n),s=C4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=Rg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=Rg(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(Rg).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()})`:_g}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:_g}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:_g}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:_g}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:_g}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 Cg=class{static hasDST(e=Ln.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Su.isValidZone(e)}static normalizeZone(e){return l0(e,Ln.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 b4e(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 T4e(t,e,n,r){let[i,s,o,u]=b4e(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 RD={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]},R4e=RD.hanidec.replace(/[\[|\]]/g,"").split("");function O4e(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(RD.hanidec)!==-1)e+=R4e.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 Ao({numberingSystem:t},e=""){return new RegExp(`${RD[t||"latn"]}${e}`)}const D4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(O4e(n))}}const VH="[ ]",YH=new RegExp(VH,"g");function N4e(t){return t.replace(/\./g,"\\.?").replace(YH,VH)}function KH(t){return t.replace(/\./g,"").replace(YH," ").toLowerCase()}function vo(t,e){return t===null?null:{regex:RegExp(t.map(N4e).join("|")),deser:([n])=>t.findIndex(r=>KH(n)===KH(r))+e}}function XH(t,e){return{regex:t,deser:([,n,r])=>bS(n,r),groups:e}}function OD(t){return{regex:t,deser:([e])=>e}}function w4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function F4e(t,e){const n=Ao(e),r=Ao(e,"{2}"),i=Ao(e,"{3}"),s=Ao(e,"{4}"),o=Ao(e,"{6}"),u=Ao(e,"{1,2}"),a=Ao(e,"{1,3}"),l=Ao(e,"{1,6}"),c=Ao(e,"{1,9}"),f=Ao(e,"{2,4}"),x=Ao(e,"{4,6}"),h=g=>({regex:RegExp(w4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return vo(e.eras("short",!1),0);case"GG":return vo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,mD);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 vo(e.months("short",!0,!1),1);case"MMMM":return vo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return vo(e.months("short",!1,!1),1);case"LLLL":return vo(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 OD(c);case"uu":return OD(u);case"uuu":return $t(n);case"a":return vo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,mD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return vo(e.weekdays("short",!1,!1),1);case"EEEE":return vo(e.weekdays("long",!1,!1),1);case"ccc":return vo(e.weekdays("short",!0,!1),1);case"cccc":return vo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return XH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return XH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return OD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:D4e};return m.token=t,m}const L4e={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 I4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=L4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function $4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function B4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Yd(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 k4e(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=Su.create(t.z)),_t(t.Z)||(n||(n=new Mr(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=hD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let DD=null;function M4e(){return DD||(DD=at.fromMillis(1555555555555)),DD}function P4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(M4e()).map(o=>I4e(o,e,n));return s.includes(void 0)?t:s}function j4e(t,e){return Array.prototype.concat(...t.map(n=>P4e(n,e)))}function JH(t,e,n){const r=j4e(Fi.parseFormat(n),t),i=r.map(o=>F4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=$4e(i),a=RegExp(o,"i"),[l,c]=B4e(e,a,u),[f,x,h]=c?k4e(c):[null,null,void 0];if(Yd(c,"a")&&Yd(c,"H"))throw new gg("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 U4e(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 Eo("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+(mg(t)?eQ:ZH)[e-1]}function rQ(t,e){const n=mg(t)?eQ:ZH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function ND(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=CS(u)):o>CS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...RS(t)}}function iQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=tQ(e,1,4),s=yg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=yg(u)):o>s?(u=e+1,o-=yg(e)):u=e;const{month:a,day:l}=rQ(u,o);return{year:u,month:a,day:l,...RS(t)}}function wD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r);return{year:e,ordinal:i,...RS(t)}}function sQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=rQ(e,n);return{year:e,month:r,day:i,...RS(t)}}function q4e(t){const e=SS(t.weekYear),n=La(t.weekNumber,1,CS(t.weekYear)),r=La(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function z4e(t){const e=SS(t.year),n=La(t.ordinal,1,yg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function oQ(t){const e=SS(t.year),n=La(t.month,1,12),r=La(t.day,1,_S(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=La(e,0,23)||e===24&&n===0&&r===0&&i===0,o=La(n,0,59),u=La(r,0,59),a=La(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const FD="Invalid DateTime",aQ=864e13;function FS(t){return new Eo("unsupported zone",`the zone "${t.name}" is not supported`)}function LD(t){return t.weekData===null&&(t.weekData=ND(t.c)),t.weekData}function bg(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 LS(t,e,n){return lQ(gD(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,_S(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=gD(s);let[a,l]=lQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function Tg(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 Eo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function IS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function ID(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Fn(t.c.year,n?6:4),e?(r+="-",r+=Fn(t.c.month),r+="-",r+=Fn(t.c.day)):(r+=Fn(t.c.month),r+=Fn(t.c.day)),r}function xQ(t,e,n,r,i,s){let o=Fn(t.c.hour);return e?(o+=":",o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=Fn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Fn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Fn(Math.trunc(-t.o/60)),o+=":",o+=Fn(Math.trunc(-t.o%60))):(o+="+",o+=Fn(Math.trunc(t.o/60)),o+=":",o+=Fn(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},H4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},hQ=["year","month","day","hour","minute","second","millisecond"],G4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],W4e=["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 Xz(t);return e}function gQ(t,e){const n=l0(e.zone,Ln.defaultZone),r=xn.fromObject(e),i=Ln.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]=LS(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=pD(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||Ln.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Eo("invalid input"):null)||(n.isValid?null:FS(n));this.ts=_t(e.ts)?Ln.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 Eo("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=Mr.utcInstance,gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=rSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=l0(n.zone,Ln.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(FS(i))}static fromMillis(e,n={}){if(uf(e))return e<-aQ||e>aQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:l0(n.zone,Ln.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(uf(e))return new at({ts:e*1e3,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=l0(n.zone,Ln.defaultZone);if(!r.isValid)return at.invalid(FS(r));const i=Ln.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=TS(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 gg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new gg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=cQ(i,s);h?(p=G4e,m=H4e,g=ND(g)):u?(p=W4e,m=Q4e,g=wD(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?q4e(o):u?z4e(o):oQ(o),A=E||uQ(o);if(A)return at.invalid(A);const v=h?iQ(o):u?sQ(o):o,[_,S]=LS(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]=a4e(e);return Tg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=l4e(e);return Tg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=c4e(e);return Tg(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]=U4e(o,e,n);return c?at.invalid(c):Tg(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]=m4e(e);return Tg(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Xve(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?LD(this).weekYear:NaN}get weekNumber(){return this.isValid?LD(this).weekNumber:NaN}get weekday(){return this.isValid?LD(this).weekday:NaN}get ordinal(){return this.isValid?wD(this.c).ordinal:NaN}get monthShort(){return this.isValid?Cg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Cg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Cg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Cg.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 mg(this.year)}get daysInMonth(){return _S(this.year,this.month)}get daysInYear(){return this.isValid?yg(this.year):NaN}get weeksInWeekYear(){return this.isValid?CS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Ln.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=l0(e,Ln.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]=LS(o,s,e)}return bg(this,{ts:i,zone:e})}else return at.invalid(FS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return bg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=TS(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 gg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new gg("Can't mix ordinal dates with month/day");let l;r?l=iQ({...ND(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(_S(l.year,l.month),l.day))):l=sQ({...wD(this.c),...n});const[c,f]=LS(l,this.o,this.zone);return bg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return bg(this,fQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return bg(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?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):FD}toLocaleString(e=dD,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):FD}toLocaleParts(e={}){return this.isValid?Fi.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=ID(this,o);return u+="T",u+=xQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?ID(this,e==="extended"):null}toISOWeekDate(){return IS(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 IS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return IS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?ID(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")),IS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():FD}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=iSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=T4e(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 dD}static get DATE_MED(){return Jz}static get DATE_MED_WITH_WEEKDAY(){return eSe}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 tSe}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 Rg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&uf(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 V4e="2.5.2";var Y4e=wi.DateTime=at;wi.Duration=Ct,wi.FixedOffsetZone=Mr,wi.IANAZone=Su,wi.Info=Cg,wi.Interval=dn,wi.InvalidZone=NH,wi.Settings=Ln,wi.SystemZone=OS,wi.VERSION=V4e,wi.Zone=Kd,Object.defineProperty(er,"__esModule",{value:!0}),er.LiteralYear=er.LiteralQuarter=er.LiteralMonth=er.LiteralWeek=er.LiteralDay=er.LiteralHour=er.LiteralTimestamp=er.TimeFormatError=void 0;const c0=wi,K4e=We,X4e=n0,EQ=Hd,$D=ut;class J4e extends Error{}er.TimeFormatError=J4e;function ff(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`,BD=`${_Q}:ss`;class CQ extends $D.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,typeDef:{type: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 kD extends CQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=ff(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=c0.DateTime.fromFormat(e,BD);if(s.isValid)return new kD(r,n);if(s=c0.DateTime.fromFormat(e,_Q),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(BD);return new MD(r,n,"timestamp",o)}}}er.LiteralTimestamp=kD;class MD 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,$D.getMorphicValue)(i,"timestamp"),a=(0,$D.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,K4e.isTemporalField)(o.dataType)){const u=o.dataType;return new X4e.Range(new EQ.ExprTime(u,i.value),new EQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class PD extends MD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,SQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(BD),new PD(n,r)}}er.LiteralHour=PD;class Og extends MD{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 jD extends Og{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new jD(n,r)}}er.LiteralDay=jD;class UD extends Og{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=ff(e,!1);let r=n.text;const i=n.text.slice(0,10),s=c0.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 UD(n,r)}}}er.LiteralWeek=UD;class qD extends Og{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.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 qD(n,r)}}}er.LiteralMonth=qD;class zD extends Og{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=ff(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=c0.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 zD(n,r)}}}er.LiteralQuarter=zD;class HD extends Og{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.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 HD(n,r)}}}er.LiteralYear=HD;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.PartialCompare=void 0;const bQ=ut;class Z4e 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}}$S.PartialCompare=Z4e;var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.PickWhen=rh.Pick=void 0;const _u=We,ih=Zt,e_e=ut,t_e=Qe;function BS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class n_e extends e_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,_u.maxExpressionType)(o,(0,_u.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,_u.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!ih.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=BS(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=BS(s,l),ih.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,_u.maxExpressionType)(o,l.expressionType),evalSpace:(0,_u.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(!ih.FT.typeEq(a.when,ih.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!ih.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=BS(i,a.pick),s=(0,_u.maxExpressionType)(s,(0,_u.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,_u.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,_u.maxExpressionType)(s,u.expressionType),o=(0,_u.mergeEvalSpaces)(o,u.evalSpace),i=BS(i,u),ih.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})}}rh.Pick=n_e;class r_e extends t_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}rh.PickWhen=r_e;var sh={};Object.defineProperty(sh,"__esModule",{value:!0}),sh.CaseWhen=sh.Case=void 0;const i_e=ut,s_e=Qe,Dg=Zt,xf=Yi;function TQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class o_e extends i_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,xf.maxExpressionType)(i,o.expressionType),s=(0,xf.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(!Dg.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Dg.FT.typeEq(l.when,Dg.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Dg.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,xf.maxExpressionType)(i,(0,xf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,xf.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&&!Dg.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,xf.maxExpressionType)(i,l.expressionType),s=(0,xf.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}}}sh.Case=o_e;class u_e extends s_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}sh.CaseWhen=u_e;var oh={};Object.defineProperty(oh,"__esModule",{value:!0}),oh.RecordLiteral=oh.RecordElement=void 0;const a_e=ut,l_e=Qe;class c_e extends l_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}oh.RecordElement=c_e;class f_e extends a_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){throw new Error("get expression on record todo")}}oh.RecordLiteral=f_e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.Timeframe=void 0;const x_e=We,d_e=Qe;class h_e extends d_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,x_e.isTimestampUnit)(n)?n:"second"}}kS.Timeframe=h_e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.TopBy=void 0;const p_e=We,RQ=ut,g_e=Qe;class m_e extends g_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof RQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof RQ.ExpressionDef){const n=this.by.getExpression(e);return(0,p_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}}}MS.TopBy=m_e;var f0={};Object.defineProperty(f0,"__esModule",{value:!0}),f0.ImportStatement=f0.ImportSelect=f0.ImportSourceName=void 0;const QD=Qe;class y_e extends QD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}f0.ImportSourceName=y_e;class E_e extends QD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}f0.ImportSelect=E_e;class A_e extends QD.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}'`)}}}f0.ImportStatement=A_e;var Ng={};Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.ExtendBlock=void 0;const v_e=Qe,S_e=En;class __e extends v_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=S_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Ng.ExtendBlock=__e;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Argument=void 0;const C_e=Qe;class b_e extends C_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}PS.Argument=b_e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.HasParameter=void 0;const OQ=We,T_e=Qe;class R_e extends T_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,OQ.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,OQ.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"}}}jS.HasParameter=R_e;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.AnonymousQuery=void 0;const O_e=Qe,D_e=$r;class N_e extends O_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=D_e.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)}}US.AnonymousQuery=N_e;var x0={};Object.defineProperty(x0,"__esModule",{value:!0}),x0.View=void 0;const w_e=Qe;let F_e=class extends w_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};x0.View=F_e;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ViewArrow=void 0;const L_e=mr,I_e=x0;class $_e extends I_e.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 L_e.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()}}qS.ViewArrow=$_e;var zS={},wg={};Object.defineProperty(wg,"__esModule",{value:!0}),wg.refine=void 0;const GD=Yi,WD=Jl;function B_e(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,GD.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,GD.isQuerySegment)(o)&&(0,GD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,WD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,WD.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(WD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}wg.refine=B_e,Object.defineProperty(zS,"__esModule",{value:!0}),zS.ViewRefine=void 0;const k_e=kr,M_e=is,P_e=wg,j_e=x0;class U_e extends j_e.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,M_e.getFinalStruct)(this.refinement,e.structDef(),i):k_e.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,P_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}zS.ViewRefine=U_e;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.ReferenceView=void 0;const VD=We,DQ=kr,q_e=is,z_e=Br,H_e=wg,Q_e=x0;class G_e extends Q_e.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:DQ.ErrorFactory.structDef,outputStruct:DQ.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 z_e.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,VD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,VD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,VD.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,q_e.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,H_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}HS.ReferenceView=G_e;var QS={},Fg={},GS={},Lg={};Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.Index=void 0;const W_e=Qe,V_e=En;let Y_e=class extends W_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=V_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Lg.Index=Y_e;var Ig={};Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.SampleProperty=void 0;const K_e=Qe,NQ=En;class X_e extends K_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=NQ.LegalRefinementStage.Tail,this.forceQueryClass=NQ.QueryClass.Index}sampling(){return this.sample}}Ig.SampleProperty=X_e;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.IndexFieldSpace=void 0;const wQ=We,YD=pt,J_e=Br,Z_e=mo,e5e=fg,t5e=mr;class n5e extends Z_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof YD.FieldReference?super.pushFields(n):n instanceof YD.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 J_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof e5e.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 t5e.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=YD.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,wQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,wQ.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)}}WS.IndexFieldSpace=n5e,Object.defineProperty(GS,"__esModule",{value:!0}),GS.IndexBuilder=void 0;const KD=We,r5e=kr,i5e=po,s5e=Lg,o5e=s0,u5e=Ig,a5e=WS;class l5e{constructor(e,n,r,i){this.filters=[],this.alwaysJoins=[],this.type="index",this.resultFS=new a5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof i5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof o5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof s5e.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 u5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,KD.isIndexSegment)(e)&&!(0,KD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),r5e.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,KD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins]),n}}GS.IndexBuilder=l5e;var VS={},$g={};Object.defineProperty($g,"__esModule",{value:!0}),$g.GroupBy=void 0;const c5e=rs,FQ=En;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=FQ.LegalRefinementStage.Single,this.forceQueryClass=FQ.QueryClass.Grouping}}$g.GroupBy=f5e;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.ProjectFieldSpace=void 0;const XD=We,x5e=mo;class d5e extends x5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,XD.expressionIsAggregate)(e.expressionType)?!1:(0,XD.expressionInvolvesAggregate)(e.expressionType)&&(0,XD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}YS.ProjectFieldSpace=d5e;var d0={},df={};Object.defineProperty(df,"__esModule",{value:!0}),df.Ordering=df.OrderBy=void 0;const h5e=We,LQ=o0,IQ=Qe,p5e=En;class g5e extends IQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof LQ.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 LQ.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,h5e.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}}df.OrderBy=g5e;class m5e extends IQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=p5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}df.Ordering=m5e;var Bg={};Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.Top=void 0;const $Q=We,y5e=o0,E5e=Qe,A5e=En;let v5e=class extends E5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof y5e.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,$Q.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,$Q.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}}}};Bg.Top=v5e,Object.defineProperty(d0,"__esModule",{value:!0}),d0.ReduceBuilder=d0.QuerySegmentBuilder=void 0;const BQ=We,S5e=kr,_5e=po,C5e=s0,kQ=df,MQ=Bg,b5e=mo,T5e=rs;class PQ{constructor(){this.alwaysJoins=[],this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof T5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof MQ.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 C5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof kQ.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 MQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof kQ.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]),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins])}}d0.QuerySegmentBuilder=PQ;class R5e extends PQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new b5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,BQ.isReduceSegment)(e)||(0,BQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),S5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}d0.ReduceBuilder=R5e,Object.defineProperty(VS,"__esModule",{value:!0}),VS.ProjectBuilder=void 0;const jQ=We,O5e=kr,D5e=$g,N5e=YS,w5e=d0;class F5e extends w5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new N5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof D5e.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,jQ.isProjectSegment)(e)||(0,jQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),O5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}VS.ProjectBuilder=F5e;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.PartialBuilder=void 0;const L5e=Yi,I5e=d0;class $5e extends I5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,L5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}KS.PartialBuilder=$5e,Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.QOpDesc=void 0;const B5e=GS,k5e=VS,M5e=d0,P5e=Qe,j5e=is,U5e=mr,hf=En,q5e=KS;class z5e extends P5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=hf.QueryClass.Grouping:this.refineThis.type==="project"?n=hf.QueryClass.Project:this.refineThis.type==="index"&&(n=hf.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=hf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case hf.QueryClass.Grouping:return new M5e.ReduceBuilder(e,this.refineThis,n,r);case hf.QueryClass.Project:return new k5e.ProjectBuilder(e,this.refineThis,n,r);case hf.QueryClass.Index:return new B5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new q5e.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 U5e.StaticSourceSpace((0,j5e.opOutputStruct)(this,e.structDef(),i))}}}Fg.QOpDesc=z5e,Object.defineProperty(QS,"__esModule",{value:!0}),QS.QOpDescView=void 0;const H5e=We,Q5e=mr,UQ=Fg,G5e=is,JD=En,W5e=x0;class V5e extends W5e.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,H5e.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 UQ.QOpDesc([]),o=new UQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case JD.LegalRefinementStage.Head:s.push(u);break;case JD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case JD.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,G5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new Q5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}QS.QOpDescView=V5e;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 qQ=We,Y5e=Zt,K5e=zd,X5e=Qe,pf=jn,J5e=$r,Z5e=Br;class h0 extends X5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=J5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new ZD(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,qQ.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,K5e.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 ZD&&e.foundCircle)&&r.dataType!=="error"){const u=Y5e.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 zQ(e,this))}}hn.AtomicFieldDeclaration=h0;class eCe extends h0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=eCe;class tCe extends h0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=tCe;class nCe extends h0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=nCe;class rCe extends h0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=rCe;class iCe extends h0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=iCe;class sCe extends h0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=sCe;class oCe extends h0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=oCe;class ZD{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=ZD;class zQ extends Z5e.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,qQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=zQ;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.Aggregate=void 0;const uCe=rs,HQ=En;let aCe=class extends uCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=HQ.LegalRefinementStage.Single,this.forceQueryClass=HQ.QueryClass.Grouping}};XS.Aggregate=aCe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Calculate=void 0;const lCe=rs,cCe=En;class fCe extends lCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cCe.LegalRefinementStage.Single}}JS.Calculate=fCe;var kg={};Object.defineProperty(kg,"__esModule",{value:!0}),kg.Dimensions=void 0;const xCe=Zl;class dCe extends xCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}kg.Dimensions=dCe;var Mg={};Object.defineProperty(Mg,"__esModule",{value:!0}),Mg.Measures=void 0;const hCe=Zl;class pCe extends hCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Mg.Measures=pCe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.Nests=void 0;const gCe=rs,QQ=En;class mCe extends gCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=QQ.LegalRefinementStage.Single,this.forceQueryClass=QQ.QueryClass.Grouping}}ZS.Nests=mCe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.ProjectStatement=void 0;const yCe=rs,GQ=En;class ECe extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=GQ.QueryClass.Project,this.queryRefinementStage=GQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}e4.ProjectStatement=ECe;var p0={},Ia={};Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.findReferences=Ia.deprecatedParseTableURI=Ia.constructTableKey=void 0;const ACe=$l,e7=on;function t7(t){const e=(0,e7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,e7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class vCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=WQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,e7.getId)(e.connectionId()),r=t7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=t7(e.tableURI()),{connectionName:r,tablePath:i}=VQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=t7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function WQ(t,e){return t===void 0?e:`${t}:${e}`}Ia.constructTableKey=WQ;function VQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Ia.deprecatedParseTableURI=VQ;function SCe(t,e,n){const r=new vCe(t,e),i=r;return ACe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Ia.findReferences=SCe,Object.defineProperty(p0,"__esModule",{value:!0}),p0.TableFunctionSource=p0.TableMethodSource=p0.TableSource=void 0;const YQ=Ia,_Ce=ho,KQ=kr;class n7 extends _Ce.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,YQ.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}}p0.TableSource=n7;class CCe extends n7{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}}}p0.TableMethodSource=CCe;class bCe extends n7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,YQ.deprecatedParseTableURI)(this.tableURI)}}p0.TableFunctionSource=bCe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.SQLString=void 0;const TCe=Qe,XQ=Au;class RCe extends TCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(OCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof XQ.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}}t4.SQLString=RCe;function OCe(t){return t instanceof XQ.SourceQueryElement}var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.SourceDesc=void 0;const DCe=Qe;class NCe extends DCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}n4.SourceDesc=NCe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isSourceProperty=void 0;const wCe=po,FCe=Zl,LCe=Bd,ICe=t0,$Ce=kd,BCe=Md,kCe=Pd,MCe=e0,PCe=Oi;function jCe(t){return t instanceof wCe.Filter||t instanceof PCe.JoinStatement||t instanceof FCe.DeclareFields||t instanceof LCe.FieldListEdit||t instanceof ICe.Renames||t instanceof $Ce.PrimaryKey||t instanceof MCe.ObjectAnnotation||t instanceof BCe.Views||t instanceof kCe.TimezoneStatement}r4.isSourceProperty=jCe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isFieldCollectionMember=void 0;const UCe=hn,JQ=pt;function qCe(t){return t instanceof JQ.FieldReference||t instanceof JQ.WildcardFieldReference||t instanceof UCe.AtomicFieldDeclaration}i4.isFieldCollectionMember=qCe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryElement=void 0;const zCe=jd,HCe=Ud,QCe=og,GCe=ug;function WCe(t){return t instanceof zCe.QueryArrow||t instanceof HCe.QueryRefine||t instanceof QCe.QueryReference||t instanceof GCe.QueryRaw}s4.isQueryElement=WCe;var ZQ={};Object.defineProperty(ZQ,"__esModule",{value:!0});var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isQueryProperty=void 0;function VCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}o4.isQueryProperty=VCe;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isQueryExtendProperty=void 0;const YCe=kg,KCe=Oi,XCe=Mg;function JCe(t){return t instanceof YCe.Dimensions||t instanceof XCe.Measures||t instanceof KCe.JoinStatement}u4.isQueryExtendProperty=JCe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isFieldPropStatement=void 0;const ZCe=r0,ebe=po,tbe=s0,nbe=Vd;function rbe(t){return t instanceof ebe.Filter||t instanceof tbe.Limit||t instanceof nbe.PartitionBy||t instanceof ZCe.FunctionOrdering}a4.isFieldPropStatement=rbe,function(t){var e=N&&N.__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=N&&N.__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(Y1,t),n(wd,t),n(Fd,t),n(ho,t),n(J1,t),n(Au,t),n(Fv,t),n(Lv,t),n(kv,t),n(ng,t),n(jv,t),n(Bd,t),n(kd,t),n(t0,t),n(Md,t),n(Pd,t),n(Uv,t),n(Qd,t),n(zv,t),n(r0,t),n(Hv,t),n(Fa,t),n(Qv,t),n(Wd,t),n(Wv,t),n(Vv,t),n(Yv,t),n(wa,t),n(Kv,t),n(Xv,t),n(Zv,t),n(dg,t),n(cg,t),n(nf,t),n(eS,t),n(tS,t),n(rS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(cS,t),n(fS,t),n(xS,t),n(dS,t),n(hS,t),n(pS,t),n(gS,t),n(ES,t),n(er,t),n($S,t),n(Vd,t),n(rh,t),n(sh,t),n(oh,t),n(n0,t),n(kS,t),n(MS,t),n(hg,t),n(f0,t),n(Ng,t),n(PS,t),n(jS,t),n(US,t),n(Ud,t),n(jd,t),n(x0,t),n(qS,t),n(zS,t),n(HS,t),n(QS,t),n(hn,t),n(pt,t),n(XS,t),n(JS,t),n(Zl,t),n(kg,t),n(Ng,t),n(po,t),n($g,t),n(Lg,t),n(Oi,t),n(K1,t),n(s0,t),n(Mg,t),n(Y1,t),n(ZS,t),n(df,t),n(e4,t),n(Fg,t),n(Ig,t),n(Bg,t),n(qd,t),n(tf,t),n(ag,t),n(p0,t),n(t4,t),n(e0,t),n(go,t),n(n4,t),n(r4,t),n(ut,t),n(i4,t),n(o0,t),n(Qe,t),n(s4,t),n(ZQ,t),n(o4,t),n(u4,t),n(a4,t)}(Sv);var l4={},uh={};Object.defineProperty(uh,"__esModule",{value:!0}),uh.ConstantExpression=uh.ConstantFieldSpace=void 0;const ibe=ut;class eG{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}}uh.ConstantFieldSpace=eG;class sbe extends ibe.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 eG),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)}}uh.ConstantExpression=sbe;var obe=N&&N.__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]}),ube=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),abe=N&&N.__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)&&obe(e,t,n);return ube(e,t),e};Object.defineProperty(l4,"__esModule",{value:!0}),l4.MalloyToAST=void 0;const tG=AA,lbe=J2,ie=abe(Sv),r7=_v,nG=Kn,cbe=Sv,On=on,i7=We,fbe=Jo,xbe=uh;class rG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class s7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const dbe=["##! m4warnings=error"];class hbe extends lbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of dbe){const s=fbe.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,r7.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 nG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,r7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,r7.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 s7||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,On.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,On.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 nG.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,On.getPlainString)(e);for(const i of r)i instanceof tG.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,On.getStringParts)(e))r instanceof tG.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 xbe.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,On.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,On.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,On.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){return this.astAt(this.visit(e.joinStatement()),e)}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,i7.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,On.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,On.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,On.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,On.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,On.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,On.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,i7.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,On.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,i7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,On.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,On.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,On.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,On.idToStr)(o[0]),u),o[0]))}return r}visitDebugExpr(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 s7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new s7(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,On.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 rG)}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 cbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new rG}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)}visitRecordRef(e){const n=e.fieldPath(),r=n.fieldName().at(-1);if(r){const i=(0,On.getId)(r),s=new ie.ExprIdReference(this.getFieldPath(n,ie.ExpressionFieldReference));return new ie.RecordElement(i,s)}throw this.internalError(n,"IMPOSSIBLY A PATH CONTAINED ZERO ELEMENTS")}visitRecordExpr(e){const n=(0,On.getId)(e.recordKey()),r=this.getFieldExpr(e.fieldExpr());return new ie.RecordElement(n,r)}visitExprLiteralRecord(e){const n=this.only(e.recordElement().map(r=>this.astAt(this.visit(r),r)),r=>r instanceof ie.RecordElement&&r,"a key value pair");return new ie.RecordLiteral(n)}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}}l4.MalloyToAST=hbe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.Zone=void 0;class pbe{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})}}c4.Zone=pbe;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentSymbols=void 0;const gbe=$l,mbe=on;class ybe{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,mbe.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 Ebe(t,e,n){const r=new ybe(t,e,[],[]),i=r;return gbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}f4.walkForDocumentSymbols=Ebe;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.walkForDocumentCompletions=void 0;const Abe=$l,vbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Sbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],_be=["source","explore","query","sql"];class Cbe{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 vbe)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 Sbe)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 _be)this.completions.push({type:"model_property",text:`${r}: `})}}}function bbe(t,e,n){const r=new Cbe(t,[],n),i=r;return Abe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}x4.walkForDocumentCompletions=bbe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.walkForDocumentHelpContext=void 0;const Tbe=s6;class Rbe extends Tbe.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 Obe(t,e){return new Rbe(e).visit(t)}d4.walkForDocumentHelpContext=Obe;var h4={},Pg={};Object.defineProperty(Pg,"__esModule",{value:!0}),Pg.locationContainsPosition=void 0;function Dbe(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)}Pg.locationContainsPosition=Dbe,Object.defineProperty(h4,"__esModule",{value:!0}),h4.ReferenceList=void 0;const Nbe=Pg;class wbe{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,Nbe.locationContainsPosition)(r.location,e))return r}}h4.ReferenceList=wbe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.isNeedResponse=void 0;function Fbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}p4.isNeedResponse=Fbe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForModelAnnotation=void 0;const Lbe=$l;class Ibe{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 $be(t,e,n){const r=new Ibe(t,e,n),i=r;return Lbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}g4.walkForModelAnnotation=$be;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.walkForTablePath=void 0;const iG=on,Bbe=$l;class kbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,iG.getId)(e.connectionId()),[r,i]=(0,iG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Mbe(t,e,n){const r=new kbe(t,e),i=r;return Bbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}m4.walkForTablePath=Mbe;var Pbe=N&&N.__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=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=N&&N.__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(du,"__esModule",{value:!0}),du.MalloyParserErrorHandler=du.MalloyTranslator=du.MalloyChildTranslator=du.MalloyTranslation=void 0;const sG=AA,qbe=We,zbe=BA,Hbe=F,oG=Ube(Sv),Qbe=l4,o7=_v,Gbe=Ia,u7=c4,Wbe=f4,Vbe=x4,Ybe=d4,Kbe=h4,y4=p4,Xbe=Pg,uG=Jo,Jbe=g4,Zbe=m4;class eTe extends zbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class tTe{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===""?`
|
|
1329
|
+
`)),Pv.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"),Pv.ErrorFactory.structDef}}ag.SQLSource=Yye,Object.defineProperty(kv,"__esModule",{value:!0}),kv.SQSource=void 0;const Kye=Au,Xye=ug,Jye=ag;class Zye extends Kye.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 Jye.SQLSource){const e=new Xye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}kv.SQSource=Zye;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.SQExtend=void 0;const eEe=J1,tEe=Au;class nEe extends tEe.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 eEe.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}}jv.SQExtend=nEe;var Uv={},wa={},lg={};Object.defineProperty(lg,"__esModule",{value:!0}),lg.BinaryBoolean=void 0;const _z=We,rEe=Ri,iEe=Zt,sEe=go,oEe=ut;class uEe extends oEe.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=[iEe.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,_z.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,_z.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,sEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,rEe.errorFor)("logial required boolean")}}lg.BinaryBoolean=uEe,Object.defineProperty(wa,"__esModule",{value:!0}),wa.ExprLegacyIn=wa.ExprEquality=wa.ExprCompare=void 0;const Cz=Yi,Yt=Zt,aEe=ut,lEe=lg,cEe={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class bz extends lEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=cEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}wa.ExprCompare=bz;class fEe extends bz{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)}}wa.ExprEquality=fEe;class xEe extends aEe.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,Cz.maxExpressionType)(i,u.expressionType),r=(0,Cz.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}}}}}wa.ExprLegacyIn=xEe;var cg={},Hd={};Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.ExprTime=void 0;const dEe=We,hEe=ut;class nD extends hEe.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:{type:e},e:n.value};(0,dEe.isTemporalField)(n.dataType)&&(i.srcType={type:n.dataType}),r=i}return new nD(e,r,n.expressionType)}}Hd.ExprTime=nD;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.Range=void 0;const Tz=We,pEe=Ri,gEe=ut;class mEe extends gEe.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,Tz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Tz.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,pEe.errorFor)("a range is not a value")}}n0.Range=mEe,Object.defineProperty(cg,"__esModule",{value:!0}),cg.ExprGranularTime=void 0;const rD=We,yEe=Ri,Rz=Zt,Oz=Di,EEe=ut,qv=Hd,Dz=n0;class AEe extends EEe.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,rD.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:(0,rD.mkTemporal)(r.value,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,rD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,yEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=qv.ExprTime.fromValue("timestamp",n),a=new qv.ExprTime("timestamp",(0,Oz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Dz.Range(u,a)}const i=new qv.ExprTime("date",n.value,n.expressionType),s=(0,Oz.timeOffset)("date",n.value,"+",r,this.units),o=new qv.ExprTime("date",s,n.expressionType);return new Dz.Range(i,o)}}cg.ExprGranularTime=AEe,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.Apply=void 0;const vEe=wa,SEe=zd,Nz=cg;class _Ee extends vEe.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,SEe.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)}}Uv.Apply=_Ee;var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.BinaryNumeric=void 0;const CEe=Zt,bEe=ut;class TEe extends bEe.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=[CEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Qd.BinaryNumeric=TEe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.Boolean=void 0;const REe=ut,OEe=Zt;let DEe=class extends REe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...OEe.FT.boolT,value:{node:this.value}}}};zv.Boolean=DEe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.FunctionOrdering=r0.FunctionOrderBy=void 0;const iD=We,wz=Qe,NEe=nf;class wEe 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,iD.expressionIsAggregate)(n.expressionType)||((0,iD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof NEe.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,iD.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}}}r0.FunctionOrderBy=wEe;class FEe 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))}}r0.FunctionOrdering=FEe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprAddSub=void 0;const LEe=Qd;class IEe extends LEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Hv.ExprAddSub=IEe;var Fa={},pt={},fg={};Object.defineProperty(fg,"__esModule",{value:!0}),fg.ReferenceField=void 0;const Fz=Br;class $Ee 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"}}}fg.ReferenceField=$Ee;var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.typecheckGroupBy=jn.typecheckAggregate=jn.typecheckCalculate=jn.typecheckDeclare=jn.typecheckMeasure=jn.typecheckDimension=jn.typecheckIndex=jn.typecheckProject=void 0;const vn=Yi;function BEe(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?`)}}jn.typecheckProject=BEe;function kEe(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`)}}jn.typecheckIndex=kEe;function MEe(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`)}jn.typecheckDimension=MEe;function PEe(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`)}jn.typecheckMeasure=PEe;function jEe(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")}jn.typecheckDeclare=jEe;function UEe(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?`)}}jn.typecheckCalculate=UEe;function qEe(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?`)}}jn.typecheckAggregate=qEe;function zEe(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?`)}}jn.typecheckGroupBy=zEe,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 HEe=fg,QEe=rs,Lz=Qe,Iz=$r,i0=jn;class Ni 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 HEe.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=Ni;class GEe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=GEe;class WEe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=WEe;class VEe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=VEe;class YEe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=YEe;class KEe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,i0.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=KEe;class sD extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,i0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return sD.indexOutputName(this.path)}}pt.IndexFieldReference=sD;class XEe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,i0.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=XEe;class JEe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,i0.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=JEe;class ZEe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,i0.typecheckProject)(e,this)}}pt.ProjectFieldReference=ZEe;class eAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,i0.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=eAe;class tAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,i0.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=tAe;class nAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,i0.typecheckDimension)(e,this)}}pt.DimensionFieldReference=nAe;class rAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=rAe;class iAe 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=iAe;class sAe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=sAe,Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.ExprAggregateFunction=void 0;const xg=We,oAe=Nt,uAe=Ri,$z=mr,aAe=Zt,lAe=pt,cAe=ut,fAe=Br,xAe=nf;class dAe extends cAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[aAe.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,xg.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=>hAe(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,xg.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=uD(l,f),m=aD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=pAe(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,uAe.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(...oD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...oD(e,r))}return n}}Fa.ExprAggregateFunction=dAe;function hAe(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 oD(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 fAe.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,oAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,xg.isAtomic)(o)&&!(0,xg.isJoined)(o))if((0,xg.hasExpression)(o)){const u=oD(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 uD(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 aD(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 pAe(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=uD(i,e),o=aD(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=uD(l,e),f=aD(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 lAe.FieldReference?`${n.refString}.${r}()`:n instanceof xAe.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 Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprAlternationTree=void 0;const Gv=We,Gd=ut,gAe=go;function lD(t){const e=t.atExpr();switch(e.atNodeType()){case Gd.ATNodeType.And:case Gd.ATNodeType.Partial:return;case Gd.ATNodeType.Or:{if(e instanceof Bz){const n=lD(e.left);if(n){const r=lD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Bz extends Gd.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=lD(this)||[]),this.inList}apply(e,n,r,i){if((0,gAe.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,Gv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Gv.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,Gv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Gv.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==="|"?Gd.ATNodeType.Or:Gd.ATNodeType.And}}Qv.ExprAlternationTree=Bz;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.ExprAsymmetric=void 0;const mAe=Fa;class yAe extends mAe.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}`}}}}Wd.ExprAsymmetric=yAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprAvg=void 0;const EAe=Wd;class AAe extends EAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Wv.ExprAvg=AAe;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprCast=void 0;const vAe=Di,SAe=ut;class _Ae extends SAe.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,vAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Vv.ExprCast=_Ae;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprCoalesce=void 0;const kz=Yi,Mz=Zt,CAe=ut;class bAe extends CAe.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)})}}Yv.ExprCoalesce=bAe;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprCount=void 0;const TAe=Fa;class RAe extends TAe.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"}}}Kv.ExprCount=RAe;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprCountDistinct=void 0;const Jv=Zt,OAe=Fa;class DAe extends OAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Jv.FT.numberT,Jv.FT.stringT,Jv.FT.dateT,Jv.FT.timestampT]}}Xv.ExprCountDistinct=DAe;var Zv={},s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.Limit=void 0;const NAe=Qe,wAe=En;class FAe extends NAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=wAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}s0.Limit=FAe;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PartitionBy=void 0;const LAe=Qe;class IAe extends LAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Vd.PartitionBy=IAe;var dg={},o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.FieldName=void 0;const $Ae=Qe;class BAe extends $Ae.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])}}o0.FieldName=BAe,Object.defineProperty(dg,"__esModule",{value:!0}),dg.ExprFunc=void 0;const ss=We,kAe=Ri,MAe=Id,PAe=ut,jAe=o0,Pz=Nt;class UAe extends PAe.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,kAe.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 MAe.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=qAe(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=zAe(O),M=L.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=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",W)}const H=[];for(const W of L)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const G=new jAe.FieldName(W.name);this.has({name:G});const K=e.lookup([G]);if(K.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${K.error.message}`);K.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.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}}}dg.ExprFunc=UAe;function qAe(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 zAe(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(Zv,"__esModule",{value:!0}),Zv.ExprProps=void 0;const HAe=We,QAe=Ri,GAe=Zt,WAe=r0,VAe=s0,YAe=Vd,KAe=ut,XAe=dg;class JAe extends KAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=GAe.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,HAe.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,QAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof YAe.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 VAe.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 WAe.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 XAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Zv.ExprProps=JAe;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprLogicalOp=void 0;const ZAe=lg,jz=Zt;class eve extends ZAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[jz.FT.boolT,jz.FT.aggregateBoolT]}}eS.ExprLogicalOp=eve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprMax=void 0;const nS=Zt,tve=Fa;class nve extends tve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[nS.FT.numberT,nS.FT.stringT,nS.FT.dateT,nS.FT.timestampT]}returns(e){return e.dataType}}tS.ExprMax=nve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprMin=void 0;const iS=Zt,rve=Fa;class ive extends rve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[iS.FT.numberT,iS.FT.stringT,iS.FT.dateT,iS.FT.timestampT]}returns(e){return e.dataType}}rS.ExprMin=ive;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprMinus=void 0;const sve=Ri,Uz=Zt,ove=ut;class uve extends ove.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,sve.errorFor)("negate requires number")}}sS.ExprMinus=uve;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprMulDiv=void 0;const ave=Qd;class lve extends ave.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}oS.ExprMulDiv=lve;var uS={},hg={};Object.defineProperty(hg,"__esModule",{value:!0}),hg.Unary=void 0;const cve=ut;class fve extends cve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}hg.Unary=fve,Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprNot=void 0;const qz=Zt,xve=hg;class dve extends xve.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"}}}}}uS.ExprNot=dve;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprNow=void 0;const hve=ut;class pve extends hve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}aS.ExprNow=pve;var lS={};Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprNULL=void 0;const gve=ut;class mve extends gve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}lS.ExprNULL=mve;var cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.ExprNumber=void 0;const yve=Zt,Eve=ut;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...yve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}cS.ExprNumber=Ave;var fS={};Object.defineProperty(fS,"__esModule",{value:!0}),fS.ExprParens=void 0;const cD=ut;class vve extends cD.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()===cD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,cD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}fS.ExprParens=vve;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ExprRegEx=void 0;const Sve=ut;class _ve extends Sve.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"}}}xS.ExprRegEx=_ve;var dS={};Object.defineProperty(dS,"__esModule",{value:!0}),dS.ExprString=void 0;const Cve=ut,bve=Zt;class Tve extends Cve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...bve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}dS.ExprString=Tve;var hS={};Object.defineProperty(hS,"__esModule",{value:!0}),hS.ExprSum=void 0;const Rve=Wd;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}hS.ExprSum=Ove;var pS={};Object.defineProperty(pS,"__esModule",{value:!0}),pS.ExprTimeExtract=void 0;const vu=We,zz=Ri,fD=ut,Dve=n0;class pg extends fD.ExpressionDef{static extractor(e){const n=pg.pluralMap[e];if(n)return n;if((0,vu.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=pg.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 Dve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,vu.maxExpressionType)(i.expressionType,s.expressionType),u=(0,vu.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,vu.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,vu.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,fD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,fD.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,vu.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:(0,vu.mkTemporal)(i.value,a),right:(0,vu.mkTemporal)(s.value,a)}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,vu.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:(0,vu.mkTemporal)(i.value,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}'`)}}pS.ExprTimeExtract=pg,pg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var gS={},mo={},mS={};Object.defineProperty(mS,"__esModule",{value:!0}),mS.QueryInputSpace=void 0;const Nve=Oi,wve=Ld;class Fve extends wve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Nve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}mS.QueryInputSpace=Fve;var Lve=N&&N.__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]}),Ive=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$ve=N&&N.__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)&&Lve(e,t,n);return Ive(e,t),e};Object.defineProperty(mo,"__esModule",{value:!0}),mo.ReduceFieldSpace=mo.QuerySpace=mo.QueryOperationSpace=void 0;const yS=$ve(We),xD=Jl,Bve=o0,kve=Br,Mve=pt,Pve=Ld,jve=eg,Uve=mr,qve=mS;class Hz extends Pve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new qve.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 Uve.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();yS.isAtomicFieldType(l.dataType)&&yS.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)}}mo.QueryOperationSpace=Hz;class Qz extends Hz{addRefineFromFields(e){var n;if(yS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Bve.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 jve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Mve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof kve.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)&&!Hve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(yS.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,xD.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,xD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,xD.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}}mo.QuerySpace=Qz;class zve extends Qz{constructor(){super(...arguments),this.segmentType="reduce"}}mo.ReduceFieldSpace=zve;function Hve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(gS,"__esModule",{value:!0}),gS.ExprUngroup=void 0;const Gz=We,Qve=mo,Gve=Zt,Wve=ut;class Vve extends Wve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=Gve.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 Qve.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`)}}gS.ExprUngroup=Vve;var ES={};Object.defineProperty(ES,"__esModule",{value:!0}),ES.ForRange=void 0;const Wz=Yi,Vz=Ri,Yz=Zt,AS=Di,Yve=ut,vS=Hd,Kz=n0;class Kve extends Yve.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,AS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,AS.timeOffset)("date",i.value,"+",o.value,u),g=new vS.ExprTime("date",m);return new Kz.Range(p,g).apply(e,n,r)}const l=vS.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,AS.castTo)("timestamp",f,"date"),c=new vS.ExprTime("timestamp",f,i.expressionType)}const x=(0,AS.timeOffset)("timestamp",f,"+",o.value,u),h=new vS.ExprTime("timestamp",x,i.expressionType);return new Kz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}ES.ForRange=Kve;var er={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class of extends Error{}class Xve extends of{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Jve extends of{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Zve extends of{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class gg extends of{}class Xz extends of{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends of{}class u0 extends of{constructor(){super("Zone is an abstract class")}}const ke="numeric",yo="short",os="long",dD={year:ke,month:ke,day:ke},Jz={year:ke,month:yo,day:ke},eSe={year:ke,month:yo,day:ke,weekday:yo},Zz={year:ke,month:os,day:ke},eH={year:ke,month:os,day:ke,weekday:os},tH={hour:ke,minute:ke},nH={hour:ke,minute:ke,second:ke},rH={hour:ke,minute:ke,second:ke,timeZoneName:yo},iH={hour:ke,minute:ke,second:ke,timeZoneName:os},sH={hour:ke,minute:ke,hourCycle:"h23"},oH={hour:ke,minute:ke,second:ke,hourCycle:"h23"},uH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:yo},aH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:os},lH={year:ke,month:ke,day:ke,hour:ke,minute:ke},cH={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},fH={year:ke,month:yo,day:ke,hour:ke,minute:ke},xH={year:ke,month:yo,day:ke,hour:ke,minute:ke,second:ke},tSe={year:ke,month:yo,day:ke,weekday:yo,hour:ke,minute:ke},dH={year:ke,month:os,day:ke,hour:ke,minute:ke,timeZoneName:yo},hH={year:ke,month:os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:yo},pH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,timeZoneName:os},gH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,second:ke,timeZoneName:os};function _t(t){return typeof t>"u"}function uf(t){return typeof t=="number"}function SS(t){return typeof t=="number"&&t%1===0}function nSe(t){return typeof t=="string"}function rSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function mH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function iSe(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 sSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function La(t,e,n){return SS(t)&&t>=e&&t<=n}function oSe(t,e){return t-e*Math.floor(t/e)}function Fn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function a0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function af(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function hD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function pD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function mg(t){return t%4===0&&(t%100!==0||t%400===0)}function yg(t){return mg(t)?366:365}function _S(t,e){const n=oSe(e-1,12)+1,r=t+(e-n)/12;return n===2?mg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function gD(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 CS(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 mD(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 bS(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 TS(t,e){const n={};for(const r in t)if(Yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=AH(i)}return n}function Eg(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}${Fn(n,2)}:${Fn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Fn(n,2)}${Fn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function RS(t){return sSe(t,["hour","minute","second","millisecond"])}const vH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,uSe=["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"],aSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function _H(t){switch(t){case"narrow":return[...aSe];case"short":return[...SH];case"long":return[...uSe];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"],lSe=["M","T","W","T","F","S","S"];function TH(t){switch(t){case"narrow":return[...lSe];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"],cSe=["Before Christ","Anno Domini"],fSe=["BC","AD"],xSe=["B","A"];function OH(t){switch(t){case"narrow":return[...xSe];case"short":return[...fSe];case"long":return[...cSe];default:return null}}function dSe(t){return RH[t.hour<12?0:1]}function hSe(t,e){return TH(e)[t.weekday-1]}function pSe(t,e){return _H(e)[t.month-1]}function gSe(t,e){return OH(e)[t.year<0?0:1]}function mSe(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 ySe={D:dD,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 Fi{static create(e,n={}){return new Fi(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 ySe[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 Fn(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?dSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?pSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?hSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?gSe(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(Fi.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=Fi.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 Eo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Kd=class{get type(){throw new u0}get name(){throw new u0}get ianaName(){return this.name}get isUniversal(){throw new u0}offsetName(e,n){throw new u0}formatOffset(e,n){throw new u0}offset(e){throw new u0}equals(e){throw new u0}get isValid(){throw new u0}},yD=null;class OS extends Kd{static get instance(){return yD===null&&(yD=new OS),yD}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 Eg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let DS={};function ESe(t){return DS[t]||(DS[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"})),DS[t]}const ASe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function vSe(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 SSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ASe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let NS={};class Su extends Kd{static create(e){return NS[e]||(NS[e]=new Su(e)),NS[e]}static resetCache(){NS={},DS={}}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=Su.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 Eg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=ESe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?SSe(r,n):vSe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=gD({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 ED=null;class Mr extends Kd{static get utcInstance(){return ED===null&&(ED=new Mr(0)),ED}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(bS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Eg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Eg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Eg(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 Kd{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 l0(t,e){if(_t(t)||t===null)return e;if(t instanceof Kd)return t;if(nSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||Su.create(t)}else return uf(t)?Mr.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 Ln{static get now(){return wH}static set now(e){wH=e}static set defaultZone(e){FH=e}static get defaultZone(){return l0(FH,OS.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(),Su.resetCache()}}let kH={};function _Se(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 AD={};function vD(t,e={}){const n=JSON.stringify([t,e]);let r=AD[n];return r||(r=new Intl.DateTimeFormat(t,e),AD[n]=r),r}let SD={};function CSe(t,e={}){const n=JSON.stringify([t,e]);let r=SD[n];return r||(r=new Intl.NumberFormat(t,e),SD[n]=r),r}let _D={};function bSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=_D[i];return s||(s=new Intl.RelativeTimeFormat(t,e),_D[i]=s),s}let Ag=null;function TSe(){return Ag||(Ag=new Intl.DateTimeFormat().resolvedOptions().locale,Ag)}function RSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=vD(t).resolvedOptions()}catch{n=vD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function OSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function DSe(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function NSe(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 wS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function wSe(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 FSe{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=CSe(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):pD(e,3);return Fn(n,this.padTo)}}}class LSe{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&&Su.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=vD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class ISe{constructor(e,n,r){this.opts={style:"long",...r},!n&&mH()&&(this.rtf=bSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):mSe(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||Ln.defaultLocale,o=s||(i?"en-US":TSe()),u=n||Ln.defaultNumberingSystem,a=r||Ln.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){Ag=null,AD={},SD={},_D={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=RSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=OSe(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=wSe(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 wS(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]=DSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return wS(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]=NSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return wS(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 wS(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 FSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new LSe(e,this.intl,n)}relFormatter(e={}){return new ISe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return _Se(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 Xd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Jd(...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 Zd(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]]=a0(e[n+i]);return[r,null,n+i]}}const PH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,$Se=`(?:${PH.source}?(?:\\[(${vH.source})\\])?)?`,CD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jH=RegExp(`${CD.source}${$Se}`),bD=RegExp(`(?:T${jH.source})?`),BSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,MSe=/(\d{4})-?(\d{3})/,PSe=MH("weekYear","weekNumber","weekDay"),jSe=MH("year","ordinal"),USe=/(\d{4})-(\d\d)-(\d\d)/,UH=RegExp(`${CD.source} ?(?:${PH.source}|(${vH.source}))?`),qSe=RegExp(`(?: ${UH.source})?`);function eh(t,e,n){const r=t[e];return _t(r)?n:a0(r)}function zSe(t,e){return[{year:eh(t,e),month:eh(t,e+1,1),day:eh(t,e+2,1)},null,e+3]}function th(t,e){return[{hours:eh(t,e,0),minutes:eh(t,e+1,0),seconds:eh(t,e+2,0),milliseconds:hD(t[e+3])},null,e+4]}function vg(t,e){const n=!t[e]&&!t[e+1],r=bS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function Sg(t,e){const n=t[e]?Su.create(t[e]):null;return[{},n,e+1]}const HSe=RegExp(`^T?${CD.source}$`),QSe=/^-?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 GSe(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(af(n)),months:x(af(r)),weeks:x(af(i)),days:x(af(s)),hours:x(af(o)),minutes:x(af(u)),seconds:x(af(a),a==="-0"),milliseconds:x(hD(l),f)}]}const WSe={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 TD(t,e,n,r,i,s,o){const u={year:e.length===2?mD(a0(e)):a0(e),month:SH.indexOf(n)+1,day:a0(r),hour:a0(i),minute:a0(s)};return o&&(u.second=a0(o)),t&&(u.weekday=t.length>3?CH.indexOf(t)+1:bH.indexOf(t)+1),u}const VSe=/^(?:(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 YSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=TD(e,i,r,n,s,o,u);let h;return a?h=WSe[a]:l?h=0:h=bS(c,f),[x,new Mr(h)]}function KSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const XSe=/^(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$/,JSe=/^(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$/,ZSe=/^(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[TD(e,i,r,n,s,o,u),Mr.utcInstance]}function e4e(t){const[,e,n,r,i,s,o,u]=t;return[TD(e,u,n,r,i,s,o),Mr.utcInstance]}const t4e=Xd(BSe,bD),n4e=Xd(kSe,bD),r4e=Xd(MSe,bD),i4e=Xd(jH),zH=Jd(zSe,th,vg,Sg),s4e=Jd(PSe,th,vg,Sg),o4e=Jd(jSe,th,vg,Sg),u4e=Jd(th,vg,Sg);function a4e(t){return Zd(t,[t4e,zH],[n4e,s4e],[r4e,o4e],[i4e,u4e])}function l4e(t){return Zd(KSe(t),[VSe,YSe])}function c4e(t){return Zd(t,[XSe,qH],[JSe,qH],[ZSe,e4e])}function f4e(t){return Zd(t,[QSe,GSe])}const x4e=Jd(th);function d4e(t){return Zd(t,[HSe,x4e])}const h4e=Xd(USe,qSe),p4e=Xd(UH),g4e=Jd(th,vg,Sg);function m4e(t){return Zd(t,[h4e,zH],[p4e,g4e])}const y4e="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}},E4e={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,nh=146097/4800,A4e={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:nh/7,days:nh,hours:nh*24,minutes:nh*24*60,seconds:nh*24*60*60,milliseconds:nh*24*60*60*1e3},...HH},lf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],v4e=lf.slice(0).reverse();function cf(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 S4e(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?S4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function _4e(t,e){v4e.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?A4e:E4e,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:TS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(uf(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]=f4e(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]=d4e(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Zve(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 Xz(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?Fi.create(this.loc,r).formatDurationFromString(this,e):y4e}toHuman(e={}){const n=lf.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+=pD(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 lf)(Yd(n.values,i)||Yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return cf(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 cf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...TS(e,Ct.normalizeUnit)};return cf(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),cf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return _4e(this.matrix,e),cf(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 lf)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;uf(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)lf.indexOf(l)>lf.indexOf(o)&&QH(this.matrix,i,l,n,o)}else uf(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 cf(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 cf(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 lf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const _g="Invalid Interval";function C4e(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Jve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=Rg(e),i=Rg(n),s=C4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=Rg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=Rg(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(Rg).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()})`:_g}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:_g}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:_g}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:_g}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:_g}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 Cg=class{static hasDST(e=Ln.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Su.isValidZone(e)}static normalizeZone(e){return l0(e,Ln.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 b4e(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 T4e(t,e,n,r){let[i,s,o,u]=b4e(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 RD={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]},R4e=RD.hanidec.replace(/[\[|\]]/g,"").split("");function O4e(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(RD.hanidec)!==-1)e+=R4e.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 Ao({numberingSystem:t},e=""){return new RegExp(`${RD[t||"latn"]}${e}`)}const D4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(O4e(n))}}const VH="[ ]",YH=new RegExp(VH,"g");function N4e(t){return t.replace(/\./g,"\\.?").replace(YH,VH)}function KH(t){return t.replace(/\./g,"").replace(YH," ").toLowerCase()}function vo(t,e){return t===null?null:{regex:RegExp(t.map(N4e).join("|")),deser:([n])=>t.findIndex(r=>KH(n)===KH(r))+e}}function XH(t,e){return{regex:t,deser:([,n,r])=>bS(n,r),groups:e}}function OD(t){return{regex:t,deser:([e])=>e}}function w4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function F4e(t,e){const n=Ao(e),r=Ao(e,"{2}"),i=Ao(e,"{3}"),s=Ao(e,"{4}"),o=Ao(e,"{6}"),u=Ao(e,"{1,2}"),a=Ao(e,"{1,3}"),l=Ao(e,"{1,6}"),c=Ao(e,"{1,9}"),f=Ao(e,"{2,4}"),x=Ao(e,"{4,6}"),h=g=>({regex:RegExp(w4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return vo(e.eras("short",!1),0);case"GG":return vo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,mD);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 vo(e.months("short",!0,!1),1);case"MMMM":return vo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return vo(e.months("short",!1,!1),1);case"LLLL":return vo(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 OD(c);case"uu":return OD(u);case"uuu":return $t(n);case"a":return vo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,mD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return vo(e.weekdays("short",!1,!1),1);case"EEEE":return vo(e.weekdays("long",!1,!1),1);case"ccc":return vo(e.weekdays("short",!0,!1),1);case"cccc":return vo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return XH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return XH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return OD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:D4e};return m.token=t,m}const L4e={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 I4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=L4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function $4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function B4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Yd(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 k4e(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=Su.create(t.z)),_t(t.Z)||(n||(n=new Mr(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=hD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let DD=null;function M4e(){return DD||(DD=at.fromMillis(1555555555555)),DD}function P4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(M4e()).map(o=>I4e(o,e,n));return s.includes(void 0)?t:s}function j4e(t,e){return Array.prototype.concat(...t.map(n=>P4e(n,e)))}function JH(t,e,n){const r=j4e(Fi.parseFormat(n),t),i=r.map(o=>F4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=$4e(i),a=RegExp(o,"i"),[l,c]=B4e(e,a,u),[f,x,h]=c?k4e(c):[null,null,void 0];if(Yd(c,"a")&&Yd(c,"H"))throw new gg("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 U4e(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 Eo("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+(mg(t)?eQ:ZH)[e-1]}function rQ(t,e){const n=mg(t)?eQ:ZH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function ND(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=CS(u)):o>CS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...RS(t)}}function iQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=tQ(e,1,4),s=yg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=yg(u)):o>s?(u=e+1,o-=yg(e)):u=e;const{month:a,day:l}=rQ(u,o);return{year:u,month:a,day:l,...RS(t)}}function wD(t){const{year:e,month:n,day:r}=t,i=nQ(e,n,r);return{year:e,ordinal:i,...RS(t)}}function sQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=rQ(e,n);return{year:e,month:r,day:i,...RS(t)}}function q4e(t){const e=SS(t.weekYear),n=La(t.weekNumber,1,CS(t.weekYear)),r=La(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function z4e(t){const e=SS(t.year),n=La(t.ordinal,1,yg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function oQ(t){const e=SS(t.year),n=La(t.month,1,12),r=La(t.day,1,_S(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=La(e,0,23)||e===24&&n===0&&r===0&&i===0,o=La(n,0,59),u=La(r,0,59),a=La(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const FD="Invalid DateTime",aQ=864e13;function FS(t){return new Eo("unsupported zone",`the zone "${t.name}" is not supported`)}function LD(t){return t.weekData===null&&(t.weekData=ND(t.c)),t.weekData}function bg(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 LS(t,e,n){return lQ(gD(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,_S(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=gD(s);let[a,l]=lQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function Tg(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 Eo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function IS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function ID(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Fn(t.c.year,n?6:4),e?(r+="-",r+=Fn(t.c.month),r+="-",r+=Fn(t.c.day)):(r+=Fn(t.c.month),r+=Fn(t.c.day)),r}function xQ(t,e,n,r,i,s){let o=Fn(t.c.hour);return e?(o+=":",o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=Fn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Fn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Fn(Math.trunc(-t.o/60)),o+=":",o+=Fn(Math.trunc(-t.o%60))):(o+="+",o+=Fn(Math.trunc(t.o/60)),o+=":",o+=Fn(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},H4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},hQ=["year","month","day","hour","minute","second","millisecond"],G4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],W4e=["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 Xz(t);return e}function gQ(t,e){const n=l0(e.zone,Ln.defaultZone),r=xn.fromObject(e),i=Ln.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]=LS(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=pD(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||Ln.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Eo("invalid input"):null)||(n.isValid?null:FS(n));this.ts=_t(e.ts)?Ln.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 Eo("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=Mr.utcInstance,gQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=rSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=l0(n.zone,Ln.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(FS(i))}static fromMillis(e,n={}){if(uf(e))return e<-aQ||e>aQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:l0(n.zone,Ln.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(uf(e))return new at({ts:e*1e3,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=l0(n.zone,Ln.defaultZone);if(!r.isValid)return at.invalid(FS(r));const i=Ln.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=TS(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 gg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new gg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=cQ(i,s);h?(p=G4e,m=H4e,g=ND(g)):u?(p=W4e,m=Q4e,g=wD(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?q4e(o):u?z4e(o):oQ(o),A=E||uQ(o);if(A)return at.invalid(A);const v=h?iQ(o):u?sQ(o):o,[_,S]=LS(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]=a4e(e);return Tg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=l4e(e);return Tg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=c4e(e);return Tg(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]=U4e(o,e,n);return c?at.invalid(c):Tg(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]=m4e(e);return Tg(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 Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Xve(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?LD(this).weekYear:NaN}get weekNumber(){return this.isValid?LD(this).weekNumber:NaN}get weekday(){return this.isValid?LD(this).weekday:NaN}get ordinal(){return this.isValid?wD(this.c).ordinal:NaN}get monthShort(){return this.isValid?Cg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Cg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Cg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Cg.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 mg(this.year)}get daysInMonth(){return _S(this.year,this.month)}get daysInYear(){return this.isValid?yg(this.year):NaN}get weeksInWeekYear(){return this.isValid?CS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Ln.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=l0(e,Ln.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]=LS(o,s,e)}return bg(this,{ts:i,zone:e})}else return at.invalid(FS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return bg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=TS(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 gg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new gg("Can't mix ordinal dates with month/day");let l;r?l=iQ({...ND(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(_S(l.year,l.month),l.day))):l=sQ({...wD(this.c),...n});const[c,f]=LS(l,this.o,this.zone);return bg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return bg(this,fQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return bg(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?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):FD}toLocaleString(e=dD,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):FD}toLocaleParts(e={}){return this.isValid?Fi.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=ID(this,o);return u+="T",u+=xQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?ID(this,e==="extended"):null}toISOWeekDate(){return IS(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 IS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return IS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?ID(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")),IS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():FD}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=iSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=T4e(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 dD}static get DATE_MED(){return Jz}static get DATE_MED_WITH_WEEKDAY(){return eSe}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 tSe}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 Rg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&uf(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 V4e="2.5.2";var Y4e=wi.DateTime=at;wi.Duration=Ct,wi.FixedOffsetZone=Mr,wi.IANAZone=Su,wi.Info=Cg,wi.Interval=dn,wi.InvalidZone=NH,wi.Settings=Ln,wi.SystemZone=OS,wi.VERSION=V4e,wi.Zone=Kd,Object.defineProperty(er,"__esModule",{value:!0}),er.LiteralYear=er.LiteralQuarter=er.LiteralMonth=er.LiteralWeek=er.LiteralDay=er.LiteralHour=er.LiteralTimestamp=er.TimeFormatError=void 0;const c0=wi,K4e=We,X4e=n0,EQ=Hd,$D=ut;class J4e extends Error{}er.TimeFormatError=J4e;function ff(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`,BD=`${_Q}:ss`;class CQ extends $D.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,typeDef:{type: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 kD extends CQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=ff(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=c0.DateTime.fromFormat(e,BD);if(s.isValid)return new kD(r,n);if(s=c0.DateTime.fromFormat(e,_Q),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(BD);return new MD(r,n,"timestamp",o)}}}er.LiteralTimestamp=kD;class MD 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,$D.getMorphicValue)(i,"timestamp"),a=(0,$D.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,K4e.isTemporalField)(o.dataType)){const u=o.dataType;return new X4e.Range(new EQ.ExprTime(u,i.value),new EQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class PD extends MD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,SQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(BD),new PD(n,r)}}er.LiteralHour=PD;class Og extends MD{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 jD extends Og{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new jD(n,r)}}er.LiteralDay=jD;class UD extends Og{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=ff(e,!1);let r=n.text;const i=n.text.slice(0,10),s=c0.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 UD(n,r)}}}er.LiteralWeek=UD;class qD extends Og{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.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 qD(n,r)}}}er.LiteralMonth=qD;class zD extends Og{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=ff(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=c0.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 zD(n,r)}}}er.LiteralQuarter=zD;class HD extends Og{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.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 HD(n,r)}}}er.LiteralYear=HD;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.PartialCompare=void 0;const bQ=ut;class Z4e 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}}$S.PartialCompare=Z4e;var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.PickWhen=rh.Pick=void 0;const _u=We,ih=Zt,e_e=ut,t_e=Qe;function BS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class n_e extends e_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,_u.maxExpressionType)(o,(0,_u.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,_u.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!ih.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=BS(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=BS(s,l),ih.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,_u.maxExpressionType)(o,l.expressionType),evalSpace:(0,_u.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(!ih.FT.typeEq(a.when,ih.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!ih.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=BS(i,a.pick),s=(0,_u.maxExpressionType)(s,(0,_u.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,_u.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,_u.maxExpressionType)(s,u.expressionType),o=(0,_u.mergeEvalSpaces)(o,u.evalSpace),i=BS(i,u),ih.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})}}rh.Pick=n_e;class r_e extends t_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}rh.PickWhen=r_e;var sh={};Object.defineProperty(sh,"__esModule",{value:!0}),sh.CaseWhen=sh.Case=void 0;const i_e=ut,s_e=Qe,Dg=Zt,xf=Yi;function TQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class o_e extends i_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,xf.maxExpressionType)(i,o.expressionType),s=(0,xf.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(!Dg.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Dg.FT.typeEq(l.when,Dg.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Dg.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,xf.maxExpressionType)(i,(0,xf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,xf.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&&!Dg.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,xf.maxExpressionType)(i,l.expressionType),s=(0,xf.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}}}sh.Case=o_e;class u_e extends s_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}sh.CaseWhen=u_e;var oh={};Object.defineProperty(oh,"__esModule",{value:!0}),oh.RecordLiteral=oh.RecordElement=void 0;const a_e=ut,l_e=Qe;class c_e extends l_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}oh.RecordElement=c_e;class f_e extends a_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){throw new Error("get expression on record todo")}}oh.RecordLiteral=f_e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.Timeframe=void 0;const x_e=We,d_e=Qe;class h_e extends d_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,x_e.isTimestampUnit)(n)?n:"second"}}kS.Timeframe=h_e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.TopBy=void 0;const p_e=We,RQ=ut,g_e=Qe;class m_e extends g_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof RQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof RQ.ExpressionDef){const n=this.by.getExpression(e);return(0,p_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}}}MS.TopBy=m_e;var f0={};Object.defineProperty(f0,"__esModule",{value:!0}),f0.ImportStatement=f0.ImportSelect=f0.ImportSourceName=void 0;const QD=Qe;class y_e extends QD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}f0.ImportSourceName=y_e;class E_e extends QD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}f0.ImportSelect=E_e;class A_e extends QD.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}'`)}}}f0.ImportStatement=A_e;var Ng={};Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.ExtendBlock=void 0;const v_e=Qe,S_e=En;class __e extends v_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=S_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Ng.ExtendBlock=__e;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Argument=void 0;const C_e=Qe;class b_e extends C_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}PS.Argument=b_e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.HasParameter=void 0;const OQ=We,T_e=Qe;class R_e extends T_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,OQ.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,OQ.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"}}}jS.HasParameter=R_e;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.AnonymousQuery=void 0;const O_e=Qe,D_e=$r;class N_e extends O_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=D_e.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)}}US.AnonymousQuery=N_e;var x0={};Object.defineProperty(x0,"__esModule",{value:!0}),x0.View=void 0;const w_e=Qe;let F_e=class extends w_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};x0.View=F_e;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ViewArrow=void 0;const L_e=mr,I_e=x0;class $_e extends I_e.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 L_e.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()}}qS.ViewArrow=$_e;var zS={},wg={};Object.defineProperty(wg,"__esModule",{value:!0}),wg.refine=void 0;const GD=Yi,WD=Jl;function B_e(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,GD.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,GD.isQuerySegment)(o)&&(0,GD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,WD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,WD.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(WD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}wg.refine=B_e,Object.defineProperty(zS,"__esModule",{value:!0}),zS.ViewRefine=void 0;const k_e=kr,M_e=is,P_e=wg,j_e=x0;class U_e extends j_e.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,M_e.getFinalStruct)(this.refinement,e.structDef(),i):k_e.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,P_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}zS.ViewRefine=U_e;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.ReferenceView=void 0;const VD=We,DQ=kr,q_e=is,z_e=Br,H_e=wg,Q_e=x0;class G_e extends Q_e.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:DQ.ErrorFactory.structDef,outputStruct:DQ.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 z_e.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,VD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,VD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,VD.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,q_e.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,H_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}HS.ReferenceView=G_e;var QS={},Fg={},GS={},Lg={};Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.Index=void 0;const W_e=Qe,V_e=En;let Y_e=class extends W_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=V_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Lg.Index=Y_e;var Ig={};Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.SampleProperty=void 0;const K_e=Qe,NQ=En;class X_e extends K_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=NQ.LegalRefinementStage.Tail,this.forceQueryClass=NQ.QueryClass.Index}sampling(){return this.sample}}Ig.SampleProperty=X_e;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.IndexFieldSpace=void 0;const wQ=We,YD=pt,J_e=Br,Z_e=mo,e5e=fg,t5e=mr;class n5e extends Z_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof YD.FieldReference?super.pushFields(n):n instanceof YD.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 J_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof e5e.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 t5e.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=YD.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,wQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,wQ.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)}}WS.IndexFieldSpace=n5e,Object.defineProperty(GS,"__esModule",{value:!0}),GS.IndexBuilder=void 0;const KD=We,r5e=kr,i5e=po,s5e=Lg,o5e=s0,u5e=Ig,a5e=WS;class l5e{constructor(e,n,r,i){this.filters=[],this.alwaysJoins=[],this.type="index",this.resultFS=new a5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof i5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof o5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof s5e.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 u5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,KD.isIndexSegment)(e)&&!(0,KD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),r5e.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,KD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins]),n}}GS.IndexBuilder=l5e;var VS={},$g={};Object.defineProperty($g,"__esModule",{value:!0}),$g.GroupBy=void 0;const c5e=rs,FQ=En;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=FQ.LegalRefinementStage.Single,this.forceQueryClass=FQ.QueryClass.Grouping}}$g.GroupBy=f5e;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.ProjectFieldSpace=void 0;const XD=We,x5e=mo;class d5e extends x5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,XD.expressionIsAggregate)(e.expressionType)?!1:(0,XD.expressionInvolvesAggregate)(e.expressionType)&&(0,XD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}YS.ProjectFieldSpace=d5e;var d0={},df={};Object.defineProperty(df,"__esModule",{value:!0}),df.Ordering=df.OrderBy=void 0;const h5e=We,LQ=o0,IQ=Qe,p5e=En;class g5e extends IQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof LQ.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 LQ.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,h5e.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}}df.OrderBy=g5e;class m5e extends IQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=p5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}df.Ordering=m5e;var Bg={};Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.Top=void 0;const $Q=We,y5e=o0,E5e=Qe,A5e=En;let v5e=class extends E5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof y5e.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,$Q.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,$Q.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}}}};Bg.Top=v5e,Object.defineProperty(d0,"__esModule",{value:!0}),d0.ReduceBuilder=d0.QuerySegmentBuilder=void 0;const BQ=We,S5e=kr,_5e=po,C5e=s0,kQ=df,MQ=Bg,b5e=mo,T5e=rs;class PQ{constructor(){this.alwaysJoins=[],this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof T5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof MQ.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 C5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof kQ.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 MQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof kQ.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]),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins])}}d0.QuerySegmentBuilder=PQ;class R5e extends PQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new b5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,BQ.isReduceSegment)(e)||(0,BQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),S5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}d0.ReduceBuilder=R5e,Object.defineProperty(VS,"__esModule",{value:!0}),VS.ProjectBuilder=void 0;const jQ=We,O5e=kr,D5e=$g,N5e=YS,w5e=d0;class F5e extends w5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new N5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof D5e.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,jQ.isProjectSegment)(e)||(0,jQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),O5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}VS.ProjectBuilder=F5e;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.PartialBuilder=void 0;const L5e=Yi,I5e=d0;class $5e extends I5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,L5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}KS.PartialBuilder=$5e,Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.QOpDesc=void 0;const B5e=GS,k5e=VS,M5e=d0,P5e=Qe,j5e=is,U5e=mr,hf=En,q5e=KS;class z5e extends P5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=hf.QueryClass.Grouping:this.refineThis.type==="project"?n=hf.QueryClass.Project:this.refineThis.type==="index"&&(n=hf.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=hf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case hf.QueryClass.Grouping:return new M5e.ReduceBuilder(e,this.refineThis,n,r);case hf.QueryClass.Project:return new k5e.ProjectBuilder(e,this.refineThis,n,r);case hf.QueryClass.Index:return new B5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new q5e.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 U5e.StaticSourceSpace((0,j5e.opOutputStruct)(this,e.structDef(),i))}}}Fg.QOpDesc=z5e,Object.defineProperty(QS,"__esModule",{value:!0}),QS.QOpDescView=void 0;const H5e=We,Q5e=mr,UQ=Fg,G5e=is,JD=En,W5e=x0;class V5e extends W5e.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,H5e.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 UQ.QOpDesc([]),o=new UQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case JD.LegalRefinementStage.Head:s.push(u);break;case JD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case JD.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,G5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new Q5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}QS.QOpDescView=V5e;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 qQ=We,Y5e=Zt,K5e=zd,X5e=Qe,pf=jn,J5e=$r,Z5e=Br;class h0 extends X5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=J5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new ZD(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,qQ.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,K5e.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 ZD&&e.foundCircle)&&r.dataType!=="error"){const u=Y5e.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 zQ(e,this))}}hn.AtomicFieldDeclaration=h0;class eCe extends h0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=eCe;class tCe extends h0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=tCe;class nCe extends h0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=nCe;class rCe extends h0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=rCe;class iCe extends h0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=iCe;class sCe extends h0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=sCe;class oCe extends h0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=oCe;class ZD{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=ZD;class zQ extends Z5e.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,qQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=zQ;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.Aggregate=void 0;const uCe=rs,HQ=En;let aCe=class extends uCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=HQ.LegalRefinementStage.Single,this.forceQueryClass=HQ.QueryClass.Grouping}};XS.Aggregate=aCe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Calculate=void 0;const lCe=rs,cCe=En;class fCe extends lCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cCe.LegalRefinementStage.Single}}JS.Calculate=fCe;var kg={};Object.defineProperty(kg,"__esModule",{value:!0}),kg.Dimensions=void 0;const xCe=Zl;class dCe extends xCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}kg.Dimensions=dCe;var Mg={};Object.defineProperty(Mg,"__esModule",{value:!0}),Mg.Measures=void 0;const hCe=Zl;class pCe extends hCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Mg.Measures=pCe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.Nests=void 0;const gCe=rs,QQ=En;class mCe extends gCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=QQ.LegalRefinementStage.Single,this.forceQueryClass=QQ.QueryClass.Grouping}}ZS.Nests=mCe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.ProjectStatement=void 0;const yCe=rs,GQ=En;class ECe extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=GQ.QueryClass.Project,this.queryRefinementStage=GQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}e4.ProjectStatement=ECe;var p0={},Ia={};Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.findReferences=Ia.deprecatedParseTableURI=Ia.constructTableKey=void 0;const ACe=$l,e7=on;function t7(t){const e=(0,e7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,e7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class vCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=WQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,e7.getId)(e.connectionId()),r=t7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=t7(e.tableURI()),{connectionName:r,tablePath:i}=VQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=t7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function WQ(t,e){return t===void 0?e:`${t}:${e}`}Ia.constructTableKey=WQ;function VQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Ia.deprecatedParseTableURI=VQ;function SCe(t,e,n){const r=new vCe(t,e),i=r;return ACe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Ia.findReferences=SCe,Object.defineProperty(p0,"__esModule",{value:!0}),p0.TableFunctionSource=p0.TableMethodSource=p0.TableSource=void 0;const YQ=Ia,_Ce=ho,KQ=kr;class n7 extends _Ce.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,YQ.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}}p0.TableSource=n7;class CCe extends n7{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}}}p0.TableMethodSource=CCe;class bCe extends n7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,YQ.deprecatedParseTableURI)(this.tableURI)}}p0.TableFunctionSource=bCe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.SQLString=void 0;const TCe=Qe,XQ=Au;class RCe extends TCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(OCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof XQ.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}}t4.SQLString=RCe;function OCe(t){return t instanceof XQ.SourceQueryElement}var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.SourceDesc=void 0;const DCe=Qe;class NCe extends DCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}n4.SourceDesc=NCe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isSourceProperty=void 0;const wCe=po,FCe=Zl,LCe=Bd,ICe=t0,$Ce=kd,BCe=Md,kCe=Pd,MCe=e0,PCe=Oi;function jCe(t){return t instanceof wCe.Filter||t instanceof PCe.JoinStatement||t instanceof FCe.DeclareFields||t instanceof LCe.FieldListEdit||t instanceof ICe.Renames||t instanceof $Ce.PrimaryKey||t instanceof MCe.ObjectAnnotation||t instanceof BCe.Views||t instanceof kCe.TimezoneStatement}r4.isSourceProperty=jCe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isFieldCollectionMember=void 0;const UCe=hn,JQ=pt;function qCe(t){return t instanceof JQ.FieldReference||t instanceof JQ.WildcardFieldReference||t instanceof UCe.AtomicFieldDeclaration}i4.isFieldCollectionMember=qCe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryElement=void 0;const zCe=jd,HCe=Ud,QCe=og,GCe=ug;function WCe(t){return t instanceof zCe.QueryArrow||t instanceof HCe.QueryRefine||t instanceof QCe.QueryReference||t instanceof GCe.QueryRaw}s4.isQueryElement=WCe;var ZQ={};Object.defineProperty(ZQ,"__esModule",{value:!0});var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isQueryProperty=void 0;function VCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}o4.isQueryProperty=VCe;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isQueryExtendProperty=void 0;const YCe=kg,KCe=Oi,XCe=Mg;function JCe(t){return t instanceof YCe.Dimensions||t instanceof XCe.Measures||t instanceof KCe.JoinStatement}u4.isQueryExtendProperty=JCe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isFieldPropStatement=void 0;const ZCe=r0,ebe=po,tbe=s0,nbe=Vd;function rbe(t){return t instanceof ebe.Filter||t instanceof tbe.Limit||t instanceof nbe.PartitionBy||t instanceof ZCe.FunctionOrdering}a4.isFieldPropStatement=rbe,function(t){var e=N&&N.__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=N&&N.__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(Y1,t),n(wd,t),n(Fd,t),n(ho,t),n(J1,t),n(Au,t),n(Fv,t),n(Lv,t),n(kv,t),n(ng,t),n(jv,t),n(Bd,t),n(kd,t),n(t0,t),n(Md,t),n(Pd,t),n(Uv,t),n(Qd,t),n(zv,t),n(r0,t),n(Hv,t),n(Fa,t),n(Qv,t),n(Wd,t),n(Wv,t),n(Vv,t),n(Yv,t),n(wa,t),n(Kv,t),n(Xv,t),n(Zv,t),n(dg,t),n(cg,t),n(nf,t),n(eS,t),n(tS,t),n(rS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(cS,t),n(fS,t),n(xS,t),n(dS,t),n(hS,t),n(pS,t),n(gS,t),n(ES,t),n(er,t),n($S,t),n(Vd,t),n(rh,t),n(sh,t),n(oh,t),n(n0,t),n(kS,t),n(MS,t),n(hg,t),n(f0,t),n(Ng,t),n(PS,t),n(jS,t),n(US,t),n(Ud,t),n(jd,t),n(x0,t),n(qS,t),n(zS,t),n(HS,t),n(QS,t),n(hn,t),n(pt,t),n(XS,t),n(JS,t),n(Zl,t),n(kg,t),n(Ng,t),n(po,t),n($g,t),n(Lg,t),n(Oi,t),n(K1,t),n(s0,t),n(Mg,t),n(Y1,t),n(ZS,t),n(df,t),n(e4,t),n(Fg,t),n(Ig,t),n(Bg,t),n(qd,t),n(tf,t),n(ag,t),n(p0,t),n(t4,t),n(e0,t),n(go,t),n(n4,t),n(r4,t),n(ut,t),n(i4,t),n(o0,t),n(Qe,t),n(s4,t),n(ZQ,t),n(o4,t),n(u4,t),n(a4,t)}(Sv);var l4={},uh={};Object.defineProperty(uh,"__esModule",{value:!0}),uh.ConstantExpression=uh.ConstantFieldSpace=void 0;const ibe=ut;class eG{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}}uh.ConstantFieldSpace=eG;class sbe extends ibe.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 eG),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)}}uh.ConstantExpression=sbe;var obe=N&&N.__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]}),ube=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),abe=N&&N.__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)&&obe(e,t,n);return ube(e,t),e};Object.defineProperty(l4,"__esModule",{value:!0}),l4.MalloyToAST=void 0;const tG=AA,lbe=J2,ie=abe(Sv),r7=_v,nG=Kn,cbe=Sv,On=on,i7=We,fbe=Jo,xbe=uh;class rG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class s7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const dbe=["##! m4warnings=error"];class hbe extends lbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of dbe){const s=fbe.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,r7.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 nG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,r7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,r7.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 s7||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,On.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,On.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 nG.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,On.getPlainString)(e);for(const i of r)i instanceof tG.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,On.getStringParts)(e))r instanceof tG.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 xbe.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,On.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,On.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,On.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){return this.astAt(this.visit(e.joinStatement()),e)}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,i7.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,On.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,On.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,On.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,On.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,On.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,On.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,i7.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,On.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,i7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,On.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,On.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,On.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,On.idToStr)(o[0]),u),o[0]))}return r}visitDebugExpr(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 s7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new s7(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,On.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 rG)}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 cbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new rG}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)}visitRecordRef(e){const n=e.fieldPath(),r=n.fieldName().at(-1);if(r){const i=(0,On.getId)(r),s=new ie.ExprIdReference(this.getFieldPath(n,ie.ExpressionFieldReference));return new ie.RecordElement(i,s)}throw this.internalError(n,"IMPOSSIBLY A PATH CONTAINED ZERO ELEMENTS")}visitRecordExpr(e){const n=(0,On.getId)(e.recordKey()),r=this.getFieldExpr(e.fieldExpr());return new ie.RecordElement(n,r)}visitExprLiteralRecord(e){this.contextError(e,"not-yet-implemented","Record data is not yet implemented");const n=this.only(e.recordElement().map(r=>this.astAt(this.visit(r),r)),r=>r instanceof ie.RecordElement&&r,"a key value pair");return new ie.RecordLiteral(n)}visitExprArrayLiteral(e){return this.contextError(e,"not-yet-implemented","Array data is not yet implemented"),new ie.Unimplemented}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}}l4.MalloyToAST=hbe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.Zone=void 0;class pbe{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})}}c4.Zone=pbe;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentSymbols=void 0;const gbe=$l,mbe=on;class ybe{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,mbe.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 Ebe(t,e,n){const r=new ybe(t,e,[],[]),i=r;return gbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}f4.walkForDocumentSymbols=Ebe;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.walkForDocumentCompletions=void 0;const Abe=$l,vbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Sbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],_be=["source","explore","query","sql"];class Cbe{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 vbe)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 Sbe)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 _be)this.completions.push({type:"model_property",text:`${r}: `})}}}function bbe(t,e,n){const r=new Cbe(t,[],n),i=r;return Abe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}x4.walkForDocumentCompletions=bbe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.walkForDocumentHelpContext=void 0;const Tbe=s6;class Rbe extends Tbe.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 Obe(t,e){return new Rbe(e).visit(t)}d4.walkForDocumentHelpContext=Obe;var h4={},Pg={};Object.defineProperty(Pg,"__esModule",{value:!0}),Pg.locationContainsPosition=void 0;function Dbe(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)}Pg.locationContainsPosition=Dbe,Object.defineProperty(h4,"__esModule",{value:!0}),h4.ReferenceList=void 0;const Nbe=Pg;class wbe{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,Nbe.locationContainsPosition)(r.location,e))return r}}h4.ReferenceList=wbe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.isNeedResponse=void 0;function Fbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}p4.isNeedResponse=Fbe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForModelAnnotation=void 0;const Lbe=$l;class Ibe{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 $be(t,e,n){const r=new Ibe(t,e,n),i=r;return Lbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}g4.walkForModelAnnotation=$be;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.walkForTablePath=void 0;const iG=on,Bbe=$l;class kbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,iG.getId)(e.connectionId()),[r,i]=(0,iG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Mbe(t,e,n){const r=new kbe(t,e),i=r;return Bbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}m4.walkForTablePath=Mbe;var Pbe=N&&N.__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=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=N&&N.__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(du,"__esModule",{value:!0}),du.MalloyParserErrorHandler=du.MalloyTranslator=du.MalloyChildTranslator=du.MalloyTranslation=void 0;const sG=AA,qbe=We,zbe=BA,Hbe=F,oG=Ube(Sv),Qbe=l4,o7=_v,Gbe=Ia,u7=c4,Wbe=f4,Vbe=x4,Ybe=d4,Kbe=h4,y4=p4,Xbe=Pg,uG=Jo,Jbe=g4,Zbe=m4;class eTe extends zbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class tTe{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===""?`
|
|
1330
1330
|
`: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=sG.CharStreams.fromString(e),i=new eTe(r),s=new sG.CommonTokenStream(i),o=new Hbe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new lG(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 nTe{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,Gbe.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,y4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,y4.isNeedResponse)(u))return u}return null}}class rTe{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 Qbe.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 oG.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,y4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class iTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,Wbe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class sTe{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,Vbe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class oTe{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,Ybe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class uTe{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,Jbe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class aTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,Zbe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class lTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=uG.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,y4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof oG.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 a7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new uG.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new tTe,this.modelAnnotationStep=new uTe(this.parseStep),this.metadataStep=new iTe(this.parseStep),this.completionsStep=new sTe(this.parseStep),this.helpContextStep=new oTe(this.parseStep),this.importsAndTablesStep=new nTe(this.parseStep),this.astStep=new rTe(this.importsAndTablesStep),this.tablePathInfoStep=new aTe(this.parseStep),this.translateStep=new lTe(this.astStep),this.references=new Kbe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new aG(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}
|
|
1331
1331
|
| ${l}`,u>0&&(i=i+`
|
|
1332
1332
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|