@malloydata/render 0.0.159-dev240805173126 → 0.0.159
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.
|
@@ -1295,9 +1295,9 @@ ${JSON.stringify(r,null,2)}`)}logger(){var e;return(e=this.translator())===null|
|
|
|
1295
1295
|
${r} ${s}: [`,o.length>0&&(i+=`
|
|
1296
1296
|
`+o.map(u=>u.stringify("",n+4)).join(`
|
|
1297
1297
|
`)+`
|
|
1298
|
-
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Qu)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 this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(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.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Qu;class sEe extends Qu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=sEe;class O4 extends Qu{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}}Ve.ModelEntryReference=O4;class oEe extends Qu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=oEe;function az(t){return t.execute!==void 0}Ve.isDocStatement=az;function uEe(t){return t instanceof E1||az(t)}Ve.isDocStatementOrDocStatementList=uEe;class lz extends Qu{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}}}Ve.ListOf=lz;class E1 extends lz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=uz.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,uz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof E1){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}}}Ve.DocStatementList=E1;const aEe="5a79a191-06bc-43cf-9b12-58741cd82970";function cz(t){const e=t.inherits?cz(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 lEe(t){const e=cz(t).join("");return(0,iEe.v5)(e,aEe)}class N4 extends Qu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new rEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new nEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new E1(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(i.type==="struct"||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=lEe(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(r.type==="struct"||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}`,declaredSQLBlock:!0};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.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,eEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=N4;var U_={},Jh={},Kr={},D0={};Object.defineProperty(D0,"__esModule",{value:!0}),D0.canMakeEntry=D0.SpaceEntry=void 0;class cEe{}D0.SpaceEntry=cEe;function fEe(t){return"makeEntry"in t}D0.canMakeEntry=fEe,Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.SpaceField=void 0;const xEe=ee,dEe=D0;class hEe extends dEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,xEe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Kr.SpaceField=hEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const pEe=Kr;class gEe extends pEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=gEe,Object.defineProperty(U_,"__esModule",{value:!0}),U_.ASTViewField=void 0;const mEe=Jh;class yEe extends mEe.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)}}U_.ASTViewField=yEe,Object.defineProperty(h1,"__esModule",{value:!0}),h1.ViewFieldDeclaration=void 0;const EEe=Ve,AEe=Yr,SEe=Yh,vEe=U_;class _Ee extends EEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=AEe.extendNoteMethod}makeEntry(e){const n=new vEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,SEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}h1.ViewFieldDeclaration=_Ee;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var fz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(fz||(Rn.QueryClass=fz={}));var xz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(xz||(Rn.LegalRefinementStage=xz={})),Object.defineProperty(d1,"__esModule",{value:!0}),d1.NestFieldDeclaration=void 0;const CEe=Yh,bEe=h1,dz=Rn;class TEe extends bEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=dz.LegalRefinementStage.Single,this.forceQueryClass=dz.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,CEe.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")}}d1.NestFieldDeclaration=TEe;var Zh={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.ErrorFactory=void 0;const hz={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class D4{static get structDef(){return{...hz}}static isErrorStructDef(e){return e.name.includes(hz.name)}static get query(){return{structRef:D4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Xr.ErrorFactory=D4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const REe=Xr,pz=Ve,OEe=Yr;class NEe extends pz.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=OEe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`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),REe.ErrorFactory.isErrorStructDef(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.log(`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.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Zh.DefineSource=NEe;class DEe extends pz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=DEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const gz=Ve,FEe=Yr;class wEe extends gz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=FEe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("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})}}ep.DefineQuery=wEe;class LEe extends gz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=LEe;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Source=void 0;const IEe=Ve;class $Ee extends IEe.MalloyElement{structRef(e){return{structRef:this.structDef(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.structDef(e),parameters:this.packParameters(n)}}}Uo.Source=$Ee;var A1={},tp={},q_={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.mergeFields=F0.nameFromDef=void 0;function F4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}F0.nameFromDef=F4;function BEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>F4(i))),r=t.filter(i=>!n.has(F4(i)));return r.push(...e),r}F0.mergeFields=BEe;var S1={},Jr={},Gu={};Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.DefinedParameter=Gu.AbstractParameter=Gu.SpaceParam=void 0;const kEe=D0;class w4 extends kEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Gu.SpaceParam=w4;class PEe extends w4{constructor(e){super(),this.astParam=e}parameter(){return this.astParam.parameter()}typeDesc(){return{dataType:this.astParam.type||"error",expressionType:"scalar",evalSpace:"input"}}}Gu.AbstractParameter=PEe;class MEe extends w4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Gu.DefinedParameter=MEe;var ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.StructSpaceFieldBase=void 0;const jEe=Kr;class UEe extends jEe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}ax.StructSpaceFieldBase=UEe;var v1={};Object.defineProperty(v1,"__esModule",{value:!0}),v1.ColumnSpaceField=void 0;const qEe=Kr;class HEe extends qEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}v1.ColumnSpaceField=HEe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.IRViewField=void 0;const zEe=Jh;class QEe extends zEe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}H_.IRViewField=QEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const GEe=bu,WEe=ee,VEe=Gu,YEe=Kr,z_=ax,KEe=v1,XEe=H_;class mz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,GEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new yz(e):(0,WEe.isTurtleDef)(e)?new XEe.IRViewField(this,e):new KEe.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(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new VEe.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(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof YEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof z_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof z_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof z_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}Jr.StaticSpace=mz;class yz extends z_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new mz(this.sourceDef)}}Jr.StructSpaceField=yz,Object.defineProperty(S1,"__esModule",{value:!0}),S1.JoinSpaceField=void 0;const JEe=Jr;class ZEe extends JEe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}S1.JoinSpaceField=ZEe;var _1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.SpaceSeed=void 0;const e3e=Jr;function Ez(t){return t.type==="fieldSpace"}class t3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Ez(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Ez(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new e3e.StaticSpace(this.spaceSpec)),this.asFS)}}_1.SpaceSeed=t3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const n3e=Gu;class r3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new n3e.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:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}np.ParameterSpace=r3e,Object.defineProperty(q_,"__esModule",{value:!0}),q_.DynamicSpace=void 0;const i3e=F0,s3e=Xr,o3e=Kr,u3e=S1,a3e=Jh,Az=Gu,l3e=_1,c3e=Jr,f3e=ax,x3e=np;class d3e extends c3e.StaticSpace{constructor(e){const n=new l3e.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}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 Az.AbstractParameter(n)));return this}parameterSpace(){return new x3e.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,i3e.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 Az.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof f3e.StructSpaceFieldBase?r.push([a,l]):l instanceof a3e.ViewField?i.push([a,l]):l instanceof o3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof u3e.JoinSpaceField){const l=a.join.structDef(u);s3e.ErrorFactory.isErrorStructDef(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&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}q_.DynamicSpace=d3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const h3e=q_,p3e=D0;class L4 extends h3e.DynamicSpace{static filteredFrom(e,n,r){const i=new L4(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.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${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,p3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=L4;var w0={},Os={};Object.defineProperty(Os,"__esModule",{value:!0}),Os.DefinitionList=void 0;const g3e=Ve,Sz=Yr;class m3e extends g3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Sz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Sz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Os.DefinitionList=m3e,Object.defineProperty(w0,"__esModule",{value:!0}),w0.DeclareFields=void 0;const y3e=Os,E3e=Rn;class A3e extends y3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=E3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}w0.DeclareFields=A3e;var qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const S3e=ee;function vz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function v3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...vz(t),o,...vz(n)]}an.compose=v3e;function _3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=_3e;function C3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,S3e.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}an.nullsafeNot=C3e,Object.defineProperty(qo,"__esModule",{value:!0}),qo.Filter=qo.FilterElement=void 0;const _z=ee,b3e=an,Cz=Ve,I4=Rn;class T3e extends Cz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,b3e.compressExpr)(n.value),expressionType:n.expressionType}}}qo.FilterElement=T3e;let R3e=class extends Cz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=I4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?I4.LegalRefinementStage.Tail:I4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,_z.expressionIsAggregate)(i.expressionType),o=(0,_z.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};qo.Filter=R3e;var ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Joins=ts.ExpressionJoin=ts.KeyJoin=ts.Join=void 0;const O3e=ee,N3e=an,D3e=S1,F3e=Os,w3e=Ve,L3e=Yr,I3e=Rn,bz=Xr;class $4 extends w3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=L3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new D3e.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),bz.ErrorFactory.structDef)}}ts.Join=$4;class $3e extends $4{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),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,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(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}ts.KeyJoin=$3e;class B3e extends $4{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.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,O3e.isJoinOn)(i)&&(i.onExpression=(0,N3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),bz.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}ts.ExpressionJoin=B3e;class k3e extends F3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=I3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ts.Joins=k3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const P3e=Ve;class M3e extends P3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=M3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const j3e=Ve;class U3e extends j3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=U3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const q3e=Os;class H3e extends q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=H3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const z3e=Ve;class Q3e extends z3e.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)}}op.TimezoneStatement=Q3e;var L0={};Object.defineProperty(L0,"__esModule",{value:!0}),L0.ModelAnnotation=L0.ObjectAnnotation=void 0;const G3e=fl,W3e=Ve;class Tz extends W3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}L0.ObjectAnnotation=Tz;class V3e extends Tz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=G3e.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)}}L0.ModelAnnotation=V3e;var I0={},Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.RenameSpaceField=void 0;const Y3e=Kr;class K3e extends Y3e.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()}}Q_.RenameSpaceField=K3e,Object.defineProperty(I0,"__esModule",{value:!0}),I0.Renames=I0.RenameField=void 0;const X3e=Q_,Rz=Ve,J3e=Kr;class Z3e extends Rz.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.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof J3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new X3e.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}I0.RenameField=Z3e;class eAe extends Rz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}I0.Renames=eAe,Object.defineProperty(A1,"__esModule",{value:!0}),A1.RefinedSource=void 0;const tAe=ee,nAe=tp,rAe=w0,iAe=qo,sAe=ts,oAe=rp,uAe=ip,aAe=sp,lAe=Uo,cAe=op,fAe=L0,xAe=I0,dAe=np;class hAe extends lAe.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(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 fAe.ObjectAnnotation)continue;const g=m;m instanceof uAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof oAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof rAe.DeclareFields||m instanceof sAe.Joins||m instanceof aAe.Views||m instanceof xAe.Renames?o.push(...m.list):m instanceof iAe.Filter?u.push(m):m instanceof cAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new dAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=nAe.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.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,tAe.expressionIsCalculation)(y.expressionType)?g.log("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)}}A1.RefinedSource=hAe;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.SourceQueryElement=void 0;const pAe=Ve;class B4 extends pAe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof B4&&n.errored){e=!1;break}return e}}Wu.SourceQueryElement=B4;var G_={},lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.QuerySource=void 0;const gAe=Uo;class mAe extends gAe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}lx.QuerySource=mAe;var up={},C1={};Object.defineProperty(C1,"__esModule",{value:!0}),C1.QueryBase=void 0;const yAe=Yh,EAe=Ve;class AAe extends EAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,yAe.detectAndRemovePartialStages)(e.pipeline,this)}}}C1.QueryBase=AAe,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const SAe=ee,vAe=Uo,Oz=Jr,_Ae=C1;class CAe extends _Ae.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 vAe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,SAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Oz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Oz.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}}}up.QueryArrow=CAe,Object.defineProperty(G_,"__esModule",{value:!0}),G_.SQArrow=void 0;const bAe=Wu,TAe=lx,RAe=up;class OAe extends bAe.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("Could not get LHS of arrow operation");return}const n=new RAe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new TAe.QuerySource(e);return this.has({asSource:n}),n}}G_.SQArrow=OAe;var W_={},ap={},Ns={};Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.getStructFieldDef=Ns.getFinalStruct=Ns.opOutputStruct=void 0;const NAe=h0,DAe=Cf,k4=ee,Nz=Xr;function Dz(t,e,n){const r=Nz.ErrorFactory.isErrorStructDef(e)||(0,k4.structHasErrors)(e);(0,k4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,k4.segmentHasErrors)(n);if(!r&&!i)try{return DAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1298
|
+
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Qu)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 this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(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.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Qu;class sEe extends Qu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=sEe;class O4 extends Qu{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}}Ve.ModelEntryReference=O4;class oEe extends Qu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=oEe;function az(t){return t.execute!==void 0}Ve.isDocStatement=az;function uEe(t){return t instanceof E1||az(t)}Ve.isDocStatementOrDocStatementList=uEe;class lz extends Qu{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}}}Ve.ListOf=lz;class E1 extends lz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=uz.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,uz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof E1){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}}}Ve.DocStatementList=E1;const aEe="5a79a191-06bc-43cf-9b12-58741cd82970";function cz(t){const e=t.inherits?cz(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 lEe(t){const e=cz(t).join("");return(0,iEe.v5)(e,aEe)}class N4 extends Qu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new rEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new nEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new E1(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(i.type==="struct"||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=lEe(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(r.type==="struct"||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}`,declaredSQLBlock:!0};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.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,eEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=N4;var U_={},Jh={},Kr={},D0={};Object.defineProperty(D0,"__esModule",{value:!0}),D0.canMakeEntry=D0.SpaceEntry=void 0;class cEe{}D0.SpaceEntry=cEe;function fEe(t){return"makeEntry"in t}D0.canMakeEntry=fEe,Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.SpaceField=void 0;const xEe=ee,dEe=D0;class hEe extends dEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,xEe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Kr.SpaceField=hEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const pEe=Kr;class gEe extends pEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=gEe,Object.defineProperty(U_,"__esModule",{value:!0}),U_.ASTViewField=void 0;const mEe=Jh;class yEe extends mEe.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)}}U_.ASTViewField=yEe,Object.defineProperty(h1,"__esModule",{value:!0}),h1.ViewFieldDeclaration=void 0;const EEe=Ve,AEe=Yr,SEe=Yh,vEe=U_;class _Ee extends EEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=AEe.extendNoteMethod}makeEntry(e){const n=new vEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,SEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}h1.ViewFieldDeclaration=_Ee;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var fz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(fz||(Rn.QueryClass=fz={}));var xz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(xz||(Rn.LegalRefinementStage=xz={})),Object.defineProperty(d1,"__esModule",{value:!0}),d1.NestFieldDeclaration=void 0;const CEe=Yh,bEe=h1,dz=Rn;class TEe extends bEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=dz.LegalRefinementStage.Single,this.forceQueryClass=dz.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,CEe.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")}}d1.NestFieldDeclaration=TEe;var Zh={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.ErrorFactory=void 0;const hz={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class D4{static get structDef(){return{...hz}}static isErrorStructDef(e){return e.name.includes(hz.name)}static get query(){return{structRef:D4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Xr.ErrorFactory=D4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const REe=Xr,pz=Ve,OEe=Yr;class NEe extends pz.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=OEe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`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),REe.ErrorFactory.isErrorStructDef(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.log(`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.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Zh.DefineSource=NEe;class DEe extends pz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=DEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const gz=Ve,FEe=Yr;class wEe extends gz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=FEe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("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})}}ep.DefineQuery=wEe;class LEe extends gz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=LEe;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Source=void 0;const IEe=Ve;class $Ee extends IEe.MalloyElement{structRef(e){return{structRef:this.structDef(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.structDef(e),parameters:this.packParameters(n)}}}Uo.Source=$Ee;var A1={},tp={},q_={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.mergeFields=F0.nameFromDef=void 0;function F4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}F0.nameFromDef=F4;function BEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>F4(i))),r=t.filter(i=>!n.has(F4(i)));return r.push(...e),r}F0.mergeFields=BEe;var S1={},Jr={},Gu={};Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.DefinedParameter=Gu.AbstractParameter=Gu.SpaceParam=void 0;const kEe=D0;class w4 extends kEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Gu.SpaceParam=w4;class PEe extends w4{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}Gu.AbstractParameter=PEe;class MEe extends w4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Gu.DefinedParameter=MEe;var ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.StructSpaceFieldBase=void 0;const jEe=Kr;class UEe extends jEe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}ax.StructSpaceFieldBase=UEe;var v1={};Object.defineProperty(v1,"__esModule",{value:!0}),v1.ColumnSpaceField=void 0;const qEe=Kr;class HEe extends qEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}v1.ColumnSpaceField=HEe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.IRViewField=void 0;const zEe=Jh;class QEe extends zEe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}H_.IRViewField=QEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const GEe=bu,WEe=ee,VEe=Gu,YEe=Kr,z_=ax,KEe=v1,XEe=H_;class mz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,GEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new yz(e):(0,WEe.isTurtleDef)(e)?new XEe.IRViewField(this,e):new KEe.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(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new VEe.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(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof YEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof z_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof z_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof z_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}Jr.StaticSpace=mz;class yz extends z_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new mz(this.sourceDef)}}Jr.StructSpaceField=yz,Object.defineProperty(S1,"__esModule",{value:!0}),S1.JoinSpaceField=void 0;const JEe=Jr;class ZEe extends JEe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}S1.JoinSpaceField=ZEe;var _1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.SpaceSeed=void 0;const e3e=Jr;function Ez(t){return t.type==="fieldSpace"}class t3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Ez(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Ez(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new e3e.StaticSpace(this.spaceSpec)),this.asFS)}}_1.SpaceSeed=t3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const n3e=Gu;class r3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new n3e.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:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}np.ParameterSpace=r3e,Object.defineProperty(q_,"__esModule",{value:!0}),q_.DynamicSpace=void 0;const i3e=F0,s3e=Xr,o3e=Kr,u3e=S1,a3e=Jh,Az=Gu,l3e=_1,c3e=Jr,f3e=ax,x3e=np;class d3e extends c3e.StaticSpace{constructor(e){const n=new l3e.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}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 Az.AbstractParameter(n)));return this}parameterSpace(){return new x3e.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,i3e.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 Az.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof f3e.StructSpaceFieldBase?r.push([a,l]):l instanceof a3e.ViewField?i.push([a,l]):l instanceof o3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof u3e.JoinSpaceField){const l=a.join.structDef(u);s3e.ErrorFactory.isErrorStructDef(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&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}q_.DynamicSpace=d3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const h3e=q_,p3e=D0;class L4 extends h3e.DynamicSpace{static filteredFrom(e,n,r){const i=new L4(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.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${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,p3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=L4;var w0={},Os={};Object.defineProperty(Os,"__esModule",{value:!0}),Os.DefinitionList=void 0;const g3e=Ve,Sz=Yr;class m3e extends g3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Sz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Sz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Os.DefinitionList=m3e,Object.defineProperty(w0,"__esModule",{value:!0}),w0.DeclareFields=void 0;const y3e=Os,E3e=Rn;class A3e extends y3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=E3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}w0.DeclareFields=A3e;var qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const S3e=ee;function vz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function v3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...vz(t),o,...vz(n)]}an.compose=v3e;function _3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=_3e;function C3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,S3e.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}an.nullsafeNot=C3e,Object.defineProperty(qo,"__esModule",{value:!0}),qo.Filter=qo.FilterElement=void 0;const _z=ee,b3e=an,Cz=Ve,I4=Rn;class T3e extends Cz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,b3e.compressExpr)(n.value),expressionType:n.expressionType}}}qo.FilterElement=T3e;let R3e=class extends Cz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=I4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?I4.LegalRefinementStage.Tail:I4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,_z.expressionIsAggregate)(i.expressionType),o=(0,_z.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};qo.Filter=R3e;var ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Joins=ts.ExpressionJoin=ts.KeyJoin=ts.Join=void 0;const O3e=ee,N3e=an,D3e=S1,F3e=Os,w3e=Ve,L3e=Yr,I3e=Rn,bz=Xr;class $4 extends w3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=L3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new D3e.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),bz.ErrorFactory.structDef)}}ts.Join=$4;class $3e extends $4{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),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,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(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}ts.KeyJoin=$3e;class B3e extends $4{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.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,O3e.isJoinOn)(i)&&(i.onExpression=(0,N3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),bz.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}ts.ExpressionJoin=B3e;class k3e extends F3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=I3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ts.Joins=k3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const P3e=Ve;class M3e extends P3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=M3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const j3e=Ve;class U3e extends j3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=U3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const q3e=Os;class H3e extends q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=H3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const z3e=Ve;class Q3e extends z3e.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)}}op.TimezoneStatement=Q3e;var L0={};Object.defineProperty(L0,"__esModule",{value:!0}),L0.ModelAnnotation=L0.ObjectAnnotation=void 0;const G3e=fl,W3e=Ve;class Tz extends W3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}L0.ObjectAnnotation=Tz;class V3e extends Tz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=G3e.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)}}L0.ModelAnnotation=V3e;var I0={},Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.RenameSpaceField=void 0;const Y3e=Kr;class K3e extends Y3e.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()}}Q_.RenameSpaceField=K3e,Object.defineProperty(I0,"__esModule",{value:!0}),I0.Renames=I0.RenameField=void 0;const X3e=Q_,Rz=Ve,J3e=Kr;class Z3e extends Rz.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.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof J3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new X3e.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}I0.RenameField=Z3e;class eAe extends Rz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}I0.Renames=eAe,Object.defineProperty(A1,"__esModule",{value:!0}),A1.RefinedSource=void 0;const tAe=ee,nAe=tp,rAe=w0,iAe=qo,sAe=ts,oAe=rp,uAe=ip,aAe=sp,lAe=Uo,cAe=op,fAe=L0,xAe=I0,dAe=np;class hAe extends lAe.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(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 fAe.ObjectAnnotation)continue;const g=m;m instanceof uAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof oAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof rAe.DeclareFields||m instanceof sAe.Joins||m instanceof aAe.Views||m instanceof xAe.Renames?o.push(...m.list):m instanceof iAe.Filter?u.push(m):m instanceof cAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new dAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=nAe.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.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,tAe.expressionIsCalculation)(y.expressionType)?g.log("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)}}A1.RefinedSource=hAe;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.SourceQueryElement=void 0;const pAe=Ve;class B4 extends pAe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof B4&&n.errored){e=!1;break}return e}}Wu.SourceQueryElement=B4;var G_={},lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.QuerySource=void 0;const gAe=Uo;class mAe extends gAe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}lx.QuerySource=mAe;var up={},C1={};Object.defineProperty(C1,"__esModule",{value:!0}),C1.QueryBase=void 0;const yAe=Yh,EAe=Ve;class AAe extends EAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,yAe.detectAndRemovePartialStages)(e.pipeline,this)}}}C1.QueryBase=AAe,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const SAe=ee,vAe=Uo,Oz=Jr,_Ae=C1;class CAe extends _Ae.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 vAe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,SAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Oz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Oz.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}}}up.QueryArrow=CAe,Object.defineProperty(G_,"__esModule",{value:!0}),G_.SQArrow=void 0;const bAe=Wu,TAe=lx,RAe=up;class OAe extends bAe.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("Could not get LHS of arrow operation");return}const n=new RAe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new TAe.QuerySource(e);return this.has({asSource:n}),n}}G_.SQArrow=OAe;var W_={},ap={},Ns={};Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.getStructFieldDef=Ns.getFinalStruct=Ns.opOutputStruct=void 0;const NAe=h0,DAe=Cf,k4=ee,Nz=Xr;function Dz(t,e,n){const r=Nz.ErrorFactory.isErrorStructDef(e)||(0,k4.structHasErrors)(e);(0,k4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,k4.segmentHasErrors)(n);if(!r&&!i)try{return DAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1299
1299
|
QUERY: ${(0,NAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Nz.ErrorFactory.structDef,dialect:e.dialect}}Ns.opOutputStruct=Dz;function FAe(t,e,n){for(const r of n)e=Dz(t,e,r);return e}Ns.getFinalStruct=FAe;function wAe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ns.getStructFieldDef=wAe,Object.defineProperty(ap,"__esModule",{value:!0}),ap.QueryRefine=void 0;const LAe=Jr,IAe=Ns,$Ae=C1;class BAe extends $Ae.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 LAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,IAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}ap.QueryRefine=BAe;var b1={},lp={},On={};Object.defineProperty(On,"__esModule",{value:!0}),On.dateOffset=On.timestampOffset=On.timeResult=On.resolution=On.castDateToTimestamp=On.castTimestampToDate=On.castTo=On.timeOffset=void 0;const kAe=ee,Fz=an;function PAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}On.timeOffset=PAe;function MAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,kAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}On.castTo=MAe;function jAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}On.castTimestampToDate=jAe;function UAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}On.castDateToTimestamp=UAe;function qAe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}On.resolution=qAe;function HAe(t,e){return e?{...t,timeframe:e}:t}On.timeResult=HAe;function zAe(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,Fz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}On.timestampOffset=zAe;function QAe(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,Fz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}On.dateOffset=QAe;var cx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function GAe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=GAe;var dt={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.FT=void 0;const WAe=Tu;function fx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class wr{static in(e,n){return e?n.find(i=>wr.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=>wr.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,WAe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}ln.FT=wr,wr.nullT=fx("null"),wr.numberT=fx("number"),wr.stringT=fx("string"),wr.dateT=fx("date"),wr.timestampT=fx("timestamp"),wr.boolT=fx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=fx("boolean","aggregate");var dl={};Object.defineProperty(dl,"__esModule",{value:!0}),dl.isComparison=dl.Comparison=void 0;var P4;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(P4||(dl.Comparison=P4={}));function VAe(t){return Object.values(P4).includes(t)}dl.isComparison=VAe;var cp={};Object.defineProperty(cp,"__esModule",{value:!0}),cp.isEquality=cp.Equality=void 0;var M4;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(M4||(cp.Equality=M4={}));function YAe(t){return Object.values(M4).includes(t)}cp.isEquality=YAe;var fp={};Object.defineProperty(fp,"__esModule",{value:!0}),fp.isGranularResult=void 0;function KAe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}fp.isGranularResult=KAe,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Nn=ee,xp=hr,hl=an,xx=ln,V_=On,XAe=dl,JAe=cp,wz=fp,ZAe=Ve;class eSe extends Error{}class Lz extends ZAe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=xx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!xx.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${xx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Mz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Nn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Lz;class j4 extends Lz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[xx.FT.timestampT,xx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Nn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!xx.FT.typeEq(s,xx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,xp.errorFor)("illegal unit expression");let o;if((0,wz.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_.timeResult)({dataType:"timestamp",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Nn.isDateUnit)(this.timeframe)?(0,V_.timeResult)({dataType:"date",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,V_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,xp.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=j4;function Iz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function tSe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=tSe;function $z(t,e,n,r){const i=(0,Nn.isTimeFieldType)(e.dataType),s=(0,Nn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=Iz(e,"timestamp"),u=Iz(r,"timestamp");if(o&&u)return(0,hl.compose)(o,n,u)}else return(0,hl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function Bz(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function nSe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function rSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=T1("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=R1(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=$z(e,i,n,s)||(0,hl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,hl.compose)(i.value,"LIKE",s.value);else{const l=Bz(i,s);if(l===void 0)throw new eSe("Incompatible types for match('~') operator");a=l}a=(0,hl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=nSe(i,n,s);l?a=l:a=(0,hl.nullsafeNot)(Bz(i,s)||(0,hl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function iSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=T1("boolean",i,s);if(o)return o;const u=(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),a=R1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=$z(e,i,n,s)||(0,hl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function kz(t,...e){return e.includes(t)}function sSe(t,...e){for(const n of e)if(n.dataType!==t)return!1;return!0}function Pz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=T1("number",i,s);if(o)return o;const u=R1(e,i,r,s);if(u)return u;const a=(0,Nn.maxExpressionType)(i.expressionType,s.expressionType);return sSe("number",i,s)?{dataType:"number",expressionType:a,value:(0,hl.compose)(i.value,n,s.value),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)}:(e.log(`Non numeric('${i.dataType},${s.dataType}') value with '${n}'`),(0,xp.errorFor)("numbers required"))}function oSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=R1(e,i,r,s);if(o)return o;const u=(0,Nn.isTimeFieldType)(i.dataType),a=T1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,wz.isGranularResult)(i))l=new j4(r,i.timeframe);else if(i.dataType==="date")l=new j4(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,xp.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Pz(t,e,n,r)}function Mz(t,e,n,r){if((0,JAe.isEquality)(n))return rSe(t,e,n,r);if((0,XAe.isComparison)(n))return iSe(t,e,n,r);if(kz(n,"+","-"))return oSe(t,e,n,r);if(n==="*")return Pz(t,e,n,r);if(kz(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=R1(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=T1("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,xp.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,xp.errorFor)("applybinary bad operator")}dt.applyBinary=Mz;function T1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Nn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Nn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function R1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Nn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Nn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),{...i,dataType:r.dataType};if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(cx,"__esModule",{value:!0}),cx.ExprIdReference=void 0;const uSe=ee,aSe=hr,lSe=dt;class cSe extends lSe.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:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,uSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,aSe.errorFor)(n.error)}}cx.ExprIdReference=cSe,Object.defineProperty(lp,"__esModule",{value:!0}),lp.NamedSource=void 0;const U4=ee,fSe=Uo,xSe=Xr,dSe=On,q4=Ve,hSe=cx,pSe=np;class gSe extends fSe.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 q4.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof q4.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof q4.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,U4.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}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 hSe.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new pSe.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,U4.isCastType)(f.type)&&(p=(0,dSe.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||(0,U4.paramHasValue)(n[a])||this.refLog(`Argument not provided for required parameter \`${a}\``);return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=xSe.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}}lp.NamedSource=gSe;var O1={},Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.QueryHeadStruct=void 0;const mSe=ee,ySe=Uo,ESe=lp;class ASe extends ySe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,mSe.refIsStructDef)(this.fromRef))return this.fromRef;const n=new ESe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}Y_.QueryHeadStruct=ASe,Object.defineProperty(O1,"__esModule",{value:!0}),O1.QueryReference=void 0;const H4=Xr,SSe=Ve,vSe=Y_,_Se=ee,CSe=Ns;class bSe extends SSe.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:H4.ErrorFactory.structDef,outputStruct:H4.ErrorFactory.structDef,query:H4.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new vSe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,CSe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,_Se.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}O1.QueryReference=bSe,Object.defineProperty(b1,"__esModule",{value:!0}),b1.SQReference=void 0;const TSe=Wu,RSe=lx,OSe=lp,jz=O1;class NSe extends TSe.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 jz.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new jz.QueryReference(this.ref);this.asSource=new RSe.QuerySource(n)}else if(e.type==="struct")this.asSource=new OSe.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}b1.SQReference=NSe,Object.defineProperty(W_,"__esModule",{value:!0}),W_.SQRefine=void 0;const DSe=Wu,FSe=lx,wSe=ap,LSe=b1;class ISe extends DSe.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 LSe.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new wSe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new FSe.QuerySource(e);return this.has({queryAsSource:n}),n}}}W_.SQRefine=ISe;var K_={},N1={};Object.defineProperty(N1,"__esModule",{value:!0}),N1.QueryRaw=void 0;const $Se=ee,BSe=Ve;class kSe extends BSe.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.structDef(void 0)},r=(0,$Se.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}N1.QueryRaw=kSe;var D1={},X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.makeSQLBlock=void 0;const PSe=ee,MSe=Vt;function jSe(t,e){const n={name:`md5:/${e||"$default"}//${USe(t)}`,select:t};return e&&(n.connection=e),n}X_.makeSQLBlock=jSe;function USe(t){const e=t.map(n=>(0,PSe.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,MSe.generateHash)(e.join(";"))}Object.defineProperty(D1,"__esModule",{value:!0}),D1.SQLSource=void 0;const qSe=X_,HSe=Uo,J_=Xr;class zSe extends HSe.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,qSe.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}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.log(`${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.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("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)}structDef(){var e;if(!this.validateConnectionName())return J_.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),J_.ErrorFactory.structDef;const r=this.sqlBlock();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.log("Invalid SQL, "+s.join(`
|
|
1300
|
-
`)),J_.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.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),J_.ErrorFactory.structDef}}D1.SQLSource=zSe,Object.defineProperty(K_,"__esModule",{value:!0}),K_.SQSource=void 0;const QSe=Wu,GSe=N1,WSe=D1;class VSe extends QSe.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 WSe.SQLSource){const e=new GSe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}K_.SQSource=VSe;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.SQExtend=void 0;const YSe=A1,KSe=Wu;class XSe extends KSe.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 YSe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}Z_.SQExtend=XSe;var eC={},dp={},hp={};Object.defineProperty(hp,"__esModule",{value:!0}),hp.BinaryBoolean=void 0;const Uz=ee,JSe=hr,ZSe=ln,eve=dt,tve=an;class nve extends eve.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=[ZSe.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,Uz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Uz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,tve.compose)(n.value,this.op,r.value)}}return(0,JSe.errorFor)("logial required boolean")}}hp.BinaryBoolean=nve,Object.defineProperty(dp,"__esModule",{value:!0}),dp.ExprCompare=void 0;const Yt=ln,rve=hp,ive={"~":[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 sve extends rve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=ive[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}dp.ExprCompare=sve;var F1={},pp={};Object.defineProperty(pp,"__esModule",{value:!0}),pp.ExprTime=void 0;const ove=ee,uve=an,ave=dt;class z4 extends ave.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,ove.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,uve.compressExpr)([i])}return new z4(e,r,n.expressionType)}}pp.ExprTime=z4;var $0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.Range=void 0;const qz=ee,lve=hr,cve=dt,fve=an;class xve extends cve.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,qz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,qz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,fve.compose)(u.value,s,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.log("A Range is not a value"),(0,lve.errorFor)("a range is not a value")}}$0.Range=xve,Object.defineProperty(F1,"__esModule",{value:!0}),F1.ExprGranularTime=void 0;const Q4=ee,dve=hr,Hz=ln,zz=On,hve=dt,tC=pp,Qz=$0;class pve extends hve.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Hz.FT.timestampT,Hz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Q4.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Q4.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,dve.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=tC.ExprTime.fromValue("timestamp",n),u=new tC.ExprTime("timestamp",(0,zz.timeOffset)("timestamp",n.value,"+",(0,Q4.mkExpr)`1`,this.units),n.expressionType);return new Qz.Range(o,u)}const r=new tC.ExprTime("date",n.value,n.expressionType),i=(0,zz.timeOffset)("date",n.value,"+",["1"],this.units),s=new tC.ExprTime("date",i,n.expressionType);return new Qz.Range(r,s)}}F1.ExprGranularTime=pve,Object.defineProperty(eC,"__esModule",{value:!0}),eC.Apply=void 0;const gve=dl,mve=dp,yve=fp,Gz=F1;class Eve extends mve.ExprCompare{constructor(e,n){super(e,gve.Comparison.EqualTo,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,yve.isGranularResult)(r)&&(n=new Gz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Gz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}eC.Apply=Eve;var gp={};Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryNumeric=void 0;const Ave=ln,Sve=dt;class vve extends Sve.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=[Ave.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}gp.BinaryNumeric=vve;var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.Boolean=void 0;const _ve=dt,Cve=ln;let bve=class extends _ve.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Cve.FT.boolT,value:[this.value]}}};nC.Boolean=bve;var B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.FunctionOrdering=B0.FunctionOrderBy=void 0;const G4=ee,Wz=Ve,Tve=cx;class Rve 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.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,G4.expressionIsAggregate)(n.expressionType)||((0,G4.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Tve.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,G4.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}B0.FunctionOrderBy=Rve;class Ove 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))}}B0.FunctionOrdering=Ove;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.ExprAddSub=void 0;const Nve=gp;class Dve extends Nve.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}rC.ExprAddSub=Dve;var pl={},ht={},w1={};Object.defineProperty(w1,"__esModule",{value:!0}),w1.ReferenceField=void 0;const Vz=Kr;class Fve extends Vz.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.log(r.error);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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Vz.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,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"}}}w1.ReferenceField=Fve;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.typecheckGroupBy=Kn.typecheckAggregate=Kn.typecheckCalculate=Kn.typecheckDeclare=Kn.typecheckMeasure=Kn.typecheckDimension=Kn.typecheckIndex=Kn.typecheckProject=void 0;const Dn=Tu;function wve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckProject=wve;function Lve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}Kn.typecheckIndex=Lve;function Ive(t,e){if(!(0,Dn.expressionIsScalar)(t.expressionType))if((0,Dn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Kn.typecheckDimension=Ive;function $ve(t,e){if(!(0,Dn.expressionIsAggregate)(t.expressionType))if((0,Dn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Kn.typecheckMeasure=$ve;function Bve(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Dn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Kn.typecheckDeclare=Bve;function kve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckCalculate=kve;function Pve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckAggregate=Pve;function Mve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckGroupBy=Mve,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const jve=w1,Uve=Os,Yz=Ve,Kz=Yr,k0=Kn;class ns extends Yz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Kz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new jve.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}}ht.FieldReference=ns;class qve extends ns{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=qve;class Hve extends ns{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Hve;class zve extends ns{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=zve;class Qve extends ns{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Qve;class Gve extends ns{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,k0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=Gve;class W4 extends ns{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,k0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return W4.indexOutputName(this.path)}}ht.IndexFieldReference=W4;class Wve extends ns{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,k0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Wve;class Vve extends ns{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,k0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Vve;class Yve extends ns{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,k0.typecheckProject)(e,this)}}ht.ProjectFieldReference=Yve;class Kve extends ns{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,k0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Kve;class Xve extends ns{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,k0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Xve;class Jve extends ns{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,k0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Jve;class Zve extends ns{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Zve;class e_e extends Yz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Kz.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}.*`:"*"}}ht.WildcardFieldReference=e_e;class t_e extends Uve.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=t_e,Object.defineProperty(pl,"__esModule",{value:!0}),pl.ExprAggregateFunction=void 0;const Xz=ee,n_e=Vt,L1=hr,r_e=Jr,i_e=ax,s_e=ln,o_e=ht,u_e=dt,a_e=Kr,l_e=cx;class c_e extends u_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[s_e.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;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,Xz.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>f_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof i_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,L1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,L1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,L1.errorFor)("agggregate without expression");if((0,Xz.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,L1.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=Y4(a,c),p=K4(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=x_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,L1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...V4(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...V4(e,r))}return n}}pl.ExprAggregateFunction=c_e;function f_e(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 V4(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 r_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof a_e.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,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,n_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=V4(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function Y4(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 K4(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function x_e(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=Y4(i,e),o=K4(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=Y4(l,e),f=K4(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 o_e.FieldReference?`${n.refString}.${r}()`:n instanceof l_e.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 iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.ExprAlternationTree=void 0;const Jz=ee,d_e=hr,h_e=hp,p_e=an;class g_e extends h_e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Jz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Jz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,p_e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,d_e.errorFor)("no value from alternation tree")}}iC.ExprAlternationTree=g_e;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.ExprAsymmetric=void 0;const m_e=pl;class y_e extends m_e.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}`}}}}mp.ExprAsymmetric=y_e;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.ExprAvg=void 0;const E_e=mp;class A_e extends E_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}sC.ExprAvg=A_e;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.ExprCast=void 0;const S_e=On,v_e=dt,__e=an;class C_e extends v_e.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,__e.compressExpr)((0,S_e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}oC.ExprCast=C_e;var uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprCoalesce=void 0;const X4=Tu,Zz=ln,b_e=dt;class T_e extends b_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Zz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Zz.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,X4.maxExpressionType)(n.expressionType,r.expressionType),value:(0,X4.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,X4.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}uC.ExprCoalesce=T_e;var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprCount=void 0;const R_e=pl;class O_e extends R_e.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}aC.ExprCount=O_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprCountDistinct=void 0;const cC=ln,N_e=pl;class D_e extends N_e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[cC.FT.numberT,cC.FT.stringT,cC.FT.dateT,cC.FT.timestampT]}}lC.ExprCountDistinct=D_e;var fC={},P0={};Object.defineProperty(P0,"__esModule",{value:!0}),P0.Limit=void 0;const F_e=Ve,w_e=Rn;class L_e extends F_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=w_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}P0.Limit=L_e;var yp={};Object.defineProperty(yp,"__esModule",{value:!0}),yp.PartitionBy=void 0;const I_e=Ve;class $_e extends I_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}yp.PartitionBy=$_e;var I1={},M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.FieldName=void 0;const B_e=Ve;class k_e extends B_e.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])}}M0.FieldName=k_e,Object.defineProperty(I1,"__esModule",{value:!0}),I1.ExprFunc=void 0;const so=ee,Vu=hr,P_e=ax,M_e=dt,j_e=M0,eQ=an;class U_e extends M_e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const V of a)R=(0,so.maxExpressionType)(R,V.expressionType),I?M.push(","):I=V.dataType,M.push(...V.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,eQ.compressExpr)(M),evalSpace:(0,so.mergeEvalSpaces)(...a.map(V=>V.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Vu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Vu.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,so.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof P_e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Vu.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Vu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=q_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Vu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,so.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,so.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,so.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,Vu.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,so.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(H=>R?H.getAnalyticOrderBy(e):H.getAggregateOrderBy(e,I));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const H=M.getField(e);H.found===void 0?M.log(`${M.refString} is not defined`):(0,so.expressionIsAnalytic)(H.found.typeDesc().expressionType)||(0,so.expressionIsUngroupedAggregate)(H.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}S.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Vu.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=H_e(I),H=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(H.length>0){const Q=H.length===1?`'.' paths are not yet supported in sql interpolations, found ${H.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${H.join(", ")})`;return this.log(Q),(0,Vu.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const V=[];for(const Q of M)if(Q.type==="string")V.push(Q.value);else if(Q.name==="TABLE")V.push({type:"source-reference"});else{const ue=new j_e.FieldName(Q.name);this.has({name:ue});const he=e.lookup([ue]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,Vu.errorFor)("invalid interpolated field");he.found.refType==="parameter"?V.push({type:"parameter",path:[Q.name]}):V.push({type:"field",path:[Q.name]})}v=[{type:"sql-string",e:V}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Vu.errorFor)("invalid return type");const b=(0,so.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,so.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,eQ.compressExpr)(v),evalSpace:O}}}I1.ExprFunc=U_e;function q_e(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,so.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")||h.evalSpace==="output"&&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 H_e(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(fC,"__esModule",{value:!0}),fC.ExprProps=void 0;const z_e=ee,Q_e=hr,G_e=ln,W_e=B0,V_e=P0,Y_e=yp,K_e=dt,X_e=I1;class J_e extends K_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=G_e.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,z_e.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,Q_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof Y_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof V_e.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof W_e.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof X_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}fC.ExprProps=J_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprLogicalOp=void 0;const Z_e=hp,tQ=ln;class eCe extends Z_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[tQ.FT.boolT,tQ.FT.aggregateBoolT]}}xC.ExprLogicalOp=eCe;var dC={};Object.defineProperty(dC,"__esModule",{value:!0}),dC.ExprMax=void 0;const hC=ln,tCe=pl;class nCe extends tCe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[hC.FT.numberT,hC.FT.stringT,hC.FT.dateT,hC.FT.timestampT]}returns(e){return e.dataType}}dC.ExprMax=nCe;var pC={};Object.defineProperty(pC,"__esModule",{value:!0}),pC.ExprMin=void 0;const gC=ln,rCe=pl;class iCe extends rCe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[gC.FT.numberT,gC.FT.stringT,gC.FT.dateT,gC.FT.timestampT]}returns(e){return e.dataType}}pC.ExprMin=iCe;var mC={};Object.defineProperty(mC,"__esModule",{value:!0}),mC.ExprMinus=void 0;const sCe=hr,nQ=ln,oCe=dt;class uCe extends oCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[nQ.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return nQ.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,sCe.errorFor)("negate requires number")}}mC.ExprMinus=uCe;var yC={};Object.defineProperty(yC,"__esModule",{value:!0}),yC.ExprMulDiv=void 0;const aCe=gp;class lCe extends aCe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}yC.ExprMulDiv=lCe;var EC={},$1={};Object.defineProperty($1,"__esModule",{value:!0}),$1.Unary=void 0;const cCe=dt;class fCe extends cCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}$1.Unary=fCe,Object.defineProperty(EC,"__esModule",{value:!0}),EC.ExprNot=void 0;const rQ=ln,xCe=$1,dCe=an;class hCe extends xCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[rQ.FT.boolT,rQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,dCe.nullsafeNot)(n.value):["false"]}}}EC.ExprNot=hCe;var AC={};Object.defineProperty(AC,"__esModule",{value:!0}),AC.ExprNow=void 0;const pCe=dt;class gCe extends pCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}AC.ExprNow=gCe;var SC={};Object.defineProperty(SC,"__esModule",{value:!0}),SC.ExprNULL=void 0;const mCe=dt;class yCe extends mCe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}SC.ExprNULL=yCe;var vC={};Object.defineProperty(vC,"__esModule",{value:!0}),vC.ExprNumber=void 0;const ECe=ln,ACe=dt;class SCe extends ACe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...ECe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}vC.ExprNumber=SCe;var _C={};Object.defineProperty(_C,"__esModule",{value:!0}),_C.ExprParens=void 0;const vCe=dt;class _Ce extends vCe.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:["(",...n.value,")"]}}}_C.ExprParens=_Ce;var CC={};Object.defineProperty(CC,"__esModule",{value:!0}),CC.ExprRegEx=void 0;const CCe=dt;class bCe extends CCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}CC.ExprRegEx=bCe;var bC={};Object.defineProperty(bC,"__esModule",{value:!0}),bC.ExprString=void 0;const TCe=dt,RCe=ln;class OCe extends TCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...RCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}bC.ExprString=OCe;var TC={};Object.defineProperty(TC,"__esModule",{value:!0}),TC.ExprSum=void 0;const NCe=mp;class DCe extends NCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}TC.ExprSum=DCe;var RC={};Object.defineProperty(RC,"__esModule",{value:!0}),RC.ExprTimeExtract=void 0;const dx=ee,j0=hr,J4=dt,FCe=$0;class B1 extends J4.ExpressionDef{static extractor(e){const n=B1.pluralMap[e];if(n)return n;if((0,dx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=B1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,j0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof FCe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,dx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,dx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,j0.errorFor)("extract from error").value};if(!(0,dx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,j0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,dx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,j0.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,J4.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,J4.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,j0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,j0.errorFor)(`${n} civil extraction`)):(0,dx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,j0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,dx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,j0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}RC.ExprTimeExtract=B1,B1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var OC={},Ho={},NC={};Object.defineProperty(NC,"__esModule",{value:!0}),NC.QueryInputSpace=void 0;const wCe=ts,LCe=_1,ICe=tp;class $Ce extends ICe.RefinedSpace{constructor(e,n){const r=new LCe.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof wCe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}NC.QueryInputSpace=$Ce;var BCe=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]}),kCe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),PCe=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)&&BCe(e,t,n);return kCe(e,t),e};Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.ReduceFieldSpace=Ho.QuerySpace=Ho.QueryOperationSpace=void 0;const DC=PCe(ee),Z4=F0,MCe=M0,jCe=Kr,UCe=ht,qCe=tp,HCe=v1,zCe=Jr,QCe=NC;class iQ extends qCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new QCe.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(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 zCe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();DC.isAtomicFieldType(l.dataType)&&DC.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)}}Ho.QueryOperationSpace=iQ;class sQ extends iQ{addRefineFromFields(e){var n;if(DC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new MCe.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 HCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof UCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof jCe.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)&&!WCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(DC.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("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,Z4.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,Z4.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,Z4.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}}Ho.QuerySpace=sQ;class GCe extends sQ{constructor(){super(...arguments),this.segmentType="reduce"}}Ho.ReduceFieldSpace=GCe;function WCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(OC,"__esModule",{value:!0}),OC.ExprUngroup=void 0;const oQ=ee,eL=hr,VCe=Ho,YCe=ln,KCe=dt;class XCe extends KCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=YCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,oQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,eL.errorFor)("ungrouped scalar");if((0,oQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,eL.errorFor)("doubly-ungrouped aggregate");const r={type: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 VCe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${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.log(`${this.control}() incompatible type`),(0,eL.errorFor)("ungrouped type check")}}OC.ExprUngroup=XCe;var FC={};Object.defineProperty(FC,"__esModule",{value:!0}),FC.ForRange=void 0;const uQ=Tu,tL=hr,aQ=ln,wC=On,JCe=dt,LC=pp,lQ=$0;class ZCe extends JCe.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=[aQ.FT.timestampT,aQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,tL.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,uQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,uQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,tL.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,wC.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,wC.timeOffset)("date",i.value,"+",o.value,u),g=new LC.ExprTime("date",m);return new lQ.Range(p,g).apply(e,n,r)}const l=LC.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,wC.castDateToTimestamp)(f),c=new LC.ExprTime("timestamp",f,i.expressionType)}const x=(0,wC.timeOffset)("timestamp",f,"+",o.value,u),h=new LC.ExprTime("timestamp",x,i.expressionType);return new lQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,tL.errorFor)("range has no value")}}FC.ForRange=ZCe;var pr={},rs={};Object.defineProperty(rs,"__esModule",{value:!0});class hx extends Error{}class ebe extends hx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class tbe extends hx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class nbe extends hx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class k1 extends hx{}class cQ extends hx{constructor(e){super(`Invalid unit ${e}`)}}class oo extends hx{}class U0 extends hx{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Ds="long",nL={year:ke,month:ke,day:ke},fQ={year:ke,month:zo,day:ke},rbe={year:ke,month:zo,day:ke,weekday:zo},xQ={year:ke,month:Ds,day:ke},dQ={year:ke,month:Ds,day:ke,weekday:Ds},hQ={hour:ke,minute:ke},pQ={hour:ke,minute:ke,second:ke},gQ={hour:ke,minute:ke,second:ke,timeZoneName:zo},mQ={hour:ke,minute:ke,second:ke,timeZoneName:Ds},yQ={hour:ke,minute:ke,hourCycle:"h23"},EQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},AQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},SQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Ds},vQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},_Q={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},CQ={year:ke,month:zo,day:ke,hour:ke,minute:ke},bQ={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},ibe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},TQ={year:ke,month:Ds,day:ke,hour:ke,minute:ke,timeZoneName:zo},RQ={year:ke,month:Ds,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},OQ={year:ke,month:Ds,day:ke,weekday:Ds,hour:ke,minute:ke,timeZoneName:Ds},NQ={year:ke,month:Ds,day:ke,weekday:Ds,hour:ke,minute:ke,second:ke,timeZoneName:Ds};function St(t){return typeof t>"u"}function px(t){return typeof t=="number"}function IC(t){return typeof t=="number"&&t%1===0}function sbe(t){return typeof t=="string"}function obe(t){return Object.prototype.toString.call(t)==="[object Date]"}function DQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ube(t){return Array.isArray(t)?t:[t]}function FQ(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 abe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ep(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function gl(t,e,n){return IC(t)&&t>=e&&t<=n}function lbe(t,e){return t-e*Math.floor(t/e)}function Hn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function q0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function gx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function rL(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function iL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function P1(t){return t%4===0&&(t%100!==0||t%400===0)}function M1(t){return P1(t)?366:365}function $C(t,e){const n=lbe(e-1,12)+1,r=t+(e-n)/12;return n===2?P1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function sL(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 BC(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 oL(t){return t>99?t:t>60?1900+t:2e3+t}function wQ(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 kC(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 LQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new oo(`Invalid unit value ${t}`);return e}function PC(t,e){const n={};for(const r in t)if(Ep(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=LQ(i)}return n}function j1(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}${Hn(n,2)}:${Hn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Hn(n,2)}${Hn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function MC(t){return abe(t,["hour","minute","second","millisecond"])}const IQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,cbe=["January","February","March","April","May","June","July","August","September","October","November","December"],$Q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fbe=["J","F","M","A","M","J","J","A","S","O","N","D"];function BQ(t){switch(t){case"narrow":return[...fbe];case"short":return[...$Q];case"long":return[...cbe];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 kQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],PQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],xbe=["M","T","W","T","F","S","S"];function MQ(t){switch(t){case"narrow":return[...xbe];case"short":return[...PQ];case"long":return[...kQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const jQ=["AM","PM"],dbe=["Before Christ","Anno Domini"],hbe=["BC","AD"],pbe=["B","A"];function UQ(t){switch(t){case"narrow":return[...pbe];case"short":return[...hbe];case"long":return[...dbe];default:return null}}function gbe(t){return jQ[t.hour<12?0:1]}function mbe(t,e){return MQ(e)[t.weekday-1]}function ybe(t,e){return BQ(e)[t.month-1]}function Ebe(t,e){return UQ(e)[t.year<0?0:1]}function Abe(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 qQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const Sbe={D:nL,DD:fQ,DDD:xQ,DDDD:dQ,t:hQ,tt:pQ,ttt:gQ,tttt:mQ,T:yQ,TT:EQ,TTT:AQ,TTTT:SQ,f:vQ,ff:CQ,fff:TQ,ffff:OQ,F:_Q,FF:bQ,FFF:RQ,FFFF:NQ};class is{static create(e,n={}){return new is(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 Sbe[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 Hn(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?gbe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?ybe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?mbe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=is.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?Ebe(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 qQ(is.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=is.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 qQ(s,i(u))}}class Qo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ap=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}},uL=null;class jC extends Ap{static get instance(){return uL===null&&(uL=new jC),uL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return wQ(e,n,r)}formatOffset(e,n){return j1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let UC={};function vbe(t){return UC[t]||(UC[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"})),UC[t]}const _be={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Cbe(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 bbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=_be[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let qC={};class Yu extends Ap{static create(e){return qC[e]||(qC[e]=new Yu(e)),qC[e]}static resetCache(){qC={},UC={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=Yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return wQ(e,n,r,this.name)}formatOffset(e,n){return j1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=vbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?bbe(r,n):Cbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=sL({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 aL=null;class Zr extends Ap{static get utcInstance(){return aL===null&&(aL=new Zr(0)),aL}static instance(e){return e===0?Zr.utcInstance:new Zr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Zr(kC(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${j1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${j1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return j1(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 HQ extends Ap{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 H0(t,e){if(St(t)||t===null)return e;if(t instanceof Ap)return t;if(sbe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Zr.utcInstance:Zr.parseSpecifier(n)||Yu.create(t)}else return px(t)?Zr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new HQ(t)}let zQ=()=>Date.now(),QQ="system",GQ=null,WQ=null,VQ=null,YQ;class zn{static get now(){return zQ}static set now(e){zQ=e}static set defaultZone(e){QQ=e}static get defaultZone(){return H0(QQ,jC.instance)}static get defaultLocale(){return GQ}static set defaultLocale(e){GQ=e}static get defaultNumberingSystem(){return WQ}static set defaultNumberingSystem(e){WQ=e}static get defaultOutputCalendar(){return VQ}static set defaultOutputCalendar(e){VQ=e}static get throwOnInvalid(){return YQ}static set throwOnInvalid(e){YQ=e}static resetCaches(){dn.resetCache(),Yu.resetCache()}}let KQ={};function Tbe(t,e={}){const n=JSON.stringify([t,e]);let r=KQ[n];return r||(r=new Intl.ListFormat(t,e),KQ[n]=r),r}let lL={};function cL(t,e={}){const n=JSON.stringify([t,e]);let r=lL[n];return r||(r=new Intl.DateTimeFormat(t,e),lL[n]=r),r}let fL={};function Rbe(t,e={}){const n=JSON.stringify([t,e]);let r=fL[n];return r||(r=new Intl.NumberFormat(t,e),fL[n]=r),r}let xL={};function Obe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=xL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),xL[i]=s),s}let U1=null;function Nbe(){return U1||(U1=new Intl.DateTimeFormat().resolvedOptions().locale,U1)}function Dbe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=cL(t).resolvedOptions()}catch{n=cL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Fbe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function wbe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function Lbe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function HC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Ibe(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 $be{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=Rbe(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):iL(e,3);return Hn(n,this.padTo)}}}class Bbe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.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=cL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class kbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&DQ()&&(this.rtf=Obe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):Abe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class dn{static fromOpts(e){return dn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||zn.defaultLocale,o=s||(i?"en-US":Nbe()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){U1=null,lL={},fL={},xL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=Dbe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Fbe(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=Ibe(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:dn.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 HC(this,e,r,BQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=wbe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return HC(this,e,r,MQ,()=>{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]=Lbe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return HC(this,void 0,e,()=>jQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return HC(this,e,n,UQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.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 $be(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Bbe(e,this.intl,n)}relFormatter(e={}){return new kbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Tbe(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 Sp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vp(...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 _p(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 XQ(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=q0(e[n+i]);return[r,null,n+i]}}const JQ=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Pbe=`(?:${JQ.source}?(?:\\[(${IQ.source})\\])?)?`,dL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,ZQ=RegExp(`${dL.source}${Pbe}`),hL=RegExp(`(?:T${ZQ.source})?`),Mbe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,jbe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ube=/(\d{4})-?(\d{3})/,qbe=XQ("weekYear","weekNumber","weekDay"),Hbe=XQ("year","ordinal"),zbe=/(\d{4})-(\d\d)-(\d\d)/,eG=RegExp(`${dL.source} ?(?:${JQ.source}|(${IQ.source}))?`),Qbe=RegExp(`(?: ${eG.source})?`);function Cp(t,e,n){const r=t[e];return St(r)?n:q0(r)}function Gbe(t,e){return[{year:Cp(t,e),month:Cp(t,e+1,1),day:Cp(t,e+2,1)},null,e+3]}function bp(t,e){return[{hours:Cp(t,e,0),minutes:Cp(t,e+1,0),seconds:Cp(t,e+2,0),milliseconds:rL(t[e+3])},null,e+4]}function q1(t,e){const n=!t[e]&&!t[e+1],r=kC(t[e+1],t[e+2]),i=n?null:Zr.instance(r);return[{},i,e+3]}function H1(t,e){const n=t[e]?Yu.create(t[e]):null;return[{},n,e+1]}const Wbe=RegExp(`^T?${dL.source}$`),Vbe=/^-?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 Ybe(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(gx(n)),months:x(gx(r)),weeks:x(gx(i)),days:x(gx(s)),hours:x(gx(o)),minutes:x(gx(u)),seconds:x(gx(a),a==="-0"),milliseconds:x(rL(l),f)}]}const Kbe={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 pL(t,e,n,r,i,s,o){const u={year:e.length===2?oL(q0(e)):q0(e),month:$Q.indexOf(n)+1,day:q0(r),hour:q0(i),minute:q0(s)};return o&&(u.second=q0(o)),t&&(u.weekday=t.length>3?kQ.indexOf(t)+1:PQ.indexOf(t)+1),u}const Xbe=/^(?:(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 Jbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=pL(e,i,r,n,s,o,u);let h;return a?h=Kbe[a]:l?h=0:h=kC(c,f),[x,new Zr(h)]}function Zbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const eTe=/^(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$/,tTe=/^(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$/,nTe=/^(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 tG(t){const[,e,n,r,i,s,o,u]=t;return[pL(e,i,r,n,s,o,u),Zr.utcInstance]}function rTe(t){const[,e,n,r,i,s,o,u]=t;return[pL(e,u,n,r,i,s,o),Zr.utcInstance]}const iTe=Sp(Mbe,hL),sTe=Sp(jbe,hL),oTe=Sp(Ube,hL),uTe=Sp(ZQ),nG=vp(Gbe,bp,q1,H1),aTe=vp(qbe,bp,q1,H1),lTe=vp(Hbe,bp,q1,H1),cTe=vp(bp,q1,H1);function fTe(t){return _p(t,[iTe,nG],[sTe,aTe],[oTe,lTe],[uTe,cTe])}function xTe(t){return _p(Zbe(t),[Xbe,Jbe])}function dTe(t){return _p(t,[eTe,tG],[tTe,tG],[nTe,rTe])}function hTe(t){return _p(t,[Vbe,Ybe])}const pTe=vp(bp);function gTe(t){return _p(t,[Wbe,pTe])}const mTe=Sp(zbe,Qbe),yTe=Sp(eG),ETe=vp(bp,q1,H1);function ATe(t){return _p(t,[mTe,nG],[yTe,ETe])}const STe="Invalid Duration",rG={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}},vTe={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},...rG},uo=146097/400,Tp=146097/4800,_Te={years:{quarters:4,months:12,weeks:uo/7,days:uo,hours:uo*24,minutes:uo*24*60,seconds:uo*24*60*60,milliseconds:uo*24*60*60*1e3},quarters:{months:3,weeks:uo/28,days:uo/4,hours:uo*24/4,minutes:uo*24*60/4,seconds:uo*24*60*60/4,milliseconds:uo*24*60*60*1e3/4},months:{weeks:Tp/7,days:Tp,hours:Tp*24,minutes:Tp*24*60,seconds:Tp*24*60*60,milliseconds:Tp*24*60*60*1e3},...rG},mx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],CTe=mx.slice(0).reverse();function yx(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 vt(r)}function bTe(t){return t<0?Math.floor(t):Math.ceil(t)}function iG(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?bTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function TTe(t,e){CTe.reduce((n,r)=>St(e[r])?n:(n&&iG(t,e,n,e,r),r),null)}class vt{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||dn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?_Te:vTe,this.isLuxonDuration=!0}static fromMillis(e,n){return vt.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new oo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new vt({values:PC(e,vt.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(px(e))return vt.fromMillis(e);if(vt.isDuration(e))return e;if(typeof e=="object")return vt.fromObject(e);throw new oo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=hTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=gTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new oo("need to specify a reason the Duration is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new nbe(r);return new vt({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 cQ(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?is.create(this.loc,r).formatDurationFromString(this,e):STe}toHuman(e={}){const n=mx.map(r=>{const i=this.values[r];return St(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+=iL(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=vt.fromDurationLike(e),r={};for(const i of mx)(Ep(n.values,i)||Ep(this.values,i))&&(r[i]=n.get(i)+this.get(i));return yx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=vt.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]=LQ(e(this.values[r],r));return yx(this,{values:n},!0)}get(e){return this[vt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...PC(e,vt.normalizeUnit)};return yx(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),yx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return TTe(this.matrix,e),yx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>vt.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of mx)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;px(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)mx.indexOf(l)>mx.indexOf(o)&&iG(this.matrix,i,l,n,o)}else px(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 yx(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 yx(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 mx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const z1="Invalid Interval";function RTe(t,e){return!t||!t.isValid?hn.invalid("missing or invalid start"):!e||!e.isValid?hn.invalid("missing or invalid end"):e<t?hn.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 hn{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 oo("need to specify a reason the Interval is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new tbe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=V1(e),i=V1(n),s=RTe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=vt.fromDurationLike(n),i=V1(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=vt.fromDurationLike(n),i=V1(e);return hn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return hn.fromDateTimes(s,u);if(o){const l=vt.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=vt.fromISO(r,n);if(l.isValid)return hn.before(u,l)}}return hn.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?hn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(V1).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(hn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=vt.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(hn.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:hn.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 hn.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(hn.fromDateTimes(n,a.time)),n=null);return hn.merge(i)}difference(...e){return hn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:z1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:z1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:z1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:z1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:z1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):vt.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let Q1=class{static hasDST(e=zn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Yu.isValidZone(e)}static normalizeZone(e){return H0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return dn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return dn.create(n,null,"gregory").eras(e)}static features(){return{relative:DQ()}}};function sG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(vt.fromMillis(r).as("days"))}function OTe(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=sG(u,a);return(l-l%7)/7}],["days",sG]],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 NTe(t,e,n,r){let[i,s,o,u]=OTe(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=vt.fromObject(s,r);return l.length>0?vt.fromMillis(a,r).shiftTo(...l).plus(c):c}const gL={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oG={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]},DTe=gL.hanidec.replace(/[\[|\]]/g,"").split("");function FTe(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(gL.hanidec)!==-1)e+=DTe.indexOf(t[n]);else for(const i in oG){const[s,o]=oG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Go({numberingSystem:t},e=""){return new RegExp(`${gL[t||"latn"]}${e}`)}const wTe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(FTe(n))}}const uG="[ ]",aG=new RegExp(uG,"g");function LTe(t){return t.replace(/\./g,"\\.?").replace(aG,uG)}function lG(t){return t.replace(/\./g,"").replace(aG," ").toLowerCase()}function Wo(t,e){return t===null?null:{regex:RegExp(t.map(LTe).join("|")),deser:([n])=>t.findIndex(r=>lG(n)===lG(r))+e}}function cG(t,e){return{regex:t,deser:([,n,r])=>kC(n,r),groups:e}}function mL(t){return{regex:t,deser:([e])=>e}}function ITe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function $Te(t,e){const n=Go(e),r=Go(e,"{2}"),i=Go(e,"{3}"),s=Go(e,"{4}"),o=Go(e,"{6}"),u=Go(e,"{1,2}"),a=Go(e,"{1,3}"),l=Go(e,"{1,6}"),c=Go(e,"{1,9}"),f=Go(e,"{2,4}"),x=Go(e,"{4,6}"),h=g=>({regex:RegExp(ITe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Wo(e.eras("short",!1),0);case"GG":return Wo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,oL);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Wo(e.months("short",!0,!1),1);case"MMMM":return Wo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Wo(e.months("short",!1,!1),1);case"LLLL":return Wo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return mL(c);case"uu":return mL(u);case"uuu":return Lt(n);case"a":return Wo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,oL);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Wo(e.weekdays("short",!1,!1),1);case"EEEE":return Wo(e.weekdays("long",!1,!1),1);case"ccc":return Wo(e.weekdays("short",!0,!1),1);case"cccc":return Wo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return cG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return cG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return mL(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:wTe};return m.token=t,m}const BTe={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 kTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=BTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function PTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function MTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ep(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 jTe(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 St(t.z)||(n=Yu.create(t.z)),St(t.Z)||(n||(n=new Zr(t.Z)),r=t.Z),St(t.q)||(t.M=(t.q-1)*3+1),St(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),St(t.u)||(t.S=rL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let yL=null;function UTe(){return yL||(yL=st.fromMillis(1555555555555)),yL}function qTe(t,e){if(t.literal)return t;const n=is.macroTokenToFormatOpts(t.val);if(!n)return t;const s=is.create(e,n).formatDateTimeParts(UTe()).map(o=>kTe(o,e,n));return s.includes(void 0)?t:s}function HTe(t,e){return Array.prototype.concat(...t.map(n=>qTe(n,e)))}function fG(t,e,n){const r=HTe(is.parseFormat(n),t),i=r.map(o=>$Te(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=PTe(i),a=RegExp(o,"i"),[l,c]=MTe(e,a,u),[f,x,h]=c?jTe(c):[null,null,void 0];if(Ep(c,"a")&&Ep(c,"H"))throw new k1("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 zTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=fG(t,e,n);return[r,i,s,o]}const xG=[0,31,59,90,120,151,181,212,243,273,304,334],dG=[0,31,60,91,121,152,182,213,244,274,305,335];function ao(t,e){return new Qo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function hG(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 pG(t,e,n){return n+(P1(t)?dG:xG)[e-1]}function gG(t,e){const n=P1(t)?dG:xG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function EL(t){const{year:e,month:n,day:r}=t,i=pG(e,n,r),s=hG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=BC(u)):o>BC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...MC(t)}}function mG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=hG(e,1,4),s=M1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=M1(u)):o>s?(u=e+1,o-=M1(e)):u=e;const{month:a,day:l}=gG(u,o);return{year:u,month:a,day:l,...MC(t)}}function AL(t){const{year:e,month:n,day:r}=t,i=pG(e,n,r);return{year:e,ordinal:i,...MC(t)}}function yG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=gG(e,n);return{year:e,month:r,day:i,...MC(t)}}function QTe(t){const e=IC(t.weekYear),n=gl(t.weekNumber,1,BC(t.weekYear)),r=gl(t.weekday,1,7);return e?n?r?!1:ao("weekday",t.weekday):ao("week",t.week):ao("weekYear",t.weekYear)}function GTe(t){const e=IC(t.year),n=gl(t.ordinal,1,M1(t.year));return e?n?!1:ao("ordinal",t.ordinal):ao("year",t.year)}function EG(t){const e=IC(t.year),n=gl(t.month,1,12),r=gl(t.day,1,$C(t.year,t.month));return e?n?r?!1:ao("day",t.day):ao("month",t.month):ao("year",t.year)}function AG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=gl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=gl(n,0,59),u=gl(r,0,59),a=gl(i,0,999);return s?o?u?a?!1:ao("millisecond",i):ao("second",r):ao("minute",n):ao("hour",e)}const SL="Invalid DateTime",SG=864e13;function zC(t){return new Qo("unsupported zone",`the zone "${t.name}" is not supported`)}function vL(t){return t.weekData===null&&(t.weekData=EL(t.c)),t.weekData}function G1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function vG(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 _G(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 QC(t,e,n){return vG(sL(t),e,n)}function CG(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,$C(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=vt.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=sL(s);let[a,l]=vG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function W1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Qo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function GC(t,e,n=!0){return t.isValid?is.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function _L(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Hn(t.c.year,n?6:4),e?(r+="-",r+=Hn(t.c.month),r+="-",r+=Hn(t.c.day)):(r+=Hn(t.c.month),r+=Hn(t.c.day)),r}function bG(t,e,n,r,i,s){let o=Hn(t.c.hour);return e?(o+=":",o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=Hn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Hn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Hn(Math.trunc(-t.o/60)),o+=":",o+=Hn(Math.trunc(-t.o%60))):(o+="+",o+=Hn(Math.trunc(t.o/60)),o+=":",o+=Hn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const TG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},WTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},VTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},RG=["year","month","day","hour","minute","second","millisecond"],YTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],KTe=["year","ordinal","hour","minute","second","millisecond"];function OG(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 cQ(t);return e}function NG(t,e){const n=H0(e.zone,zn.defaultZone),r=dn.fromObject(e),i=zn.now();let s,o;if(St(t.year))s=i;else{for(const l of RG)St(t[l])&&(t[l]=TG[l]);const u=EG(t)||AG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=QC(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function DG(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=iL(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 FG(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 st{constructor(e){const n=e.zone||zn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Qo("invalid input"):null)||(n.isValid?null:zC(n));this.ts=St(e.ts)?zn.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=_G(this.ts,u),r=Number.isNaN(i.year)?new Qo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||dn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=FG(arguments),[r,i,s,o,u,a,l]=n;return NG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=FG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Zr.utcInstance,NG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=obe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=H0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(zC(i))}static fromMillis(e,n={}){if(px(e))return e<-SG||e>SG?st.invalid("Timestamp out of range"):new st({ts:e,zone:H0(n.zone,zn.defaultZone),loc:dn.fromObject(n)});throw new oo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(px(e))return new st({ts:e*1e3,zone:H0(n.zone,zn.defaultZone),loc:dn.fromObject(n)});throw new oo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=H0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(zC(r));const i=zn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=PC(e,OG),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=dn.fromObject(n);if((c||u)&&f)throw new k1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new k1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=_G(i,s);h?(p=YTe,m=WTe,g=EL(g)):u?(p=KTe,m=VTe,g=AL(g)):(p=RG,m=TG);let y=!1;for(const b of p){const O=o[b];St(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?QTe(o):u?GTe(o):EG(o),A=E||AG(o);if(A)return st.invalid(A);const S=h?mG(o):u?yG(o):o,[v,_]=QC(S,s,r),C=new st({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.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]=fTe(e);return W1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=xTe(e);return W1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=dTe(e);return W1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new oo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=zTe(o,e,n);return c?st.invalid(c):W1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=ATe(e);return W1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new oo("need to specify a reason the DateTime is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new ebe(r);return new st({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?vL(this).weekYear:NaN}get weekNumber(){return this.isValid?vL(this).weekNumber:NaN}get weekday(){return this.isValid?vL(this).weekday:NaN}get ordinal(){return this.isValid?AL(this.c).ordinal:NaN}get monthShort(){return this.isValid?Q1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Q1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Q1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Q1.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 P1(this.year)}get daysInMonth(){return $C(this.year,this.month)}get daysInYear(){return this.isValid?M1(this.year):NaN}get weeksInWeekYear(){return this.isValid?BC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=is.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Zr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=H0(e,zn.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]=QC(o,s,e)}return G1(this,{ts:i,zone:e})}else return st.invalid(zC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return G1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=PC(e,OG),r=!St(n.weekYear)||!St(n.weekNumber)||!St(n.weekday),i=!St(n.ordinal),s=!St(n.year),o=!St(n.month)||!St(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new k1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new k1("Can't mix ordinal dates with month/day");let l;r?l=mG({...EL(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min($C(l.year,l.month),l.day))):l=yG({...AL(this.c),...n});const[c,f]=QC(l,this.o,this.zone);return G1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e);return G1(this,CG(this,n))}minus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e).negate();return G1(this,CG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=vt.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?is.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):SL}toLocaleString(e=nL,n={}){return this.isValid?is.create(this.loc.clone(n),e).formatDateTime(this):SL}toLocaleParts(e={}){return this.isValid?is.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=_L(this,o);return u+="T",u+=bG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?_L(this,e==="extended"):null}toISOWeekDate(){return GC(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":"")+bG(this,o==="extended",n,e,r,s):null}toRFC2822(){return GC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return GC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?_L(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")),GC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():SL}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 vt.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ube(n).map(vt.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=NTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?hn.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||st.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),DG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?DG(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new oo("min requires all arguments be DateTimes");return FQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new oo("max requires all arguments be DateTimes");return FQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return fG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return nL}static get DATE_MED(){return fQ}static get DATE_MED_WITH_WEEKDAY(){return rbe}static get DATE_FULL(){return xQ}static get DATE_HUGE(){return dQ}static get TIME_SIMPLE(){return hQ}static get TIME_WITH_SECONDS(){return pQ}static get TIME_WITH_SHORT_OFFSET(){return gQ}static get TIME_WITH_LONG_OFFSET(){return mQ}static get TIME_24_SIMPLE(){return yQ}static get TIME_24_WITH_SECONDS(){return EQ}static get TIME_24_WITH_SHORT_OFFSET(){return AQ}static get TIME_24_WITH_LONG_OFFSET(){return SQ}static get DATETIME_SHORT(){return vQ}static get DATETIME_SHORT_WITH_SECONDS(){return _Q}static get DATETIME_MED(){return CQ}static get DATETIME_MED_WITH_SECONDS(){return bQ}static get DATETIME_MED_WITH_WEEKDAY(){return ibe}static get DATETIME_FULL(){return TQ}static get DATETIME_FULL_WITH_SECONDS(){return RQ}static get DATETIME_HUGE(){return OQ}static get DATETIME_HUGE_WITH_SECONDS(){return NQ}}function V1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&px(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new oo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const XTe="2.5.2";rs.DateTime=st,rs.Duration=vt,rs.FixedOffsetZone=Zr,rs.IANAZone=Yu,rs.Info=Q1,rs.Interval=hn,rs.InvalidZone=HQ,rs.Settings=zn,rs.SystemZone=jC,rs.VERSION=XTe,rs.Zone=Ap,Object.defineProperty(pr,"__esModule",{value:!0}),pr.LiteralYear=pr.LiteralQuarter=pr.LiteralMonth=pr.LiteralWeek=pr.LiteralDay=pr.LiteralHour=pr.LiteralTimestamp=pr.TimeFormatError=void 0;const z0=rs,JTe=ee,ZTe=$0,wG=pp,CL=dt;class eRe extends Error{}pr.TimeFormatError=eRe;function Ex(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 LG="yyyy",IG=`${LG}-LL`,lo=`${IG}-dd`,$G=`${lo} HH`,BG=`${$G}:mm`,bL=`${BG}:ss`;class kG extends CL.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 TL extends kG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Ex(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=z0.DateTime.fromFormat(e,bL);if(s.isValid)return new TL(r,n);if(s=z0.DateTime.fromFormat(e,BG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(bL);return new RL(r,n,"timestamp",o)}}}pr.LiteralTimestamp=TL;class RL extends kG{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,CL.getMorphicValue)(i,"timestamp"),a=(0,CL.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,JTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new ZTe.Range(new wG.ExprTime(u,i.value),new wG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class OL extends RL{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,$G);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(bL),new OL(n,r)}}pr.LiteralHour=OL;class Y1 extends RL{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 NL extends Y1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,lo);if(i.isValid)return r=i.plus({day:1}).toFormat(lo),new NL(n,r)}}pr.LiteralDay=NL;class DL extends Y1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=n.text.slice(0,10),s=z0.DateTime.fromFormat(i,lo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(lo),r=u.toFormat(lo),new DL(n,r)}}}pr.LiteralWeek=DL;class FL extends Y1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,IG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(lo),r=s.toFormat(lo),new FL(n,r)}}}pr.LiteralMonth=FL;class wL extends Y1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Ex(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=z0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(lo),r=u.toFormat(lo),new wL(n,r)}}}pr.LiteralQuarter=wL;class LL extends Y1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,LG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(lo),r=s.toFormat(lo),new LL(n,r)}}}pr.LiteralYear=LL;var WC={};Object.defineProperty(WC,"__esModule",{value:!0}),WC.PartialCompare=void 0;const tRe=hr,nRe=dt;class rRe extends nRe.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.log("Partial comparison does not have a value"),(0,tRe.errorFor)("no value for partial compare")}}WC.PartialCompare=rRe;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.PickWhen=Rp.Pick=void 0;const Ku=ee,Q0=hr,Vo=ln,iRe=dt,sRe=Ve,PG=an;function VC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class oRe extends iRe.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=["CASE"];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,Ku.maxExpressionType)(o,(0,Ku.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Ku.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vo.FT.typeEq(s,x,!0)){const h=Vo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick when type")}s=VC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=VC(s,l),!Vo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Vo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Ku.maxExpressionType)(o,l.expressionType),evalSpace:(0,Ku.mergeEvalSpaces)(u,l.evalSpace),value:(0,PG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,Q0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,Q0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,Q0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Vo.FT.typeEq(a.when,Vo.FT.boolT))return this.log(`when expression must be boolean, not '${Vo.FT.inspect(a.when)}`),(0,Q0.errorFor)("pick when type");if(r&&!Vo.FT.typeEq(r,a.pick,!0)){const l=Vo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick value type")}r=VC(r,a.pick),s=(0,Ku.maxExpressionType)(s,(0,Ku.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Ku.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Ku.maxExpressionType)(s,u.expressionType),o=(0,Ku.mergeEvalSpaces)(o,u.evalSpace),r=VC(r,u),Vo.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,PG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Vo.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick value type mismatch"))}}Rp.Pick=oRe;class uRe extends sRe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Rp.PickWhen=uRe;var YC={};Object.defineProperty(YC,"__esModule",{value:!0}),YC.Timeframe=void 0;const aRe=ee,lRe=Ve;class cRe extends lRe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,aRe.isTimestampUnit)(n)?n:"second"}}YC.Timeframe=cRe;var KC={};Object.defineProperty(KC,"__esModule",{value:!0}),KC.TopBy=void 0;const fRe=ee,MG=dt,xRe=Ve,dRe=an;class hRe extends xRe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof MG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof MG.ExpressionDef){const n=this.by.getExpression(e);return(0,fRe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,dRe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}KC.TopBy=hRe;var G0={};Object.defineProperty(G0,"__esModule",{value:!0}),G0.ImportStatement=G0.ImportSelect=G0.ImportSourceName=void 0;const IL=Ve;class pRe extends IL.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}G0.ImportSourceName=pRe;class gRe extends IL.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}G0.ImportSelect=gRe;class mRe extends IL.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI 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.log("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.log(`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.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}G0.ImportStatement=mRe;var K1={};Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExtendBlock=void 0;const yRe=Ve,ERe=Rn;class ARe extends yRe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=ERe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}K1.ExtendBlock=ARe;var XC={};Object.defineProperty(XC,"__esModule",{value:!0}),XC.Argument=void 0;const SRe=Ve;class vRe extends SRe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}XC.Argument=vRe;var JC={};Object.defineProperty(JC,"__esModule",{value:!0}),JC.HasParameter=void 0;const jG=ee,_Re=Ve;class CRe extends _Re.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,jG.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!=="error"&&this.default.log(`Default value for parameter does not match declared type \`${this.type}\``),!(0,jG.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`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.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}JC.HasParameter=CRe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.AnonymousQuery=void 0;const bRe=Ve,TRe=Yr;class RRe extends bRe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=TRe.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("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)}}ZC.AnonymousQuery=RRe;var W0={};Object.defineProperty(W0,"__esModule",{value:!0}),W0.View=void 0;const ORe=Ve;let NRe=class extends ORe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};W0.View=NRe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.ViewArrow=void 0;const DRe=Jr,FRe=W0;class wRe extends FRe.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 DRe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}eb.ViewArrow=wRe;var tb={},X1={};Object.defineProperty(X1,"__esModule",{value:!0}),X1.refine=void 0;const $L=Tu,BL=F0;function LRe(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,$L.isRawSegment)(s))t.log("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.log(`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.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("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,$L.isQuerySegment)(o)&&(0,$L.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,BL.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,BL.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(BL.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}X1.refine=LRe,Object.defineProperty(tb,"__esModule",{value:!0}),tb.ViewRefine=void 0;const IRe=Xr,$Re=Ns,BRe=X1,kRe=W0;class PRe extends kRe.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,$Re.getFinalStruct)(this.refinement,e.structDef(),i):IRe.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,BRe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}tb.ViewRefine=PRe;var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.ReferenceView=void 0;const UG=ee,qG=Xr,MRe=Ns,jRe=Kr,URe=X1,qRe=W0;class HRe extends qRe.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:qG.ErrorFactory.structDef,outputStruct:qG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof jRe.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,UG.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,UG.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,MRe.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("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.log(`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,URe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}nb.ReferenceView=HRe;var rb={},J1={},ib={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.Index=void 0;const zRe=Ve,QRe=Rn;let GRe=class extends zRe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=QRe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Z1.Index=GRe;var ey={};Object.defineProperty(ey,"__esModule",{value:!0}),ey.SampleProperty=void 0;const WRe=Ve,HG=Rn;class VRe extends WRe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=HG.LegalRefinementStage.Tail,this.forceQueryClass=HG.QueryClass.Index}sampling(){return this.sample}}ey.SampleProperty=VRe;var sb={};Object.defineProperty(sb,"__esModule",{value:!0}),sb.IndexFieldSpace=void 0;const zG=ee,kL=ht,YRe=Kr,KRe=Ho,XRe=w1,JRe=Jr;class ZRe extends KRe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof kL.FieldReference?super.pushFields(n):n instanceof kL.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof YRe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof XRe.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):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 JRe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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=kL.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,zG.isAtomicFieldType)(c.dataType)&&(0,zG.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)}}sb.IndexFieldSpace=ZRe,Object.defineProperty(ib,"__esModule",{value:!0}),ib.IndexBuilder=void 0;const PL=ee,eOe=Xr,tOe=qo,nOe=Z1,rOe=P0,iOe=ey,sOe=sb;class oOe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new sOe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof tOe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof rOe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof nOe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof iOe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,PL.isIndexSegment)(e)&&!(0,PL.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),eOe.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,PL.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}ib.IndexBuilder=oOe;var ob={},ty={};Object.defineProperty(ty,"__esModule",{value:!0}),ty.GroupBy=void 0;const uOe=Os,QG=Rn;class aOe extends uOe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=QG.LegalRefinementStage.Single,this.forceQueryClass=QG.QueryClass.Grouping}}ty.GroupBy=aOe;var ub={};Object.defineProperty(ub,"__esModule",{value:!0}),ub.ProjectFieldSpace=void 0;const ML=ee,lOe=Ho;class cOe extends lOe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,ML.expressionIsAggregate)(e.expressionType)?!1:(0,ML.expressionInvolvesAggregate)(e.expressionType)&&(0,ML.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}ub.ProjectFieldSpace=cOe;var V0={},Ax={};Object.defineProperty(Ax,"__esModule",{value:!0}),Ax.Ordering=Ax.OrderBy=void 0;const fOe=ee,GG=M0,WG=Ve,xOe=Rn;class dOe extends WG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof GG.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 GG.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,fOe.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Ax.OrderBy=dOe;class hOe extends WG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=xOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Ax.Ordering=hOe;var ny={};Object.defineProperty(ny,"__esModule",{value:!0}),ny.Top=void 0;const VG=ee,pOe=an,gOe=M0,mOe=Ve,yOe=Rn;let EOe=class extends mOe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=yOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof gOe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,VG.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`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,VG.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,pOe.compressExpr)(r.value)}}}};ny.Top=EOe,Object.defineProperty(V0,"__esModule",{value:!0}),V0.ReduceBuilder=V0.QuerySegmentBuilder=void 0;const YG=ee,AOe=Xr,SOe=qo,vOe=P0,KG=Ax,XG=ny,_Oe=Ho,COe=Os;class JG{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof COe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof SOe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof XG.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof vOe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof KG.Ordering&&(this.order?e.log("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 XG.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof KG.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])}}V0.QuerySegmentBuilder=JG;class bOe extends JG{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new _Oe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,YG.isReduceSegment)(e)||(0,YG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),AOe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}V0.ReduceBuilder=bOe,Object.defineProperty(ob,"__esModule",{value:!0}),ob.ProjectBuilder=void 0;const ZG=ee,TOe=Xr,ROe=ty,OOe=ub,NOe=V0;class DOe extends NOe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new OOe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof ROe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,ZG.isProjectSegment)(e)||(0,ZG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),TOe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}ob.ProjectBuilder=DOe;var ab={};Object.defineProperty(ab,"__esModule",{value:!0}),ab.PartialBuilder=void 0;const FOe=Tu,wOe=V0;class LOe extends wOe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,FOe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}ab.PartialBuilder=LOe,Object.defineProperty(J1,"__esModule",{value:!0}),J1.QOpDesc=void 0;const IOe=ib,$Oe=ob,BOe=V0,kOe=Ve,POe=Ns,MOe=Jr,Sx=Rn,jOe=ab;class UOe extends kOe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Sx.QueryClass.Grouping:this.refineThis.type==="project"?n=Sx.QueryClass.Project:this.refineThis.type==="index"&&(n=Sx.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`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.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=Sx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Sx.QueryClass.Grouping:return new BOe.ReduceBuilder(e,this.refineThis,n,r);case Sx.QueryClass.Project:return new $Oe.ProjectBuilder(e,this.refineThis,n,r);case Sx.QueryClass.Index:return new IOe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new jOe.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 MOe.StaticSpace((0,POe.opOutputStruct)(this,e.structDef(),i))}}}J1.QOpDesc=UOe,Object.defineProperty(rb,"__esModule",{value:!0}),rb.QOpDescView=void 0;const qOe=ee,HOe=Jr,eW=J1,zOe=Ns,jL=Rn,QOe=W0;class GOe extends QOe.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,qOe.isRawSegment)(i)?(this.log("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 eW.QOpDesc([]),o=new eW.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case jL.LegalRefinementStage.Head:s.push(u);break;case jL.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case jL.LegalRefinementStage.Tail:o.push(u);break;default:u.log("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,zOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new HOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}rb.QOpDescView=GOe;var pn={};Object.defineProperty(pn,"__esModule",{value:!0}),pn.FieldDefinitionValue=pn.DefSpace=pn.DimensionFieldDeclaration=pn.MeasureFieldDeclaration=pn.DeclareFieldDeclaration=pn.ProjectFieldDeclaration=pn.GroupByFieldDeclaration=pn.AggregateFieldDeclaration=pn.CalculateFieldDeclaration=pn.AtomicFieldDeclaration=void 0;const WOe=ee,VOe=an,YOe=ln,KOe=fp,XOe=Ve,vx=Kn,JOe=Yr,ZOe=Kr;class Y0 extends XOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=JOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new UL(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,VOe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,WOe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,KOe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof UL&&e.foundCircle)&&r.dataType!=="error"){const a=YOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new tW(e,this))}}pn.AtomicFieldDeclaration=Y0;class eNe extends Y0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=eNe;class tNe extends Y0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=tNe;class nNe extends Y0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=nNe;class rNe extends Y0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=rNe;class iNe extends Y0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=iNe;class sNe extends Y0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=sNe;class oNe extends Y0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=oNe;class UL{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:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}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")}}pn.DefSpace=UL;class tW extends ZOe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}pn.FieldDefinitionValue=tW;var lb={};Object.defineProperty(lb,"__esModule",{value:!0}),lb.Aggregate=void 0;const uNe=Os,nW=Rn;let aNe=class extends uNe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=nW.LegalRefinementStage.Single,this.forceQueryClass=nW.QueryClass.Grouping}};lb.Aggregate=aNe;var cb={};Object.defineProperty(cb,"__esModule",{value:!0}),cb.Calculate=void 0;const lNe=Os,cNe=Rn;class fNe extends lNe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cNe.LegalRefinementStage.Single}}cb.Calculate=fNe;var ry={};Object.defineProperty(ry,"__esModule",{value:!0}),ry.Dimensions=void 0;const xNe=w0;class dNe extends xNe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}ry.Dimensions=dNe;var iy={};Object.defineProperty(iy,"__esModule",{value:!0}),iy.Measures=void 0;const hNe=w0;class pNe extends hNe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}iy.Measures=pNe;var fb={};Object.defineProperty(fb,"__esModule",{value:!0}),fb.Nests=void 0;const gNe=Os,rW=Rn;class mNe extends gNe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=rW.LegalRefinementStage.Single,this.forceQueryClass=rW.QueryClass.Grouping}}fb.Nests=mNe;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.ProjectStatement=void 0;const yNe=Os,iW=Rn;class ENe extends yNe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=iW.QueryClass.Project,this.queryRefinementStage=iW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}xb.ProjectStatement=ENe;var K0={},ml={};Object.defineProperty(ml,"__esModule",{value:!0}),ml.findReferences=ml.deprecatedParseTableURI=ml.constructTableKey=void 0;const ANe=ox,qL=Bn;function HL(t){const e=(0,qL.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,qL.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class SNe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=sW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,qL.getId)(e.connectionId()),r=HL(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=HL(e.tableURI()),{connectionName:r,tablePath:i}=oW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=HL(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function sW(t,e){return t===void 0?e:`${t}:${e}`}ml.constructTableKey=sW;function oW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}ml.deprecatedParseTableURI=oW;function vNe(t,e,n){const r=new SNe(t,e),i=r;return ANe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}ml.findReferences=vNe,Object.defineProperty(K0,"__esModule",{value:!0}),K0.TableFunctionSource=K0.TableMethodSource=K0.TableSource=void 0;const uW=ml,_Ne=Uo,aW=Xr;class zL extends _Ne.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return aW.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,uW.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.log(l),aW.ErrorFactory.structDef}}K0.TableSource=zL;class CNe extends zL{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.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}K0.TableMethodSource=CNe;class bNe extends zL{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,uW.deprecatedParseTableURI)(this.tableURI)}}K0.TableFunctionSource=bNe;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.SQLString=void 0;const TNe=Ve,lW=Wu;class RNe extends TNe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(ONe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof lW.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("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("Cannot expand into a query")}return e}}db.SQLString=RNe;function ONe(t){return t instanceof lW.SourceQueryElement}var hb={};Object.defineProperty(hb,"__esModule",{value:!0}),hb.SourceDesc=void 0;const NNe=Ve;class DNe extends NNe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}hb.SourceDesc=DNe;var pb={};Object.defineProperty(pb,"__esModule",{value:!0}),pb.isSourceProperty=void 0;const FNe=qo,wNe=ts,LNe=w0,INe=rp,$Ne=I0,BNe=ip,kNe=sp,PNe=op,MNe=L0;function jNe(t){return t instanceof FNe.Filter||t instanceof wNe.Joins||t instanceof LNe.DeclareFields||t instanceof INe.FieldListEdit||t instanceof $Ne.Renames||t instanceof BNe.PrimaryKey||t instanceof MNe.ObjectAnnotation||t instanceof kNe.Views||t instanceof PNe.TimezoneStatement}pb.isSourceProperty=jNe;var gb={};Object.defineProperty(gb,"__esModule",{value:!0}),gb.isFieldCollectionMember=void 0;const UNe=pn,cW=ht;function qNe(t){return t instanceof cW.FieldReference||t instanceof cW.WildcardFieldReference||t instanceof UNe.AtomicFieldDeclaration}gb.isFieldCollectionMember=qNe;var mb={};Object.defineProperty(mb,"__esModule",{value:!0}),mb.isQueryElement=void 0;const HNe=up,zNe=ap,QNe=O1,GNe=N1;function WNe(t){return t instanceof HNe.QueryArrow||t instanceof zNe.QueryRefine||t instanceof QNe.QueryReference||t instanceof GNe.QueryRaw}mb.isQueryElement=WNe;var fW={};Object.defineProperty(fW,"__esModule",{value:!0});var yb={};Object.defineProperty(yb,"__esModule",{value:!0}),yb.isQueryProperty=void 0;function VNe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}yb.isQueryProperty=VNe;var Eb={};Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.isQueryExtendProperty=void 0;const YNe=ry,KNe=ts,XNe=iy;function JNe(t){return t instanceof YNe.Dimensions||t instanceof XNe.Measures||t instanceof KNe.Joins}Eb.isQueryExtendProperty=JNe;var Ab={};Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.isFieldPropStatement=void 0;const ZNe=B0,eDe=qo,tDe=P0,nDe=yp;function rDe(t){return t instanceof eDe.Filter||t instanceof tDe.Limit||t instanceof nDe.PartitionBy||t instanceof ZNe.FunctionOrdering}Ab.isFieldPropStatement=rDe,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(d1,t),n(Zh,t),n(ep,t),n(Uo,t),n(A1,t),n(Wu,t),n(G_,t),n(W_,t),n(K_,t),n(b1,t),n(Z_,t),n(rp,t),n(ip,t),n(I0,t),n(sp,t),n(op,t),n(eC,t),n(gp,t),n(nC,t),n(B0,t),n(rC,t),n(pl,t),n(iC,t),n(mp,t),n(sC,t),n(oC,t),n(uC,t),n(dp,t),n(aC,t),n(lC,t),n(fC,t),n(I1,t),n(F1,t),n(cx,t),n(xC,t),n(dC,t),n(pC,t),n(mC,t),n(yC,t),n(EC,t),n(AC,t),n(SC,t),n(vC,t),n(_C,t),n(CC,t),n(bC,t),n(TC,t),n(RC,t),n(OC,t),n(FC,t),n(pr,t),n(WC,t),n(yp,t),n(Rp,t),n($0,t),n(YC,t),n(KC,t),n($1,t),n(an,t),n(G0,t),n(K1,t),n(XC,t),n(JC,t),n(ZC,t),n(ap,t),n(up,t),n(W0,t),n(eb,t),n(tb,t),n(nb,t),n(rb,t),n(pn,t),n(ht,t),n(lb,t),n(cb,t),n(w0,t),n(ry,t),n(K1,t),n(qo,t),n(ty,t),n(Z1,t),n(ts,t),n(h1,t),n(P0,t),n(iy,t),n(d1,t),n(fb,t),n(Ax,t),n(xb,t),n(J1,t),n(ey,t),n(ny,t),n(lp,t),n(lx,t),n(D1,t),n(K0,t),n(db,t),n(L0,t),n(dl,t),n(hb,t),n(pb,t),n(dt,t),n(gb,t),n(M0,t),n(Ve,t),n(mb,t),n(fW,t),n(yb,t),n(Eb,t),n(Ab,t)}(F_);var Sb={},Op={};Object.defineProperty(Op,"__esModule",{value:!0}),Op.ConstantExpression=Op.ConstantFieldSpace=void 0;const iDe=dl,xW=dt,sDe=dp,oDe=an;class dW{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:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}Op.ConstantFieldSpace=dW;class uDe extends xW.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class aDe extends xW.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 dW),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new sDe.ExprCompare(new uDe(e),iDe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,oDe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Op.ConstantExpression=aDe;var lDe=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]}),cDe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fDe=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)&&lDe(e,t,n);return cDe(e,t),e};Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.MalloyToAST=void 0;const hW=LS,xDe=p1,te=fDe(F_),dDe=xr,hDe=F_,kn=Bn,QL=ee,pDe=fl,gDe=Op;class pW extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class GL extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const mDe=["##! m4warnings=error"];class yDe extends xDe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of mDe){const s=pDe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof GL||this.astError(s,`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 te.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new te.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 dDe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 `{? condition }` is deprecated; use `{ where: condition } instead"),new te.Filter([n])}getPlainString(e){const n=(0,kn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,kn.getStringParts)(i))s instanceof hW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,kn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,kn.getStringParts)(e))r instanceof hW.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,"Time data parse error"),r=new te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new gDe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,kn.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 te.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new te.TableFunctionSource(n),e);return this.m4advisory(e,"`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.getPlainString(e.tablePath());return this.astAt(new te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new te.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,QL.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"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 n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new te.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,kn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`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 te.RenameField((0,kn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new te.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.ExprSum(void 0,o);else return this.contextError(l,`\`${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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,kn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,kn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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:` 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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,kn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new te.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,kn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new te.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new te.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,te.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,"Expression illegal inside path.count()"),new te.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,QL.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.getPlainString({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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,kn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,QL.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,kn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,kn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new GL(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new GL(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new pW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof hDe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new pW}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}Sb.MalloyToAST=yDe;var vb={};Object.defineProperty(vb,"__esModule",{value:!0}),vb.MessageLog=void 0;class EDe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}vb.MessageLog=EDe;var _b={};Object.defineProperty(_b,"__esModule",{value:!0}),_b.Zone=void 0;class ADe{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})}}_b.Zone=ADe;var Cb={};Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.walkForDocumentSymbols=void 0;const SDe=ox,vDe=Bn;class _De{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.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,vDe.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 CDe(t,e,n){const r=new _De(t,e,[],[]),i=r;return SDe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Cb.walkForDocumentSymbols=CDe;var bb={};Object.defineProperty(bb,"__esModule",{value:!0}),bb.walkForDocumentCompletions=void 0;const bDe=ox,TDe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],RDe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],ODe=["source","explore","query","sql"];class NDe{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 TDe)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 RDe)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 ODe)this.completions.push({type:"model_property",text:`${r}: `})}}}function DDe(t,e,n){const r=new NDe(t,[],n),i=r;return bDe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}bb.walkForDocumentCompletions=DDe;var Tb={};Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.walkForDocumentHelpContext=void 0;const FDe=C4;class wDe extends FDe.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 LDe(t,e){return new wDe(e).visit(t)}Tb.walkForDocumentHelpContext=LDe;var Rb={},sy={};Object.defineProperty(sy,"__esModule",{value:!0}),sy.locationContainsPosition=void 0;function IDe(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)}sy.locationContainsPosition=IDe,Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.ReferenceList=void 0;const $De=sy;class BDe{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,$De.locationContainsPosition)(r.location,e))return r}}Rb.ReferenceList=BDe;var Ob={};Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.isNeedResponse=void 0;function kDe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}Ob.isNeedResponse=kDe;var Nb={};Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.walkForModelAnnotation=void 0;const PDe=ox;class MDe{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 jDe(t,e,n){const r=new MDe(t,e,n),i=r;return PDe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}Nb.walkForModelAnnotation=jDe;var UDe=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]}),qDe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),HDe=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)&&UDe(e,t,n);return qDe(e,t),e};Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.MalloyParserErrorHandler=Ou.MalloyTranslator=Ou.MalloyChildTranslator=Ou.MalloyTranslation=void 0;const gW=LS,zDe=Gv,QDe=w,mW=HDe(F_),GDe=Sb,WDe=vb,VDe=ml,WL=_b,YDe=Cb,KDe=bb,XDe=Tb,JDe=Rb,Db=Ob,ZDe=sy,yW=fl,eFe=Nb;class tFe extends zDe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class nFe{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.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}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.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1300
|
+
`)),J_.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.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),J_.ErrorFactory.structDef}}D1.SQLSource=zSe,Object.defineProperty(K_,"__esModule",{value:!0}),K_.SQSource=void 0;const QSe=Wu,GSe=N1,WSe=D1;class VSe extends QSe.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 WSe.SQLSource){const e=new GSe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}K_.SQSource=VSe;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.SQExtend=void 0;const YSe=A1,KSe=Wu;class XSe extends KSe.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 YSe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}Z_.SQExtend=XSe;var eC={},dp={},hp={};Object.defineProperty(hp,"__esModule",{value:!0}),hp.BinaryBoolean=void 0;const Uz=ee,JSe=hr,ZSe=ln,eve=dt,tve=an;class nve extends eve.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=[ZSe.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,Uz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Uz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,tve.compose)(n.value,this.op,r.value)}}return(0,JSe.errorFor)("logial required boolean")}}hp.BinaryBoolean=nve,Object.defineProperty(dp,"__esModule",{value:!0}),dp.ExprCompare=void 0;const Yt=ln,rve=hp,ive={"~":[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 sve extends rve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=ive[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}dp.ExprCompare=sve;var F1={},pp={};Object.defineProperty(pp,"__esModule",{value:!0}),pp.ExprTime=void 0;const ove=ee,uve=an,ave=dt;class z4 extends ave.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,ove.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,uve.compressExpr)([i])}return new z4(e,r,n.expressionType)}}pp.ExprTime=z4;var $0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.Range=void 0;const qz=ee,lve=hr,cve=dt,fve=an;class xve extends cve.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,qz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,qz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,fve.compose)(u.value,s,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.log("A Range is not a value"),(0,lve.errorFor)("a range is not a value")}}$0.Range=xve,Object.defineProperty(F1,"__esModule",{value:!0}),F1.ExprGranularTime=void 0;const Q4=ee,dve=hr,Hz=ln,zz=On,hve=dt,tC=pp,Qz=$0;class pve extends hve.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Hz.FT.timestampT,Hz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Q4.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Q4.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,dve.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=tC.ExprTime.fromValue("timestamp",n),u=new tC.ExprTime("timestamp",(0,zz.timeOffset)("timestamp",n.value,"+",(0,Q4.mkExpr)`1`,this.units),n.expressionType);return new Qz.Range(o,u)}const r=new tC.ExprTime("date",n.value,n.expressionType),i=(0,zz.timeOffset)("date",n.value,"+",["1"],this.units),s=new tC.ExprTime("date",i,n.expressionType);return new Qz.Range(r,s)}}F1.ExprGranularTime=pve,Object.defineProperty(eC,"__esModule",{value:!0}),eC.Apply=void 0;const gve=dl,mve=dp,yve=fp,Gz=F1;class Eve extends mve.ExprCompare{constructor(e,n){super(e,gve.Comparison.EqualTo,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,yve.isGranularResult)(r)&&(n=new Gz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Gz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}eC.Apply=Eve;var gp={};Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryNumeric=void 0;const Ave=ln,Sve=dt;class vve extends Sve.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=[Ave.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}gp.BinaryNumeric=vve;var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.Boolean=void 0;const _ve=dt,Cve=ln;let bve=class extends _ve.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Cve.FT.boolT,value:[this.value]}}};nC.Boolean=bve;var B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.FunctionOrdering=B0.FunctionOrderBy=void 0;const G4=ee,Wz=Ve,Tve=cx;class Rve 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.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,G4.expressionIsAggregate)(n.expressionType)||((0,G4.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Tve.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,G4.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}B0.FunctionOrderBy=Rve;class Ove 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))}}B0.FunctionOrdering=Ove;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.ExprAddSub=void 0;const Nve=gp;class Dve extends Nve.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}rC.ExprAddSub=Dve;var pl={},ht={},w1={};Object.defineProperty(w1,"__esModule",{value:!0}),w1.ReferenceField=void 0;const Vz=Kr;class Fve extends Vz.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.log(r.error);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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Vz.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,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"}}}w1.ReferenceField=Fve;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.typecheckGroupBy=Kn.typecheckAggregate=Kn.typecheckCalculate=Kn.typecheckDeclare=Kn.typecheckMeasure=Kn.typecheckDimension=Kn.typecheckIndex=Kn.typecheckProject=void 0;const Dn=Tu;function wve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckProject=wve;function Lve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}Kn.typecheckIndex=Lve;function Ive(t,e){if(!(0,Dn.expressionIsScalar)(t.expressionType))if((0,Dn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Kn.typecheckDimension=Ive;function $ve(t,e){if(!(0,Dn.expressionIsAggregate)(t.expressionType))if((0,Dn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Kn.typecheckMeasure=$ve;function Bve(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Dn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Kn.typecheckDeclare=Bve;function kve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckCalculate=kve;function Pve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckAggregate=Pve;function Mve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Kn.typecheckGroupBy=Mve,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const jve=w1,Uve=Os,Yz=Ve,Kz=Yr,k0=Kn;class ns extends Yz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Kz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new jve.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}}ht.FieldReference=ns;class qve extends ns{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=qve;class Hve extends ns{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Hve;class zve extends ns{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=zve;class Qve extends ns{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Qve;class Gve extends ns{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,k0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=Gve;class W4 extends ns{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,k0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return W4.indexOutputName(this.path)}}ht.IndexFieldReference=W4;class Wve extends ns{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,k0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Wve;class Vve extends ns{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,k0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Vve;class Yve extends ns{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,k0.typecheckProject)(e,this)}}ht.ProjectFieldReference=Yve;class Kve extends ns{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,k0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Kve;class Xve extends ns{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,k0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Xve;class Jve extends ns{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,k0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Jve;class Zve extends ns{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Zve;class e_e extends Yz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Kz.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}.*`:"*"}}ht.WildcardFieldReference=e_e;class t_e extends Uve.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=t_e,Object.defineProperty(pl,"__esModule",{value:!0}),pl.ExprAggregateFunction=void 0;const Xz=ee,n_e=Vt,L1=hr,r_e=Jr,i_e=ax,s_e=ln,o_e=ht,u_e=dt,a_e=Kr,l_e=cx;class c_e extends u_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[s_e.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;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,Xz.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>f_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof i_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,L1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,L1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,L1.errorFor)("agggregate without expression");if((0,Xz.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,L1.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=Y4(a,c),p=K4(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=x_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,L1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...V4(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...V4(e,r))}return n}}pl.ExprAggregateFunction=c_e;function f_e(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 V4(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 r_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof a_e.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,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,n_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=V4(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function Y4(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 K4(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function x_e(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=Y4(i,e),o=K4(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=Y4(l,e),f=K4(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 o_e.FieldReference?`${n.refString}.${r}()`:n instanceof l_e.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 iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.ExprAlternationTree=void 0;const Jz=ee,d_e=hr,h_e=hp,p_e=an;class g_e extends h_e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Jz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Jz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,p_e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,d_e.errorFor)("no value from alternation tree")}}iC.ExprAlternationTree=g_e;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.ExprAsymmetric=void 0;const m_e=pl;class y_e extends m_e.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}`}}}}mp.ExprAsymmetric=y_e;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.ExprAvg=void 0;const E_e=mp;class A_e extends E_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}sC.ExprAvg=A_e;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.ExprCast=void 0;const S_e=On,v_e=dt,__e=an;class C_e extends v_e.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,__e.compressExpr)((0,S_e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}oC.ExprCast=C_e;var uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprCoalesce=void 0;const X4=Tu,Zz=ln,b_e=dt;class T_e extends b_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Zz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Zz.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,X4.maxExpressionType)(n.expressionType,r.expressionType),value:(0,X4.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,X4.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}uC.ExprCoalesce=T_e;var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprCount=void 0;const R_e=pl;class O_e extends R_e.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}aC.ExprCount=O_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprCountDistinct=void 0;const cC=ln,N_e=pl;class D_e extends N_e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[cC.FT.numberT,cC.FT.stringT,cC.FT.dateT,cC.FT.timestampT]}}lC.ExprCountDistinct=D_e;var fC={},P0={};Object.defineProperty(P0,"__esModule",{value:!0}),P0.Limit=void 0;const F_e=Ve,w_e=Rn;class L_e extends F_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=w_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}P0.Limit=L_e;var yp={};Object.defineProperty(yp,"__esModule",{value:!0}),yp.PartitionBy=void 0;const I_e=Ve;class $_e extends I_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}yp.PartitionBy=$_e;var I1={},M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.FieldName=void 0;const B_e=Ve;class k_e extends B_e.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])}}M0.FieldName=k_e,Object.defineProperty(I1,"__esModule",{value:!0}),I1.ExprFunc=void 0;const so=ee,Vu=hr,P_e=ax,M_e=dt,j_e=M0,eQ=an;class U_e extends M_e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const V of a)R=(0,so.maxExpressionType)(R,V.expressionType),I?M.push(","):I=V.dataType,M.push(...V.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,eQ.compressExpr)(M),evalSpace:(0,so.mergeEvalSpaces)(...a.map(V=>V.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Vu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Vu.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,so.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof P_e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Vu.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Vu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=q_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Vu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,so.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,so.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,so.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,Vu.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,so.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(H=>R?H.getAnalyticOrderBy(e):H.getAggregateOrderBy(e,I));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const H=M.getField(e);H.found===void 0?M.log(`${M.refString} is not defined`):(0,so.expressionIsAnalytic)(H.found.typeDesc().expressionType)||(0,so.expressionIsUngroupedAggregate)(H.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}S.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Vu.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=H_e(I),H=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(H.length>0){const Q=H.length===1?`'.' paths are not yet supported in sql interpolations, found ${H.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${H.join(", ")})`;return this.log(Q),(0,Vu.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const V=[];for(const Q of M)if(Q.type==="string")V.push(Q.value);else if(Q.name==="TABLE")V.push({type:"source-reference"});else{const ue=new j_e.FieldName(Q.name);this.has({name:ue});const he=e.lookup([ue]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,Vu.errorFor)("invalid interpolated field");he.found.refType==="parameter"?V.push({type:"parameter",path:[Q.name]}):V.push({type:"field",path:[Q.name]})}v=[{type:"sql-string",e:V}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Vu.errorFor)("invalid return type");const b=(0,so.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,so.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,eQ.compressExpr)(v),evalSpace:O}}}I1.ExprFunc=U_e;function q_e(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,so.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")||h.evalSpace==="output"&&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 H_e(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(fC,"__esModule",{value:!0}),fC.ExprProps=void 0;const z_e=ee,Q_e=hr,G_e=ln,W_e=B0,V_e=P0,Y_e=yp,K_e=dt,X_e=I1;class J_e extends K_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=G_e.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,z_e.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,Q_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof Y_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof V_e.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof W_e.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof X_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}fC.ExprProps=J_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprLogicalOp=void 0;const Z_e=hp,tQ=ln;class eCe extends Z_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[tQ.FT.boolT,tQ.FT.aggregateBoolT]}}xC.ExprLogicalOp=eCe;var dC={};Object.defineProperty(dC,"__esModule",{value:!0}),dC.ExprMax=void 0;const hC=ln,tCe=pl;class nCe extends tCe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[hC.FT.numberT,hC.FT.stringT,hC.FT.dateT,hC.FT.timestampT]}returns(e){return e.dataType}}dC.ExprMax=nCe;var pC={};Object.defineProperty(pC,"__esModule",{value:!0}),pC.ExprMin=void 0;const gC=ln,rCe=pl;class iCe extends rCe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[gC.FT.numberT,gC.FT.stringT,gC.FT.dateT,gC.FT.timestampT]}returns(e){return e.dataType}}pC.ExprMin=iCe;var mC={};Object.defineProperty(mC,"__esModule",{value:!0}),mC.ExprMinus=void 0;const sCe=hr,nQ=ln,oCe=dt;class uCe extends oCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[nQ.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return nQ.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,sCe.errorFor)("negate requires number")}}mC.ExprMinus=uCe;var yC={};Object.defineProperty(yC,"__esModule",{value:!0}),yC.ExprMulDiv=void 0;const aCe=gp;class lCe extends aCe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}yC.ExprMulDiv=lCe;var EC={},$1={};Object.defineProperty($1,"__esModule",{value:!0}),$1.Unary=void 0;const cCe=dt;class fCe extends cCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}$1.Unary=fCe,Object.defineProperty(EC,"__esModule",{value:!0}),EC.ExprNot=void 0;const rQ=ln,xCe=$1,dCe=an;class hCe extends xCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[rQ.FT.boolT,rQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,dCe.nullsafeNot)(n.value):["false"]}}}EC.ExprNot=hCe;var AC={};Object.defineProperty(AC,"__esModule",{value:!0}),AC.ExprNow=void 0;const pCe=dt;class gCe extends pCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}AC.ExprNow=gCe;var SC={};Object.defineProperty(SC,"__esModule",{value:!0}),SC.ExprNULL=void 0;const mCe=dt;class yCe extends mCe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}SC.ExprNULL=yCe;var vC={};Object.defineProperty(vC,"__esModule",{value:!0}),vC.ExprNumber=void 0;const ECe=ln,ACe=dt;class SCe extends ACe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...ECe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}vC.ExprNumber=SCe;var _C={};Object.defineProperty(_C,"__esModule",{value:!0}),_C.ExprParens=void 0;const vCe=dt;class _Ce extends vCe.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:["(",...n.value,")"]}}}_C.ExprParens=_Ce;var CC={};Object.defineProperty(CC,"__esModule",{value:!0}),CC.ExprRegEx=void 0;const CCe=dt;class bCe extends CCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}CC.ExprRegEx=bCe;var bC={};Object.defineProperty(bC,"__esModule",{value:!0}),bC.ExprString=void 0;const TCe=dt,RCe=ln;class OCe extends TCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...RCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}bC.ExprString=OCe;var TC={};Object.defineProperty(TC,"__esModule",{value:!0}),TC.ExprSum=void 0;const NCe=mp;class DCe extends NCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}TC.ExprSum=DCe;var RC={};Object.defineProperty(RC,"__esModule",{value:!0}),RC.ExprTimeExtract=void 0;const dx=ee,j0=hr,J4=dt,FCe=$0;class B1 extends J4.ExpressionDef{static extractor(e){const n=B1.pluralMap[e];if(n)return n;if((0,dx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=B1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,j0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof FCe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,dx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,dx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,j0.errorFor)("extract from error").value};if(!(0,dx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,j0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,dx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,j0.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,J4.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,J4.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,j0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,j0.errorFor)(`${n} civil extraction`)):(0,dx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,j0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,dx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,j0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}RC.ExprTimeExtract=B1,B1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var OC={},Ho={},NC={};Object.defineProperty(NC,"__esModule",{value:!0}),NC.QueryInputSpace=void 0;const wCe=ts,LCe=_1,ICe=tp;class $Ce extends ICe.RefinedSpace{constructor(e,n){const r=new LCe.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof wCe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}NC.QueryInputSpace=$Ce;var BCe=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]}),kCe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),PCe=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)&&BCe(e,t,n);return kCe(e,t),e};Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.ReduceFieldSpace=Ho.QuerySpace=Ho.QueryOperationSpace=void 0;const DC=PCe(ee),Z4=F0,MCe=M0,jCe=Kr,UCe=ht,qCe=tp,HCe=v1,zCe=Jr,QCe=NC;class iQ extends qCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new QCe.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(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 zCe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();DC.isAtomicFieldType(l.dataType)&&DC.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)}}Ho.QueryOperationSpace=iQ;class sQ extends iQ{addRefineFromFields(e){var n;if(DC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new MCe.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 HCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof UCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof jCe.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)&&!WCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(DC.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("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,Z4.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,Z4.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,Z4.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}}Ho.QuerySpace=sQ;class GCe extends sQ{constructor(){super(...arguments),this.segmentType="reduce"}}Ho.ReduceFieldSpace=GCe;function WCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(OC,"__esModule",{value:!0}),OC.ExprUngroup=void 0;const oQ=ee,eL=hr,VCe=Ho,YCe=ln,KCe=dt;class XCe extends KCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=YCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,oQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,eL.errorFor)("ungrouped scalar");if((0,oQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,eL.errorFor)("doubly-ungrouped aggregate");const r={type: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 VCe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${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.log(`${this.control}() incompatible type`),(0,eL.errorFor)("ungrouped type check")}}OC.ExprUngroup=XCe;var FC={};Object.defineProperty(FC,"__esModule",{value:!0}),FC.ForRange=void 0;const uQ=Tu,tL=hr,aQ=ln,wC=On,JCe=dt,LC=pp,lQ=$0;class ZCe extends JCe.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=[aQ.FT.timestampT,aQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,tL.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,uQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,uQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,tL.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,wC.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,wC.timeOffset)("date",i.value,"+",o.value,u),g=new LC.ExprTime("date",m);return new lQ.Range(p,g).apply(e,n,r)}const l=LC.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,wC.castDateToTimestamp)(f),c=new LC.ExprTime("timestamp",f,i.expressionType)}const x=(0,wC.timeOffset)("timestamp",f,"+",o.value,u),h=new LC.ExprTime("timestamp",x,i.expressionType);return new lQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,tL.errorFor)("range has no value")}}FC.ForRange=ZCe;var pr={},rs={};Object.defineProperty(rs,"__esModule",{value:!0});class hx extends Error{}class ebe extends hx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class tbe extends hx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class nbe extends hx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class k1 extends hx{}class cQ extends hx{constructor(e){super(`Invalid unit ${e}`)}}class oo extends hx{}class U0 extends hx{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Ds="long",nL={year:ke,month:ke,day:ke},fQ={year:ke,month:zo,day:ke},rbe={year:ke,month:zo,day:ke,weekday:zo},xQ={year:ke,month:Ds,day:ke},dQ={year:ke,month:Ds,day:ke,weekday:Ds},hQ={hour:ke,minute:ke},pQ={hour:ke,minute:ke,second:ke},gQ={hour:ke,minute:ke,second:ke,timeZoneName:zo},mQ={hour:ke,minute:ke,second:ke,timeZoneName:Ds},yQ={hour:ke,minute:ke,hourCycle:"h23"},EQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},AQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},SQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Ds},vQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},_Q={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},CQ={year:ke,month:zo,day:ke,hour:ke,minute:ke},bQ={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},ibe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},TQ={year:ke,month:Ds,day:ke,hour:ke,minute:ke,timeZoneName:zo},RQ={year:ke,month:Ds,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},OQ={year:ke,month:Ds,day:ke,weekday:Ds,hour:ke,minute:ke,timeZoneName:Ds},NQ={year:ke,month:Ds,day:ke,weekday:Ds,hour:ke,minute:ke,second:ke,timeZoneName:Ds};function St(t){return typeof t>"u"}function px(t){return typeof t=="number"}function IC(t){return typeof t=="number"&&t%1===0}function sbe(t){return typeof t=="string"}function obe(t){return Object.prototype.toString.call(t)==="[object Date]"}function DQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ube(t){return Array.isArray(t)?t:[t]}function FQ(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 abe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ep(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function gl(t,e,n){return IC(t)&&t>=e&&t<=n}function lbe(t,e){return t-e*Math.floor(t/e)}function Hn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function q0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function gx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function rL(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function iL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function P1(t){return t%4===0&&(t%100!==0||t%400===0)}function M1(t){return P1(t)?366:365}function $C(t,e){const n=lbe(e-1,12)+1,r=t+(e-n)/12;return n===2?P1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function sL(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 BC(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 oL(t){return t>99?t:t>60?1900+t:2e3+t}function wQ(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 kC(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 LQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new oo(`Invalid unit value ${t}`);return e}function PC(t,e){const n={};for(const r in t)if(Ep(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=LQ(i)}return n}function j1(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}${Hn(n,2)}:${Hn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Hn(n,2)}${Hn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function MC(t){return abe(t,["hour","minute","second","millisecond"])}const IQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,cbe=["January","February","March","April","May","June","July","August","September","October","November","December"],$Q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fbe=["J","F","M","A","M","J","J","A","S","O","N","D"];function BQ(t){switch(t){case"narrow":return[...fbe];case"short":return[...$Q];case"long":return[...cbe];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 kQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],PQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],xbe=["M","T","W","T","F","S","S"];function MQ(t){switch(t){case"narrow":return[...xbe];case"short":return[...PQ];case"long":return[...kQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const jQ=["AM","PM"],dbe=["Before Christ","Anno Domini"],hbe=["BC","AD"],pbe=["B","A"];function UQ(t){switch(t){case"narrow":return[...pbe];case"short":return[...hbe];case"long":return[...dbe];default:return null}}function gbe(t){return jQ[t.hour<12?0:1]}function mbe(t,e){return MQ(e)[t.weekday-1]}function ybe(t,e){return BQ(e)[t.month-1]}function Ebe(t,e){return UQ(e)[t.year<0?0:1]}function Abe(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 qQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const Sbe={D:nL,DD:fQ,DDD:xQ,DDDD:dQ,t:hQ,tt:pQ,ttt:gQ,tttt:mQ,T:yQ,TT:EQ,TTT:AQ,TTTT:SQ,f:vQ,ff:CQ,fff:TQ,ffff:OQ,F:_Q,FF:bQ,FFF:RQ,FFFF:NQ};class is{static create(e,n={}){return new is(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 Sbe[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 Hn(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?gbe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?ybe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?mbe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=is.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?Ebe(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 qQ(is.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=is.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 qQ(s,i(u))}}class Qo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ap=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}},uL=null;class jC extends Ap{static get instance(){return uL===null&&(uL=new jC),uL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return wQ(e,n,r)}formatOffset(e,n){return j1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let UC={};function vbe(t){return UC[t]||(UC[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"})),UC[t]}const _be={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Cbe(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 bbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=_be[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let qC={};class Yu extends Ap{static create(e){return qC[e]||(qC[e]=new Yu(e)),qC[e]}static resetCache(){qC={},UC={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=Yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return wQ(e,n,r,this.name)}formatOffset(e,n){return j1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=vbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?bbe(r,n):Cbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=sL({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 aL=null;class Zr extends Ap{static get utcInstance(){return aL===null&&(aL=new Zr(0)),aL}static instance(e){return e===0?Zr.utcInstance:new Zr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Zr(kC(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${j1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${j1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return j1(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 HQ extends Ap{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 H0(t,e){if(St(t)||t===null)return e;if(t instanceof Ap)return t;if(sbe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Zr.utcInstance:Zr.parseSpecifier(n)||Yu.create(t)}else return px(t)?Zr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new HQ(t)}let zQ=()=>Date.now(),QQ="system",GQ=null,WQ=null,VQ=null,YQ;class zn{static get now(){return zQ}static set now(e){zQ=e}static set defaultZone(e){QQ=e}static get defaultZone(){return H0(QQ,jC.instance)}static get defaultLocale(){return GQ}static set defaultLocale(e){GQ=e}static get defaultNumberingSystem(){return WQ}static set defaultNumberingSystem(e){WQ=e}static get defaultOutputCalendar(){return VQ}static set defaultOutputCalendar(e){VQ=e}static get throwOnInvalid(){return YQ}static set throwOnInvalid(e){YQ=e}static resetCaches(){dn.resetCache(),Yu.resetCache()}}let KQ={};function Tbe(t,e={}){const n=JSON.stringify([t,e]);let r=KQ[n];return r||(r=new Intl.ListFormat(t,e),KQ[n]=r),r}let lL={};function cL(t,e={}){const n=JSON.stringify([t,e]);let r=lL[n];return r||(r=new Intl.DateTimeFormat(t,e),lL[n]=r),r}let fL={};function Rbe(t,e={}){const n=JSON.stringify([t,e]);let r=fL[n];return r||(r=new Intl.NumberFormat(t,e),fL[n]=r),r}let xL={};function Obe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=xL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),xL[i]=s),s}let U1=null;function Nbe(){return U1||(U1=new Intl.DateTimeFormat().resolvedOptions().locale,U1)}function Dbe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=cL(t).resolvedOptions()}catch{n=cL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Fbe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function wbe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function Lbe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function HC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Ibe(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 $be{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=Rbe(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):iL(e,3);return Hn(n,this.padTo)}}}class Bbe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.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=cL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class kbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&DQ()&&(this.rtf=Obe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):Abe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class dn{static fromOpts(e){return dn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||zn.defaultLocale,o=s||(i?"en-US":Nbe()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){U1=null,lL={},fL={},xL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=Dbe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Fbe(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=Ibe(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:dn.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 HC(this,e,r,BQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=wbe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return HC(this,e,r,MQ,()=>{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]=Lbe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return HC(this,void 0,e,()=>jQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return HC(this,e,n,UQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.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 $be(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Bbe(e,this.intl,n)}relFormatter(e={}){return new kbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Tbe(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 Sp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vp(...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 _p(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 XQ(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=q0(e[n+i]);return[r,null,n+i]}}const JQ=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Pbe=`(?:${JQ.source}?(?:\\[(${IQ.source})\\])?)?`,dL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,ZQ=RegExp(`${dL.source}${Pbe}`),hL=RegExp(`(?:T${ZQ.source})?`),Mbe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,jbe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ube=/(\d{4})-?(\d{3})/,qbe=XQ("weekYear","weekNumber","weekDay"),Hbe=XQ("year","ordinal"),zbe=/(\d{4})-(\d\d)-(\d\d)/,eG=RegExp(`${dL.source} ?(?:${JQ.source}|(${IQ.source}))?`),Qbe=RegExp(`(?: ${eG.source})?`);function Cp(t,e,n){const r=t[e];return St(r)?n:q0(r)}function Gbe(t,e){return[{year:Cp(t,e),month:Cp(t,e+1,1),day:Cp(t,e+2,1)},null,e+3]}function bp(t,e){return[{hours:Cp(t,e,0),minutes:Cp(t,e+1,0),seconds:Cp(t,e+2,0),milliseconds:rL(t[e+3])},null,e+4]}function q1(t,e){const n=!t[e]&&!t[e+1],r=kC(t[e+1],t[e+2]),i=n?null:Zr.instance(r);return[{},i,e+3]}function H1(t,e){const n=t[e]?Yu.create(t[e]):null;return[{},n,e+1]}const Wbe=RegExp(`^T?${dL.source}$`),Vbe=/^-?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 Ybe(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(gx(n)),months:x(gx(r)),weeks:x(gx(i)),days:x(gx(s)),hours:x(gx(o)),minutes:x(gx(u)),seconds:x(gx(a),a==="-0"),milliseconds:x(rL(l),f)}]}const Kbe={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 pL(t,e,n,r,i,s,o){const u={year:e.length===2?oL(q0(e)):q0(e),month:$Q.indexOf(n)+1,day:q0(r),hour:q0(i),minute:q0(s)};return o&&(u.second=q0(o)),t&&(u.weekday=t.length>3?kQ.indexOf(t)+1:PQ.indexOf(t)+1),u}const Xbe=/^(?:(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 Jbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=pL(e,i,r,n,s,o,u);let h;return a?h=Kbe[a]:l?h=0:h=kC(c,f),[x,new Zr(h)]}function Zbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const eTe=/^(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$/,tTe=/^(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$/,nTe=/^(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 tG(t){const[,e,n,r,i,s,o,u]=t;return[pL(e,i,r,n,s,o,u),Zr.utcInstance]}function rTe(t){const[,e,n,r,i,s,o,u]=t;return[pL(e,u,n,r,i,s,o),Zr.utcInstance]}const iTe=Sp(Mbe,hL),sTe=Sp(jbe,hL),oTe=Sp(Ube,hL),uTe=Sp(ZQ),nG=vp(Gbe,bp,q1,H1),aTe=vp(qbe,bp,q1,H1),lTe=vp(Hbe,bp,q1,H1),cTe=vp(bp,q1,H1);function fTe(t){return _p(t,[iTe,nG],[sTe,aTe],[oTe,lTe],[uTe,cTe])}function xTe(t){return _p(Zbe(t),[Xbe,Jbe])}function dTe(t){return _p(t,[eTe,tG],[tTe,tG],[nTe,rTe])}function hTe(t){return _p(t,[Vbe,Ybe])}const pTe=vp(bp);function gTe(t){return _p(t,[Wbe,pTe])}const mTe=Sp(zbe,Qbe),yTe=Sp(eG),ETe=vp(bp,q1,H1);function ATe(t){return _p(t,[mTe,nG],[yTe,ETe])}const STe="Invalid Duration",rG={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}},vTe={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},...rG},uo=146097/400,Tp=146097/4800,_Te={years:{quarters:4,months:12,weeks:uo/7,days:uo,hours:uo*24,minutes:uo*24*60,seconds:uo*24*60*60,milliseconds:uo*24*60*60*1e3},quarters:{months:3,weeks:uo/28,days:uo/4,hours:uo*24/4,minutes:uo*24*60/4,seconds:uo*24*60*60/4,milliseconds:uo*24*60*60*1e3/4},months:{weeks:Tp/7,days:Tp,hours:Tp*24,minutes:Tp*24*60,seconds:Tp*24*60*60,milliseconds:Tp*24*60*60*1e3},...rG},mx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],CTe=mx.slice(0).reverse();function yx(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 vt(r)}function bTe(t){return t<0?Math.floor(t):Math.ceil(t)}function iG(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?bTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function TTe(t,e){CTe.reduce((n,r)=>St(e[r])?n:(n&&iG(t,e,n,e,r),r),null)}class vt{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||dn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?_Te:vTe,this.isLuxonDuration=!0}static fromMillis(e,n){return vt.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new oo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new vt({values:PC(e,vt.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(px(e))return vt.fromMillis(e);if(vt.isDuration(e))return e;if(typeof e=="object")return vt.fromObject(e);throw new oo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=hTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=gTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new oo("need to specify a reason the Duration is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new nbe(r);return new vt({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 cQ(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?is.create(this.loc,r).formatDurationFromString(this,e):STe}toHuman(e={}){const n=mx.map(r=>{const i=this.values[r];return St(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+=iL(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=vt.fromDurationLike(e),r={};for(const i of mx)(Ep(n.values,i)||Ep(this.values,i))&&(r[i]=n.get(i)+this.get(i));return yx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=vt.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]=LQ(e(this.values[r],r));return yx(this,{values:n},!0)}get(e){return this[vt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...PC(e,vt.normalizeUnit)};return yx(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),yx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return TTe(this.matrix,e),yx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>vt.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of mx)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;px(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)mx.indexOf(l)>mx.indexOf(o)&&iG(this.matrix,i,l,n,o)}else px(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 yx(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 yx(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 mx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const z1="Invalid Interval";function RTe(t,e){return!t||!t.isValid?hn.invalid("missing or invalid start"):!e||!e.isValid?hn.invalid("missing or invalid end"):e<t?hn.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 hn{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 oo("need to specify a reason the Interval is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new tbe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=V1(e),i=V1(n),s=RTe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=vt.fromDurationLike(n),i=V1(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=vt.fromDurationLike(n),i=V1(e);return hn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return hn.fromDateTimes(s,u);if(o){const l=vt.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=vt.fromISO(r,n);if(l.isValid)return hn.before(u,l)}}return hn.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?hn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(V1).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(hn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=vt.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(hn.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:hn.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 hn.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(hn.fromDateTimes(n,a.time)),n=null);return hn.merge(i)}difference(...e){return hn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:z1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:z1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:z1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:z1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:z1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):vt.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let Q1=class{static hasDST(e=zn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Yu.isValidZone(e)}static normalizeZone(e){return H0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return dn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return dn.create(n,null,"gregory").eras(e)}static features(){return{relative:DQ()}}};function sG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(vt.fromMillis(r).as("days"))}function OTe(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=sG(u,a);return(l-l%7)/7}],["days",sG]],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 NTe(t,e,n,r){let[i,s,o,u]=OTe(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=vt.fromObject(s,r);return l.length>0?vt.fromMillis(a,r).shiftTo(...l).plus(c):c}const gL={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oG={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]},DTe=gL.hanidec.replace(/[\[|\]]/g,"").split("");function FTe(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(gL.hanidec)!==-1)e+=DTe.indexOf(t[n]);else for(const i in oG){const[s,o]=oG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Go({numberingSystem:t},e=""){return new RegExp(`${gL[t||"latn"]}${e}`)}const wTe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(FTe(n))}}const uG="[ ]",aG=new RegExp(uG,"g");function LTe(t){return t.replace(/\./g,"\\.?").replace(aG,uG)}function lG(t){return t.replace(/\./g,"").replace(aG," ").toLowerCase()}function Wo(t,e){return t===null?null:{regex:RegExp(t.map(LTe).join("|")),deser:([n])=>t.findIndex(r=>lG(n)===lG(r))+e}}function cG(t,e){return{regex:t,deser:([,n,r])=>kC(n,r),groups:e}}function mL(t){return{regex:t,deser:([e])=>e}}function ITe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function $Te(t,e){const n=Go(e),r=Go(e,"{2}"),i=Go(e,"{3}"),s=Go(e,"{4}"),o=Go(e,"{6}"),u=Go(e,"{1,2}"),a=Go(e,"{1,3}"),l=Go(e,"{1,6}"),c=Go(e,"{1,9}"),f=Go(e,"{2,4}"),x=Go(e,"{4,6}"),h=g=>({regex:RegExp(ITe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Wo(e.eras("short",!1),0);case"GG":return Wo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,oL);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Wo(e.months("short",!0,!1),1);case"MMMM":return Wo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Wo(e.months("short",!1,!1),1);case"LLLL":return Wo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return mL(c);case"uu":return mL(u);case"uuu":return Lt(n);case"a":return Wo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,oL);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Wo(e.weekdays("short",!1,!1),1);case"EEEE":return Wo(e.weekdays("long",!1,!1),1);case"ccc":return Wo(e.weekdays("short",!0,!1),1);case"cccc":return Wo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return cG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return cG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return mL(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:wTe};return m.token=t,m}const BTe={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 kTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=BTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function PTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function MTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ep(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 jTe(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 St(t.z)||(n=Yu.create(t.z)),St(t.Z)||(n||(n=new Zr(t.Z)),r=t.Z),St(t.q)||(t.M=(t.q-1)*3+1),St(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),St(t.u)||(t.S=rL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let yL=null;function UTe(){return yL||(yL=st.fromMillis(1555555555555)),yL}function qTe(t,e){if(t.literal)return t;const n=is.macroTokenToFormatOpts(t.val);if(!n)return t;const s=is.create(e,n).formatDateTimeParts(UTe()).map(o=>kTe(o,e,n));return s.includes(void 0)?t:s}function HTe(t,e){return Array.prototype.concat(...t.map(n=>qTe(n,e)))}function fG(t,e,n){const r=HTe(is.parseFormat(n),t),i=r.map(o=>$Te(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=PTe(i),a=RegExp(o,"i"),[l,c]=MTe(e,a,u),[f,x,h]=c?jTe(c):[null,null,void 0];if(Ep(c,"a")&&Ep(c,"H"))throw new k1("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 zTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=fG(t,e,n);return[r,i,s,o]}const xG=[0,31,59,90,120,151,181,212,243,273,304,334],dG=[0,31,60,91,121,152,182,213,244,274,305,335];function ao(t,e){return new Qo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function hG(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 pG(t,e,n){return n+(P1(t)?dG:xG)[e-1]}function gG(t,e){const n=P1(t)?dG:xG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function EL(t){const{year:e,month:n,day:r}=t,i=pG(e,n,r),s=hG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=BC(u)):o>BC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...MC(t)}}function mG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=hG(e,1,4),s=M1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=M1(u)):o>s?(u=e+1,o-=M1(e)):u=e;const{month:a,day:l}=gG(u,o);return{year:u,month:a,day:l,...MC(t)}}function AL(t){const{year:e,month:n,day:r}=t,i=pG(e,n,r);return{year:e,ordinal:i,...MC(t)}}function yG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=gG(e,n);return{year:e,month:r,day:i,...MC(t)}}function QTe(t){const e=IC(t.weekYear),n=gl(t.weekNumber,1,BC(t.weekYear)),r=gl(t.weekday,1,7);return e?n?r?!1:ao("weekday",t.weekday):ao("week",t.week):ao("weekYear",t.weekYear)}function GTe(t){const e=IC(t.year),n=gl(t.ordinal,1,M1(t.year));return e?n?!1:ao("ordinal",t.ordinal):ao("year",t.year)}function EG(t){const e=IC(t.year),n=gl(t.month,1,12),r=gl(t.day,1,$C(t.year,t.month));return e?n?r?!1:ao("day",t.day):ao("month",t.month):ao("year",t.year)}function AG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=gl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=gl(n,0,59),u=gl(r,0,59),a=gl(i,0,999);return s?o?u?a?!1:ao("millisecond",i):ao("second",r):ao("minute",n):ao("hour",e)}const SL="Invalid DateTime",SG=864e13;function zC(t){return new Qo("unsupported zone",`the zone "${t.name}" is not supported`)}function vL(t){return t.weekData===null&&(t.weekData=EL(t.c)),t.weekData}function G1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function vG(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 _G(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 QC(t,e,n){return vG(sL(t),e,n)}function CG(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,$C(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=vt.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=sL(s);let[a,l]=vG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function W1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Qo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function GC(t,e,n=!0){return t.isValid?is.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function _L(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Hn(t.c.year,n?6:4),e?(r+="-",r+=Hn(t.c.month),r+="-",r+=Hn(t.c.day)):(r+=Hn(t.c.month),r+=Hn(t.c.day)),r}function bG(t,e,n,r,i,s){let o=Hn(t.c.hour);return e?(o+=":",o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=Hn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Hn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Hn(Math.trunc(-t.o/60)),o+=":",o+=Hn(Math.trunc(-t.o%60))):(o+="+",o+=Hn(Math.trunc(t.o/60)),o+=":",o+=Hn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const TG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},WTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},VTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},RG=["year","month","day","hour","minute","second","millisecond"],YTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],KTe=["year","ordinal","hour","minute","second","millisecond"];function OG(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 cQ(t);return e}function NG(t,e){const n=H0(e.zone,zn.defaultZone),r=dn.fromObject(e),i=zn.now();let s,o;if(St(t.year))s=i;else{for(const l of RG)St(t[l])&&(t[l]=TG[l]);const u=EG(t)||AG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=QC(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function DG(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=iL(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 FG(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 st{constructor(e){const n=e.zone||zn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Qo("invalid input"):null)||(n.isValid?null:zC(n));this.ts=St(e.ts)?zn.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=_G(this.ts,u),r=Number.isNaN(i.year)?new Qo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||dn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=FG(arguments),[r,i,s,o,u,a,l]=n;return NG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=FG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Zr.utcInstance,NG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=obe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=H0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(zC(i))}static fromMillis(e,n={}){if(px(e))return e<-SG||e>SG?st.invalid("Timestamp out of range"):new st({ts:e,zone:H0(n.zone,zn.defaultZone),loc:dn.fromObject(n)});throw new oo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(px(e))return new st({ts:e*1e3,zone:H0(n.zone,zn.defaultZone),loc:dn.fromObject(n)});throw new oo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=H0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(zC(r));const i=zn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=PC(e,OG),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=dn.fromObject(n);if((c||u)&&f)throw new k1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new k1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=_G(i,s);h?(p=YTe,m=WTe,g=EL(g)):u?(p=KTe,m=VTe,g=AL(g)):(p=RG,m=TG);let y=!1;for(const b of p){const O=o[b];St(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?QTe(o):u?GTe(o):EG(o),A=E||AG(o);if(A)return st.invalid(A);const S=h?mG(o):u?yG(o):o,[v,_]=QC(S,s,r),C=new st({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.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]=fTe(e);return W1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=xTe(e);return W1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=dTe(e);return W1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new oo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=zTe(o,e,n);return c?st.invalid(c):W1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=ATe(e);return W1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new oo("need to specify a reason the DateTime is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new ebe(r);return new st({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?vL(this).weekYear:NaN}get weekNumber(){return this.isValid?vL(this).weekNumber:NaN}get weekday(){return this.isValid?vL(this).weekday:NaN}get ordinal(){return this.isValid?AL(this.c).ordinal:NaN}get monthShort(){return this.isValid?Q1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Q1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Q1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Q1.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 P1(this.year)}get daysInMonth(){return $C(this.year,this.month)}get daysInYear(){return this.isValid?M1(this.year):NaN}get weeksInWeekYear(){return this.isValid?BC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=is.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Zr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=H0(e,zn.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]=QC(o,s,e)}return G1(this,{ts:i,zone:e})}else return st.invalid(zC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return G1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=PC(e,OG),r=!St(n.weekYear)||!St(n.weekNumber)||!St(n.weekday),i=!St(n.ordinal),s=!St(n.year),o=!St(n.month)||!St(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new k1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new k1("Can't mix ordinal dates with month/day");let l;r?l=mG({...EL(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min($C(l.year,l.month),l.day))):l=yG({...AL(this.c),...n});const[c,f]=QC(l,this.o,this.zone);return G1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e);return G1(this,CG(this,n))}minus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e).negate();return G1(this,CG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=vt.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?is.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):SL}toLocaleString(e=nL,n={}){return this.isValid?is.create(this.loc.clone(n),e).formatDateTime(this):SL}toLocaleParts(e={}){return this.isValid?is.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=_L(this,o);return u+="T",u+=bG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?_L(this,e==="extended"):null}toISOWeekDate(){return GC(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":"")+bG(this,o==="extended",n,e,r,s):null}toRFC2822(){return GC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return GC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?_L(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")),GC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():SL}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 vt.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ube(n).map(vt.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=NTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?hn.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||st.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),DG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?DG(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new oo("min requires all arguments be DateTimes");return FQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new oo("max requires all arguments be DateTimes");return FQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return fG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return nL}static get DATE_MED(){return fQ}static get DATE_MED_WITH_WEEKDAY(){return rbe}static get DATE_FULL(){return xQ}static get DATE_HUGE(){return dQ}static get TIME_SIMPLE(){return hQ}static get TIME_WITH_SECONDS(){return pQ}static get TIME_WITH_SHORT_OFFSET(){return gQ}static get TIME_WITH_LONG_OFFSET(){return mQ}static get TIME_24_SIMPLE(){return yQ}static get TIME_24_WITH_SECONDS(){return EQ}static get TIME_24_WITH_SHORT_OFFSET(){return AQ}static get TIME_24_WITH_LONG_OFFSET(){return SQ}static get DATETIME_SHORT(){return vQ}static get DATETIME_SHORT_WITH_SECONDS(){return _Q}static get DATETIME_MED(){return CQ}static get DATETIME_MED_WITH_SECONDS(){return bQ}static get DATETIME_MED_WITH_WEEKDAY(){return ibe}static get DATETIME_FULL(){return TQ}static get DATETIME_FULL_WITH_SECONDS(){return RQ}static get DATETIME_HUGE(){return OQ}static get DATETIME_HUGE_WITH_SECONDS(){return NQ}}function V1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&px(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new oo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const XTe="2.5.2";rs.DateTime=st,rs.Duration=vt,rs.FixedOffsetZone=Zr,rs.IANAZone=Yu,rs.Info=Q1,rs.Interval=hn,rs.InvalidZone=HQ,rs.Settings=zn,rs.SystemZone=jC,rs.VERSION=XTe,rs.Zone=Ap,Object.defineProperty(pr,"__esModule",{value:!0}),pr.LiteralYear=pr.LiteralQuarter=pr.LiteralMonth=pr.LiteralWeek=pr.LiteralDay=pr.LiteralHour=pr.LiteralTimestamp=pr.TimeFormatError=void 0;const z0=rs,JTe=ee,ZTe=$0,wG=pp,CL=dt;class eRe extends Error{}pr.TimeFormatError=eRe;function Ex(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 LG="yyyy",IG=`${LG}-LL`,lo=`${IG}-dd`,$G=`${lo} HH`,BG=`${$G}:mm`,bL=`${BG}:ss`;class kG extends CL.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 TL extends kG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Ex(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=z0.DateTime.fromFormat(e,bL);if(s.isValid)return new TL(r,n);if(s=z0.DateTime.fromFormat(e,BG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(bL);return new RL(r,n,"timestamp",o)}}}pr.LiteralTimestamp=TL;class RL extends kG{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,CL.getMorphicValue)(i,"timestamp"),a=(0,CL.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,JTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new ZTe.Range(new wG.ExprTime(u,i.value),new wG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class OL extends RL{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,$G);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(bL),new OL(n,r)}}pr.LiteralHour=OL;class Y1 extends RL{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 NL extends Y1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,lo);if(i.isValid)return r=i.plus({day:1}).toFormat(lo),new NL(n,r)}}pr.LiteralDay=NL;class DL extends Y1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=n.text.slice(0,10),s=z0.DateTime.fromFormat(i,lo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(lo),r=u.toFormat(lo),new DL(n,r)}}}pr.LiteralWeek=DL;class FL extends Y1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,IG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(lo),r=s.toFormat(lo),new FL(n,r)}}}pr.LiteralMonth=FL;class wL extends Y1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Ex(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=z0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(lo),r=u.toFormat(lo),new wL(n,r)}}}pr.LiteralQuarter=wL;class LL extends Y1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Ex(e,!1);let r=n.text;const i=z0.DateTime.fromFormat(n.text,LG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(lo),r=s.toFormat(lo),new LL(n,r)}}}pr.LiteralYear=LL;var WC={};Object.defineProperty(WC,"__esModule",{value:!0}),WC.PartialCompare=void 0;const tRe=hr,nRe=dt;class rRe extends nRe.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.log("Partial comparison does not have a value"),(0,tRe.errorFor)("no value for partial compare")}}WC.PartialCompare=rRe;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.PickWhen=Rp.Pick=void 0;const Ku=ee,Q0=hr,Vo=ln,iRe=dt,sRe=Ve,PG=an;function VC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class oRe extends iRe.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=["CASE"];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,Ku.maxExpressionType)(o,(0,Ku.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Ku.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vo.FT.typeEq(s,x,!0)){const h=Vo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick when type")}s=VC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=VC(s,l),!Vo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Vo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Ku.maxExpressionType)(o,l.expressionType),evalSpace:(0,Ku.mergeEvalSpaces)(u,l.evalSpace),value:(0,PG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,Q0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,Q0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,Q0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Vo.FT.typeEq(a.when,Vo.FT.boolT))return this.log(`when expression must be boolean, not '${Vo.FT.inspect(a.when)}`),(0,Q0.errorFor)("pick when type");if(r&&!Vo.FT.typeEq(r,a.pick,!0)){const l=Vo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick value type")}r=VC(r,a.pick),s=(0,Ku.maxExpressionType)(s,(0,Ku.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Ku.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Ku.maxExpressionType)(s,u.expressionType),o=(0,Ku.mergeEvalSpaces)(o,u.evalSpace),r=VC(r,u),Vo.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,PG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Vo.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,Q0.errorFor)("pick value type mismatch"))}}Rp.Pick=oRe;class uRe extends sRe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Rp.PickWhen=uRe;var YC={};Object.defineProperty(YC,"__esModule",{value:!0}),YC.Timeframe=void 0;const aRe=ee,lRe=Ve;class cRe extends lRe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,aRe.isTimestampUnit)(n)?n:"second"}}YC.Timeframe=cRe;var KC={};Object.defineProperty(KC,"__esModule",{value:!0}),KC.TopBy=void 0;const fRe=ee,MG=dt,xRe=Ve,dRe=an;class hRe extends xRe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof MG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof MG.ExpressionDef){const n=this.by.getExpression(e);return(0,fRe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,dRe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}KC.TopBy=hRe;var G0={};Object.defineProperty(G0,"__esModule",{value:!0}),G0.ImportStatement=G0.ImportSelect=G0.ImportSourceName=void 0;const IL=Ve;class pRe extends IL.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}G0.ImportSourceName=pRe;class gRe extends IL.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}G0.ImportSelect=gRe;class mRe extends IL.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI 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.log("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.log(`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.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}G0.ImportStatement=mRe;var K1={};Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExtendBlock=void 0;const yRe=Ve,ERe=Rn;class ARe extends yRe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=ERe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}K1.ExtendBlock=ARe;var XC={};Object.defineProperty(XC,"__esModule",{value:!0}),XC.Argument=void 0;const SRe=Ve;class vRe extends SRe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}XC.Argument=vRe;var JC={};Object.defineProperty(JC,"__esModule",{value:!0}),JC.HasParameter=void 0;const jG=ee,_Re=Ve;class CRe extends _Re.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,jG.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.log(`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.log("Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,jG.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`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.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}JC.HasParameter=CRe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.AnonymousQuery=void 0;const bRe=Ve,TRe=Yr;class RRe extends bRe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=TRe.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("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)}}ZC.AnonymousQuery=RRe;var W0={};Object.defineProperty(W0,"__esModule",{value:!0}),W0.View=void 0;const ORe=Ve;let NRe=class extends ORe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};W0.View=NRe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.ViewArrow=void 0;const DRe=Jr,FRe=W0;class wRe extends FRe.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 DRe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}eb.ViewArrow=wRe;var tb={},X1={};Object.defineProperty(X1,"__esModule",{value:!0}),X1.refine=void 0;const $L=Tu,BL=F0;function LRe(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,$L.isRawSegment)(s))t.log("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.log(`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.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("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,$L.isQuerySegment)(o)&&(0,$L.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,BL.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,BL.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(BL.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}X1.refine=LRe,Object.defineProperty(tb,"__esModule",{value:!0}),tb.ViewRefine=void 0;const IRe=Xr,$Re=Ns,BRe=X1,kRe=W0;class PRe extends kRe.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,$Re.getFinalStruct)(this.refinement,e.structDef(),i):IRe.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,BRe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}tb.ViewRefine=PRe;var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.ReferenceView=void 0;const UG=ee,qG=Xr,MRe=Ns,jRe=Kr,URe=X1,qRe=W0;class HRe extends qRe.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:qG.ErrorFactory.structDef,outputStruct:qG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof jRe.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,UG.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,UG.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,MRe.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("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.log(`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,URe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}nb.ReferenceView=HRe;var rb={},J1={},ib={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.Index=void 0;const zRe=Ve,QRe=Rn;let GRe=class extends zRe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=QRe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Z1.Index=GRe;var ey={};Object.defineProperty(ey,"__esModule",{value:!0}),ey.SampleProperty=void 0;const WRe=Ve,HG=Rn;class VRe extends WRe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=HG.LegalRefinementStage.Tail,this.forceQueryClass=HG.QueryClass.Index}sampling(){return this.sample}}ey.SampleProperty=VRe;var sb={};Object.defineProperty(sb,"__esModule",{value:!0}),sb.IndexFieldSpace=void 0;const zG=ee,kL=ht,YRe=Kr,KRe=Ho,XRe=w1,JRe=Jr;class ZRe extends KRe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof kL.FieldReference?super.pushFields(n):n instanceof kL.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof YRe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof XRe.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):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 JRe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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=kL.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,zG.isAtomicFieldType)(c.dataType)&&(0,zG.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)}}sb.IndexFieldSpace=ZRe,Object.defineProperty(ib,"__esModule",{value:!0}),ib.IndexBuilder=void 0;const PL=ee,eOe=Xr,tOe=qo,nOe=Z1,rOe=P0,iOe=ey,sOe=sb;class oOe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new sOe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof tOe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof rOe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof nOe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof iOe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,PL.isIndexSegment)(e)&&!(0,PL.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),eOe.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,PL.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}ib.IndexBuilder=oOe;var ob={},ty={};Object.defineProperty(ty,"__esModule",{value:!0}),ty.GroupBy=void 0;const uOe=Os,QG=Rn;class aOe extends uOe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=QG.LegalRefinementStage.Single,this.forceQueryClass=QG.QueryClass.Grouping}}ty.GroupBy=aOe;var ub={};Object.defineProperty(ub,"__esModule",{value:!0}),ub.ProjectFieldSpace=void 0;const ML=ee,lOe=Ho;class cOe extends lOe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,ML.expressionIsAggregate)(e.expressionType)?!1:(0,ML.expressionInvolvesAggregate)(e.expressionType)&&(0,ML.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}ub.ProjectFieldSpace=cOe;var V0={},Ax={};Object.defineProperty(Ax,"__esModule",{value:!0}),Ax.Ordering=Ax.OrderBy=void 0;const fOe=ee,GG=M0,WG=Ve,xOe=Rn;class dOe extends WG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof GG.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 GG.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,fOe.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Ax.OrderBy=dOe;class hOe extends WG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=xOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Ax.Ordering=hOe;var ny={};Object.defineProperty(ny,"__esModule",{value:!0}),ny.Top=void 0;const VG=ee,pOe=an,gOe=M0,mOe=Ve,yOe=Rn;let EOe=class extends mOe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=yOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof gOe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,VG.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`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,VG.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,pOe.compressExpr)(r.value)}}}};ny.Top=EOe,Object.defineProperty(V0,"__esModule",{value:!0}),V0.ReduceBuilder=V0.QuerySegmentBuilder=void 0;const YG=ee,AOe=Xr,SOe=qo,vOe=P0,KG=Ax,XG=ny,_Oe=Ho,COe=Os;class JG{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof COe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof SOe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof XG.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof vOe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof KG.Ordering&&(this.order?e.log("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 XG.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof KG.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])}}V0.QuerySegmentBuilder=JG;class bOe extends JG{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new _Oe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,YG.isReduceSegment)(e)||(0,YG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),AOe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}V0.ReduceBuilder=bOe,Object.defineProperty(ob,"__esModule",{value:!0}),ob.ProjectBuilder=void 0;const ZG=ee,TOe=Xr,ROe=ty,OOe=ub,NOe=V0;class DOe extends NOe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new OOe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof ROe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,ZG.isProjectSegment)(e)||(0,ZG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),TOe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}ob.ProjectBuilder=DOe;var ab={};Object.defineProperty(ab,"__esModule",{value:!0}),ab.PartialBuilder=void 0;const FOe=Tu,wOe=V0;class LOe extends wOe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,FOe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}ab.PartialBuilder=LOe,Object.defineProperty(J1,"__esModule",{value:!0}),J1.QOpDesc=void 0;const IOe=ib,$Oe=ob,BOe=V0,kOe=Ve,POe=Ns,MOe=Jr,Sx=Rn,jOe=ab;class UOe extends kOe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Sx.QueryClass.Grouping:this.refineThis.type==="project"?n=Sx.QueryClass.Project:this.refineThis.type==="index"&&(n=Sx.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`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.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=Sx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Sx.QueryClass.Grouping:return new BOe.ReduceBuilder(e,this.refineThis,n,r);case Sx.QueryClass.Project:return new $Oe.ProjectBuilder(e,this.refineThis,n,r);case Sx.QueryClass.Index:return new IOe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new jOe.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 MOe.StaticSpace((0,POe.opOutputStruct)(this,e.structDef(),i))}}}J1.QOpDesc=UOe,Object.defineProperty(rb,"__esModule",{value:!0}),rb.QOpDescView=void 0;const qOe=ee,HOe=Jr,eW=J1,zOe=Ns,jL=Rn,QOe=W0;class GOe extends QOe.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,qOe.isRawSegment)(i)?(this.log("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 eW.QOpDesc([]),o=new eW.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case jL.LegalRefinementStage.Head:s.push(u);break;case jL.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case jL.LegalRefinementStage.Tail:o.push(u);break;default:u.log("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,zOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new HOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}rb.QOpDescView=GOe;var pn={};Object.defineProperty(pn,"__esModule",{value:!0}),pn.FieldDefinitionValue=pn.DefSpace=pn.DimensionFieldDeclaration=pn.MeasureFieldDeclaration=pn.DeclareFieldDeclaration=pn.ProjectFieldDeclaration=pn.GroupByFieldDeclaration=pn.AggregateFieldDeclaration=pn.CalculateFieldDeclaration=pn.AtomicFieldDeclaration=void 0;const WOe=ee,VOe=an,YOe=ln,KOe=fp,XOe=Ve,vx=Kn,JOe=Yr,ZOe=Kr;class Y0 extends XOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=JOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new UL(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,VOe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,WOe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,KOe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof UL&&e.foundCircle)&&r.dataType!=="error"){const a=YOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new tW(e,this))}}pn.AtomicFieldDeclaration=Y0;class eNe extends Y0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=eNe;class tNe extends Y0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=tNe;class nNe extends Y0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=nNe;class rNe extends Y0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=rNe;class iNe extends Y0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=iNe;class sNe extends Y0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=sNe;class oNe extends Y0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=oNe;class UL{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:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}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")}}pn.DefSpace=UL;class tW extends ZOe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}pn.FieldDefinitionValue=tW;var lb={};Object.defineProperty(lb,"__esModule",{value:!0}),lb.Aggregate=void 0;const uNe=Os,nW=Rn;let aNe=class extends uNe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=nW.LegalRefinementStage.Single,this.forceQueryClass=nW.QueryClass.Grouping}};lb.Aggregate=aNe;var cb={};Object.defineProperty(cb,"__esModule",{value:!0}),cb.Calculate=void 0;const lNe=Os,cNe=Rn;class fNe extends lNe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cNe.LegalRefinementStage.Single}}cb.Calculate=fNe;var ry={};Object.defineProperty(ry,"__esModule",{value:!0}),ry.Dimensions=void 0;const xNe=w0;class dNe extends xNe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}ry.Dimensions=dNe;var iy={};Object.defineProperty(iy,"__esModule",{value:!0}),iy.Measures=void 0;const hNe=w0;class pNe extends hNe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}iy.Measures=pNe;var fb={};Object.defineProperty(fb,"__esModule",{value:!0}),fb.Nests=void 0;const gNe=Os,rW=Rn;class mNe extends gNe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=rW.LegalRefinementStage.Single,this.forceQueryClass=rW.QueryClass.Grouping}}fb.Nests=mNe;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.ProjectStatement=void 0;const yNe=Os,iW=Rn;class ENe extends yNe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=iW.QueryClass.Project,this.queryRefinementStage=iW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}xb.ProjectStatement=ENe;var K0={},ml={};Object.defineProperty(ml,"__esModule",{value:!0}),ml.findReferences=ml.deprecatedParseTableURI=ml.constructTableKey=void 0;const ANe=ox,qL=Bn;function HL(t){const e=(0,qL.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,qL.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class SNe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=sW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,qL.getId)(e.connectionId()),r=HL(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=HL(e.tableURI()),{connectionName:r,tablePath:i}=oW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=HL(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function sW(t,e){return t===void 0?e:`${t}:${e}`}ml.constructTableKey=sW;function oW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}ml.deprecatedParseTableURI=oW;function vNe(t,e,n){const r=new SNe(t,e),i=r;return ANe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}ml.findReferences=vNe,Object.defineProperty(K0,"__esModule",{value:!0}),K0.TableFunctionSource=K0.TableMethodSource=K0.TableSource=void 0;const uW=ml,_Ne=Uo,aW=Xr;class zL extends _Ne.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return aW.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,uW.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.log(l),aW.ErrorFactory.structDef}}K0.TableSource=zL;class CNe extends zL{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.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}K0.TableMethodSource=CNe;class bNe extends zL{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,uW.deprecatedParseTableURI)(this.tableURI)}}K0.TableFunctionSource=bNe;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.SQLString=void 0;const TNe=Ve,lW=Wu;class RNe extends TNe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(ONe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof lW.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("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("Cannot expand into a query")}return e}}db.SQLString=RNe;function ONe(t){return t instanceof lW.SourceQueryElement}var hb={};Object.defineProperty(hb,"__esModule",{value:!0}),hb.SourceDesc=void 0;const NNe=Ve;class DNe extends NNe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}hb.SourceDesc=DNe;var pb={};Object.defineProperty(pb,"__esModule",{value:!0}),pb.isSourceProperty=void 0;const FNe=qo,wNe=ts,LNe=w0,INe=rp,$Ne=I0,BNe=ip,kNe=sp,PNe=op,MNe=L0;function jNe(t){return t instanceof FNe.Filter||t instanceof wNe.Joins||t instanceof LNe.DeclareFields||t instanceof INe.FieldListEdit||t instanceof $Ne.Renames||t instanceof BNe.PrimaryKey||t instanceof MNe.ObjectAnnotation||t instanceof kNe.Views||t instanceof PNe.TimezoneStatement}pb.isSourceProperty=jNe;var gb={};Object.defineProperty(gb,"__esModule",{value:!0}),gb.isFieldCollectionMember=void 0;const UNe=pn,cW=ht;function qNe(t){return t instanceof cW.FieldReference||t instanceof cW.WildcardFieldReference||t instanceof UNe.AtomicFieldDeclaration}gb.isFieldCollectionMember=qNe;var mb={};Object.defineProperty(mb,"__esModule",{value:!0}),mb.isQueryElement=void 0;const HNe=up,zNe=ap,QNe=O1,GNe=N1;function WNe(t){return t instanceof HNe.QueryArrow||t instanceof zNe.QueryRefine||t instanceof QNe.QueryReference||t instanceof GNe.QueryRaw}mb.isQueryElement=WNe;var fW={};Object.defineProperty(fW,"__esModule",{value:!0});var yb={};Object.defineProperty(yb,"__esModule",{value:!0}),yb.isQueryProperty=void 0;function VNe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}yb.isQueryProperty=VNe;var Eb={};Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.isQueryExtendProperty=void 0;const YNe=ry,KNe=ts,XNe=iy;function JNe(t){return t instanceof YNe.Dimensions||t instanceof XNe.Measures||t instanceof KNe.Joins}Eb.isQueryExtendProperty=JNe;var Ab={};Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.isFieldPropStatement=void 0;const ZNe=B0,eDe=qo,tDe=P0,nDe=yp;function rDe(t){return t instanceof eDe.Filter||t instanceof tDe.Limit||t instanceof nDe.PartitionBy||t instanceof ZNe.FunctionOrdering}Ab.isFieldPropStatement=rDe,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(d1,t),n(Zh,t),n(ep,t),n(Uo,t),n(A1,t),n(Wu,t),n(G_,t),n(W_,t),n(K_,t),n(b1,t),n(Z_,t),n(rp,t),n(ip,t),n(I0,t),n(sp,t),n(op,t),n(eC,t),n(gp,t),n(nC,t),n(B0,t),n(rC,t),n(pl,t),n(iC,t),n(mp,t),n(sC,t),n(oC,t),n(uC,t),n(dp,t),n(aC,t),n(lC,t),n(fC,t),n(I1,t),n(F1,t),n(cx,t),n(xC,t),n(dC,t),n(pC,t),n(mC,t),n(yC,t),n(EC,t),n(AC,t),n(SC,t),n(vC,t),n(_C,t),n(CC,t),n(bC,t),n(TC,t),n(RC,t),n(OC,t),n(FC,t),n(pr,t),n(WC,t),n(yp,t),n(Rp,t),n($0,t),n(YC,t),n(KC,t),n($1,t),n(an,t),n(G0,t),n(K1,t),n(XC,t),n(JC,t),n(ZC,t),n(ap,t),n(up,t),n(W0,t),n(eb,t),n(tb,t),n(nb,t),n(rb,t),n(pn,t),n(ht,t),n(lb,t),n(cb,t),n(w0,t),n(ry,t),n(K1,t),n(qo,t),n(ty,t),n(Z1,t),n(ts,t),n(h1,t),n(P0,t),n(iy,t),n(d1,t),n(fb,t),n(Ax,t),n(xb,t),n(J1,t),n(ey,t),n(ny,t),n(lp,t),n(lx,t),n(D1,t),n(K0,t),n(db,t),n(L0,t),n(dl,t),n(hb,t),n(pb,t),n(dt,t),n(gb,t),n(M0,t),n(Ve,t),n(mb,t),n(fW,t),n(yb,t),n(Eb,t),n(Ab,t)}(F_);var Sb={},Op={};Object.defineProperty(Op,"__esModule",{value:!0}),Op.ConstantExpression=Op.ConstantFieldSpace=void 0;const iDe=dl,xW=dt,sDe=dp,oDe=an;class dW{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:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}Op.ConstantFieldSpace=dW;class uDe extends xW.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class aDe extends xW.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 dW),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new sDe.ExprCompare(new uDe(e),iDe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,oDe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Op.ConstantExpression=aDe;var lDe=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]}),cDe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fDe=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)&&lDe(e,t,n);return cDe(e,t),e};Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.MalloyToAST=void 0;const hW=LS,xDe=p1,te=fDe(F_),dDe=xr,hDe=F_,kn=Bn,QL=ee,pDe=fl,gDe=Op;class pW extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class GL extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const mDe=["##! m4warnings=error"];class yDe extends xDe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of mDe){const s=pDe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof GL||this.astError(s,`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 te.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new te.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 dDe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 `{? condition }` is deprecated; use `{ where: condition } instead"),new te.Filter([n])}getPlainString(e){const n=(0,kn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,kn.getStringParts)(i))s instanceof hW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,kn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,kn.getStringParts)(e))r instanceof hW.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,"Time data parse error"),r=new te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new gDe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,kn.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 te.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new te.TableFunctionSource(n),e);return this.m4advisory(e,"`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.getPlainString(e.tablePath());return this.astAt(new te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new te.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,QL.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"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 n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new te.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,kn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`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 te.RenameField((0,kn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new te.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.ExprSum(void 0,o);else return this.contextError(l,`\`${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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,kn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,kn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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:` 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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,kn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new te.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,kn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new te.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new te.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,te.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,"Expression illegal inside path.count()"),new te.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,QL.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.getPlainString({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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,kn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,QL.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,kn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,kn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new GL(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new GL(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new pW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof hDe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new pW}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}Sb.MalloyToAST=yDe;var vb={};Object.defineProperty(vb,"__esModule",{value:!0}),vb.MessageLog=void 0;class EDe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}vb.MessageLog=EDe;var _b={};Object.defineProperty(_b,"__esModule",{value:!0}),_b.Zone=void 0;class ADe{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})}}_b.Zone=ADe;var Cb={};Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.walkForDocumentSymbols=void 0;const SDe=ox,vDe=Bn;class _De{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.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,vDe.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 CDe(t,e,n){const r=new _De(t,e,[],[]),i=r;return SDe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Cb.walkForDocumentSymbols=CDe;var bb={};Object.defineProperty(bb,"__esModule",{value:!0}),bb.walkForDocumentCompletions=void 0;const bDe=ox,TDe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],RDe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],ODe=["source","explore","query","sql"];class NDe{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 TDe)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 RDe)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 ODe)this.completions.push({type:"model_property",text:`${r}: `})}}}function DDe(t,e,n){const r=new NDe(t,[],n),i=r;return bDe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}bb.walkForDocumentCompletions=DDe;var Tb={};Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.walkForDocumentHelpContext=void 0;const FDe=C4;class wDe extends FDe.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 LDe(t,e){return new wDe(e).visit(t)}Tb.walkForDocumentHelpContext=LDe;var Rb={},sy={};Object.defineProperty(sy,"__esModule",{value:!0}),sy.locationContainsPosition=void 0;function IDe(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)}sy.locationContainsPosition=IDe,Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.ReferenceList=void 0;const $De=sy;class BDe{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,$De.locationContainsPosition)(r.location,e))return r}}Rb.ReferenceList=BDe;var Ob={};Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.isNeedResponse=void 0;function kDe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}Ob.isNeedResponse=kDe;var Nb={};Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.walkForModelAnnotation=void 0;const PDe=ox;class MDe{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 jDe(t,e,n){const r=new MDe(t,e,n),i=r;return PDe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}Nb.walkForModelAnnotation=jDe;var UDe=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]}),qDe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),HDe=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)&&UDe(e,t,n);return qDe(e,t),e};Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.MalloyParserErrorHandler=Ou.MalloyTranslator=Ou.MalloyChildTranslator=Ou.MalloyTranslation=void 0;const gW=LS,zDe=Gv,QDe=w,mW=HDe(F_),GDe=Sb,WDe=vb,VDe=ml,WL=_b,YDe=Cb,KDe=bb,XDe=Tb,JDe=Rb,Db=Ob,ZDe=sy,yW=fl,eFe=Nb;class tFe extends zDe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class nFe{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.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}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.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1301
1301
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),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=gW.CharStreams.fromString(e),i=new tFe(r),s=new gW.CommonTokenStream(i),o=new QDe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new AW(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 rFe{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,VDe.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.logger.log({message:`Malformed URL '${o}'"`,at:{url:e.sourceURL,range:u},severity:"error"})}}}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,Db.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,Db.isNeedResponse)(u))return u}return null}}class iFe{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 GDe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.log("INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof mW.Unimplemented&&u.log("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,Db.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class sFe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,YDe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class oFe{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,KDe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class uFe{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,XDe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class aFe{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,eFe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class lFe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=yW.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,Db.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof mW.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.logger.log({message:`'${e.sourceURL}' did not parse to malloy document`,at:e.defaultLocation(),severity:"error"});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 VL{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new yW.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new nFe,this.modelAnnotationStep=new aFe(this.parseStep),this.metadataStep=new sFe(this.parseStep),this.completionsStep=new oFe(this.parseStep),this.helpContextStep=new uFe(this.parseStep),this.importsAndTablesStep=new rFe(this.parseStep),this.astStep=new iFe(this.importsAndTablesStep),this.translateStep=new lFe(this.astStep),this.references=new JDe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new EW(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}
|
|
1302
1302
|
| ${l}`,u>0&&(i=i+`
|
|
1303
1303
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|