@malloydata/render 0.0.179-dev240904162152 → 0.0.179-dev240904175913

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.
@@ -1300,7 +1300,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1300
1300
  `)+`
1301
1301
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Wu)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)}}We.MalloyElement=Wu;class LEe extends Wu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=LEe;class ED extends Wu{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}}We.ModelEntryReference=ED;class IEe extends Wu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=IEe;function fQ(t){return t.execute!==void 0}We.isDocStatement=fQ;function $Ee(t){return t instanceof jm||fQ(t)}We.isDocStatementOrDocStatementList=$Ee;class xQ extends Wu{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}}}We.ListOf=xQ;class jm extends xQ{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=cQ.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,cQ.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof jm){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}}}We.DocStatementList=jm;const BEe="5a79a191-06bc-43cf-9b12-58741cd82970";function dQ(t){const e=t.inherits?dQ(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 kEe(t){const e=dQ(t).join("");return(0,wEe.v5)(e,BEe)}class AD extends Wu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new FEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new DEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new jm(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=kEe(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,REe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}We.Document=AD;var m_={},l2={},Wr={},$0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.canMakeEntry=$0.SpaceEntry=void 0;class PEe{}$0.SpaceEntry=PEe;function MEe(t){return"makeEntry"in t}$0.canMakeEntry=MEe,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.SpaceField=void 0;const jEe=le,UEe=$0;class qEe extends UEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,jEe.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(){}}Wr.SpaceField=qEe,Object.defineProperty(l2,"__esModule",{value:!0}),l2.ViewField=void 0;const zEe=Wr;class HEe extends zEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}l2.ViewField=HEe,Object.defineProperty(m_,"__esModule",{value:!0}),m_.ASTViewField=void 0;const QEe=l2;class GEe extends QEe.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)}}m_.ASTViewField=GEe,Object.defineProperty($m,"__esModule",{value:!0}),$m.ViewFieldDeclaration=void 0;const WEe=We,VEe=Gr,YEe=o2,KEe=m_;class XEe extends WEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=VEe.extendNoteMethod}makeEntry(e){const n=new KEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,YEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}$m.ViewFieldDeclaration=XEe;var On={};Object.defineProperty(On,"__esModule",{value:!0}),On.LegalRefinementStage=On.QueryClass=void 0;var hQ;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(hQ||(On.QueryClass=hQ={}));var pQ;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(pQ||(On.LegalRefinementStage=pQ={})),Object.defineProperty(Im,"__esModule",{value:!0}),Im.NestFieldDeclaration=void 0;const JEe=o2,ZEe=$m,gQ=On;class eAe extends ZEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=gQ.LegalRefinementStage.Single,this.forceQueryClass=gQ.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,JEe.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")}}Im.NestFieldDeclaration=eAe;var c2={},Vr={};Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.ErrorFactory=void 0;const mQ={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class vD{static get structDef(){return{...mQ}}static isErrorStructDef(e){return e.name.includes(mQ.name)}static get query(){return{structRef:vD.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Vr.ErrorFactory=vD,Object.defineProperty(c2,"__esModule",{value:!0}),c2.DefineSourceList=c2.DefineSource=void 0;const tAe=Vr,yQ=We,nAe=Gr;class rAe extends yQ.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=nAe.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),tAe.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`)}}c2.DefineSource=rAe;class iAe extends yQ.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}c2.DefineSourceList=iAe;var f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.DefineQueryList=f2.DefineQuery=void 0;const EQ=We,sAe=Gr;class oAe extends EQ.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=sAe.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})}}f2.DefineQuery=oAe;class uAe extends EQ.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}f2.DefineQueryList=uAe;var jo={};Object.defineProperty(jo,"__esModule",{value:!0}),jo.Source=void 0;const aAe=We;class lAe extends aAe.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)}}}jo.Source=lAe;var Um={},x2={},y_={},B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.mergeFields=B0.nameFromDef=void 0;function SD(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}B0.nameFromDef=SD;function cAe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>SD(i))),r=t.filter(i=>!n.has(SD(i)));return r.push(...e),r}B0.mergeFields=cAe;var qm={},Yr={},Vu={};Object.defineProperty(Vu,"__esModule",{value:!0}),Vu.DefinedParameter=Vu.AbstractParameter=Vu.SpaceParam=void 0;const fAe=$0;class _D extends fAe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Vu.SpaceParam=_D;class xAe extends _D{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"}}}Vu.AbstractParameter=xAe;class dAe extends _D{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Vu.DefinedParameter=dAe;var dx={};Object.defineProperty(dx,"__esModule",{value:!0}),dx.StructSpaceFieldBase=void 0;const hAe=Wr;class pAe extends hAe.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"}}}dx.StructSpaceFieldBase=pAe;var zm={};Object.defineProperty(zm,"__esModule",{value:!0}),zm.ColumnSpaceField=void 0;const gAe=Wr;class mAe extends gAe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}zm.ColumnSpaceField=mAe;var E_={};Object.defineProperty(E_,"__esModule",{value:!0}),E_.IRViewField=void 0;const yAe=l2;class EAe extends yAe.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()}}E_.IRViewField=EAe,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.StructSpaceField=Yr.StaticSpace=void 0;const AAe=Ou,vAe=le,SAe=Vu,_Ae=Wr,A_=dx,CAe=zm,bAe=E_;class AQ{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,AAe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new vQ(e):(0,vAe.isTurtleDef)(e)?new bAe.IRViewField(this,e):new CAe.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 SAe.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 _Ae.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof A_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof A_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof A_.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}}Yr.StaticSpace=AQ;class vQ extends A_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new AQ(this.sourceDef)}}Yr.StructSpaceField=vQ,Object.defineProperty(qm,"__esModule",{value:!0}),qm.JoinSpaceField=void 0;const TAe=Yr;class OAe extends TAe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}qm.JoinSpaceField=OAe;var Hm={};Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.SpaceSeed=void 0;const RAe=Yr;function SQ(t){return t.type==="fieldSpace"}class NAe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return SQ(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return SQ(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new RAe.StaticSpace(this.spaceSpec)),this.asFS)}}Hm.SpaceSeed=NAe;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.ParameterSpace=void 0;const DAe=Vu;class FAe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new DAe.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}}d2.ParameterSpace=FAe,Object.defineProperty(y_,"__esModule",{value:!0}),y_.DynamicSpace=void 0;const wAe=B0,LAe=Vr,IAe=Wr,$Ae=qm,BAe=l2,_Q=Vu,kAe=Hm,PAe=Yr,MAe=dx,jAe=d2;class UAe extends PAe.StaticSpace{constructor(e){const n=new kAe.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 _Q.AbstractParameter(n)));return this}parameterSpace(){return new jAe.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,wAe.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 _Q.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 MAe.StructSpaceFieldBase?r.push([a,l]):l instanceof BAe.ViewField?i.push([a,l]):l instanceof IAe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof $Ae.JoinSpaceField){const l=a.join.structDef(u);LAe.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}}y_.DynamicSpace=UAe,Object.defineProperty(x2,"__esModule",{value:!0}),x2.RefinedSpace=void 0;const qAe=y_,zAe=$0;class CD extends qAe.DynamicSpace{static filteredFrom(e,n,r){const i=new CD(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,zAe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}x2.RefinedSpace=CD;var k0={},bs={};Object.defineProperty(bs,"__esModule",{value:!0}),bs.DefinitionList=void 0;const HAe=We,CQ=Gr;class QAe extends HAe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,CQ.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,CQ.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}bs.DefinitionList=QAe,Object.defineProperty(k0,"__esModule",{value:!0}),k0.DeclareFields=void 0;const GAe=bs,WAe=On;class VAe extends GAe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=WAe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}k0.DeclareFields=VAe;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Filter=Uo.FilterElement=void 0;const bQ=le,TQ=We,bD=On;class YAe extends TQ.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}Uo.FilterElement=YAe;let KAe=class extends TQ.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=bD.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?bD.LegalRefinementStage.Tail:bD.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,bQ.expressionIsAggregate)(i.expressionType),o=(0,bQ.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}};Uo.Filter=KAe;var Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.Joins=Xi.ExpressionJoin=Xi.KeyJoin=Xi.Join=void 0;const XAe=le,JAe=qm,ZAe=bs,eve=We,tve=Gr,nve=On,OQ=Vr;class TD extends eve.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=tve.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new JAe.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"),OQ.ErrorFactory.structDef)}}Xi.Join=TD;class rve extends TD{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:{node:"error",message:"('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:{node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right: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")}}Xi.KeyJoin=rve;class ive extends TD{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,XAe.isJoinOn)(i)&&(i.onExpression=r.value)}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),OQ.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}}Xi.ExpressionJoin=ive;class sve extends ZAe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=nve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Xi.Joins=sve;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.FieldListEdit=void 0;const ove=We;class uve extends ove.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}h2.FieldListEdit=uve;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PrimaryKey=void 0;const ave=We;class lve extends ave.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}p2.PrimaryKey=lve;var g2={};Object.defineProperty(g2,"__esModule",{value:!0}),g2.Views=void 0;const cve=bs;class fve extends cve.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}g2.Views=fve;var m2={};Object.defineProperty(m2,"__esModule",{value:!0}),m2.TimezoneStatement=void 0;const xve=We;class dve extends xve.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)}}m2.TimezoneStatement=dve;var P0={};Object.defineProperty(P0,"__esModule",{value:!0}),P0.ModelAnnotation=P0.ObjectAnnotation=void 0;const hve=gl,pve=We;class RQ extends pve.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}P0.ObjectAnnotation=RQ;class gve extends RQ{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=hve.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)}}P0.ModelAnnotation=gve;var M0={},v_={};Object.defineProperty(v_,"__esModule",{value:!0}),v_.RenameSpaceField=void 0;const mve=Wr;class yve extends mve.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()}}v_.RenameSpaceField=yve,Object.defineProperty(M0,"__esModule",{value:!0}),M0.Renames=M0.RenameField=void 0;const Eve=v_,NQ=We,Ave=Wr;class vve extends NQ.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 Ave.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Eve.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}M0.RenameField=vve;class Sve extends NQ.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}M0.Renames=Sve,Object.defineProperty(Um,"__esModule",{value:!0}),Um.RefinedSource=void 0;const _ve=le,Cve=x2,bve=k0,Tve=Uo,Ove=Xi,Rve=h2,Nve=p2,Dve=g2,Fve=jo,wve=m2,Lve=P0,Ive=M0,$ve=d2;class Bve extends Fve.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 Lve.ObjectAnnotation)continue;const g=m;m instanceof Nve.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Rve.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof bve.DeclareFields||m instanceof Ove.Joins||m instanceof Dve.Views||m instanceof Ive.Renames?o.push(...m.list):m instanceof Tve.Filter?u.push(m):m instanceof wve.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new $ve.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=Cve.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.filterCondition(f);(0,_ve.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)}}Um.RefinedSource=Bve;var Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.SourceQueryElement=void 0;const kve=We;class OD extends kve.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 OD&&n.errored){e=!1;break}return e}}Yu.SourceQueryElement=OD;var S_={},hx={};Object.defineProperty(hx,"__esModule",{value:!0}),hx.QuerySource=void 0;const Pve=jo;class Mve extends Pve.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)}}}hx.QuerySource=Mve;var y2={},Qm={};Object.defineProperty(Qm,"__esModule",{value:!0}),Qm.QueryBase=void 0;const jve=o2,Uve=We;class qve extends Uve.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,jve.detectAndRemovePartialStages)(e.pipeline,this)}}}Qm.QueryBase=qve,Object.defineProperty(y2,"__esModule",{value:!0}),y2.QueryArrow=void 0;const zve=le,Hve=jo,DQ=Yr,Qve=Qm;class Gve extends Qve.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 Hve.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,zve.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new DQ.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new DQ.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}}}y2.QueryArrow=Gve,Object.defineProperty(S_,"__esModule",{value:!0}),S_.SQArrow=void 0;const Wve=Yu,Vve=hx,Yve=y2;class Kve extends Wve.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 Yve.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 Vve.QuerySource(e);return this.has({asSource:n}),n}}S_.SQArrow=Kve;var __={},E2={},Ts={};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getStructFieldDef=Ts.getFinalStruct=Ts.opOutputStruct=void 0;const Xve=y0,Jve=Df,RD=le,FQ=Vr;function wQ(t,e,n){const r=FQ.ErrorFactory.isErrorStructDef(e)||(0,RD.structHasErrors)(e);(0,RD.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,RD.segmentHasErrors)(n);if(!r&&!i)try{return Jve.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1302
1302
  QUERY: ${(0,Xve.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...FQ.ErrorFactory.structDef,dialect:e.dialect}}Ts.opOutputStruct=wQ;function Zve(t,e,n){for(const r of n)e=wQ(t,e,r);return e}Ts.getFinalStruct=Zve;function eSe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ts.getStructFieldDef=eSe,Object.defineProperty(E2,"__esModule",{value:!0}),E2.QueryRefine=void 0;const tSe=Yr,nSe=Ts,rSe=Qm;class iSe extends rSe.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 tSe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,nSe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}E2.QueryRefine=iSe;var Gm={},A2={},lr={};Object.defineProperty(lr,"__esModule",{value:!0}),lr.timeResult=lr.resolution=lr.castDateToTimestamp=lr.castTimestampToDate=lr.castTo=lr.timeOffset=void 0;const sSe=le;function oSe(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}lr.timeOffset=oSe;function uSe(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,sSe.isAtomicFieldType)(n)&&(i.srcType=n),i}lr.castTo=uSe;function aSe(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}lr.castTimestampToDate=aSe;function lSe(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}lr.castDateToTimestamp=lSe;function cSe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}lr.resolution=cSe;function fSe(t,e){return e?{...t,timeframe:e}:t}lr.timeResult=fSe;var px={},cr={};Object.defineProperty(cr,"__esModule",{value:!0}),cr.errorFor=void 0;function xSe(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}cr.errorFor=xSe;var xt={},v2={};Object.defineProperty(v2,"__esModule",{value:!0}),v2.nullsafeNot=void 0;function dSe(t,e){return e===void 0||e==="!="||e==="!~"?{node:"not",e:{node:"coalesce",kids:{left:t,right:{node:"false"}}}}:t}v2.nullsafeNot=dSe;var an={};Object.defineProperty(an,"__esModule",{value:!0}),an.FT=void 0;const hSe=Ru;function gx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Rr{static in(e,n){return e?n.find(i=>Rr.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=>Rr.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,hSe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}an.FT=Rr,Rr.nullT=gx("null"),Rr.numberT=gx("number"),Rr.stringT=gx("string"),Rr.dateT=gx("date"),Rr.timestampT=gx("timestamp"),Rr.boolT=gx("boolean"),Rr.anyAtomicT=[Rr.numberT,Rr.stringT,Rr.dateT,Rr.timestampT,Rr.boolT],Rr.aggregateBoolT=gx("boolean","aggregate");var S2={};Object.defineProperty(S2,"__esModule",{value:!0}),S2.isGranularResult=void 0;function pSe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}S2.isGranularResult=pSe;var Ku={};Object.defineProperty(Ku,"__esModule",{value:!0}),Ku.isComparison=Ku.isEquality=Ku.getExprNode=void 0;function gSe(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}Ku.getExprNode=gSe;function LQ(t){return t==="="||t==="!="||t==="~"||t==="!~"}Ku.isEquality=LQ;function mSe(t){return LQ(t)||t===">="||t==="<="||t===">"||t==="<"}Ku.isComparison=mSe,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const Rn=le,_2=cr,IQ=v2,mx=an,C_=lr,$Q=S2,ySe=We,Wm=Ku;class ESe extends Error{}class BQ extends ySe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=mx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!mx.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 ${mx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return UQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Rn.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=BQ;class ND extends BQ{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[mx.FT.timestampT,mx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Rn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!mx.FT.typeEq(s,mx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,_2.errorFor)("illegal unit expression");let o;if((0,$Q.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,C_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,C_.timeResult)({dataType:"timestamp",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Rn.isDateUnit)(this.timeframe)?(0,C_.timeResult)({dataType:"date",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,C_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,_2.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}xt.ExprDuration=ND;function kQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function ASe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=ASe;function PQ(t,e,n,r){const i=(0,Rn.isTimeFieldType)(e.dataType),s=(0,Rn.isTimeFieldType)(r.dataType),o=(0,Wm.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=kQ(e,"timestamp"),a=kQ(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function MQ(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function vSe(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function SSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=(0,Wm.getExprNode)(n),u=Vm("boolean",i,s);if(u)return u;if(i.dataType==="sql native"||s.dataType==="sql native"){const c=i.dataType==="null"||s.dataType==="null",f=i.rawType&&i.rawType===s.rawType;if(!(c||f)){const x=Ym(e,i,r,s);if(x)return{...x,dataType:"boolean"}}}let l=PQ(e,i,n,s)||{node:o,kids:{left:i.value,right:s.value}};if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType!=="string"||s.dataType!=="string"){const c=MQ(i,s);if(c===void 0)throw new ESe("Incompatible types for match('~') operator");l=c}l=(0,IQ.nullsafeNot)(l,n);break}case"=":case"!=":{const c=vSe(i,n,s),f=l;c?l=c:l=(0,IQ.nullsafeNot)(MQ(i,s)||f,n);break}}return{dataType:"boolean",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function _Se(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vm("boolean",i,s);if(o)return o;const u=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),a=Ym(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=PQ(e,i,n,s)||{node:(0,Wm.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function jQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vm("number",i,s);if(o)return o;const u=Ym(e,i,r,s);if(u)return u;const a=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,_2.errorFor)("numbers required")}function CSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Ym(e,i,r,s);if(o)return o;const u=(0,Rn.isTimeFieldType)(i.dataType),a=Vm(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,$Q.isGranularResult)(i))l=new ND(r,i.timeframe);else if(i.dataType==="date")l=new ND(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,_2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return jQ(t,e,n,r)}function UQ(t,e,n,r){if((0,Wm.isEquality)(n))return SSe(t,e,n,r);if((0,Wm.isComparison)(n))return _Se(t,e,n,r);if(n==="+"||n==="-")return CSe(t,e,n,r);if(n==="*")return jQ(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=Ym(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Vm("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={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,_2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,_2.errorFor)("applybinary bad operator")}xt.applyBinary=UQ;function Vm(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Rn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,Rn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Ym(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Rn.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,Rn.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,i;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(px,"__esModule",{value:!0}),px.ExprIdReference=void 0;const bSe=le,TSe=cr,OSe=xt;class RSe extends OSe.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,bSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,TSe.errorFor)(n.error)}}px.ExprIdReference=RSe,Object.defineProperty(A2,"__esModule",{value:!0}),A2.NamedSource=void 0;const DD=le,NSe=jo,DSe=Vr,FSe=lr,FD=We,wSe=px,LSe=d2;class ISe extends NSe.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 FD.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof FD.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 FD.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,DD.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 wSe.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 LSe.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,DD.isCastType)(f.type)&&(p=(0,FSe.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,DD.paramHasValue)(n[a])?o[a]={...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=DSe.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}}A2.NamedSource=ISe;var Km={},b_={};Object.defineProperty(b_,"__esModule",{value:!0}),b_.QueryHeadStruct=void 0;const $Se=le,BSe=jo,kSe=A2;class PSe extends BSe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,$Se.refIsStructDef)(this.fromRef))return this.fromRef;const n=new kSe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}b_.QueryHeadStruct=PSe,Object.defineProperty(Km,"__esModule",{value:!0}),Km.QueryReference=void 0;const wD=Vr,MSe=We,jSe=b_,USe=le,qSe=Ts;class zSe extends MSe.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:wD.ErrorFactory.structDef,outputStruct:wD.ErrorFactory.structDef,query:wD.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new jSe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,qSe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,USe.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}}Km.QueryReference=zSe,Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.SQReference=void 0;const HSe=Yu,QSe=hx,GSe=A2,qQ=Km;class WSe extends HSe.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 qQ.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 qQ.QueryReference(this.ref);this.asSource=new QSe.QuerySource(n)}else if(e.type==="struct")this.asSource=new GSe.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}}Gm.SQReference=WSe,Object.defineProperty(__,"__esModule",{value:!0}),__.SQRefine=void 0;const VSe=Yu,YSe=hx,KSe=E2,XSe=Gm;class JSe extends VSe.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 XSe.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 KSe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new YSe.QuerySource(e);return this.has({queryAsSource:n}),n}}}__.SQRefine=JSe;var T_={},Xm={};Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.QueryRaw=void 0;const ZSe=le,e4e=We;class t4e extends e4e.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,ZSe.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}}Xm.QueryRaw=t4e;var Jm={},O_={};Object.defineProperty(O_,"__esModule",{value:!0}),O_.makeSQLBlock=void 0;const n4e=le,r4e=It;function i4e(t,e){const n={name:`md5:/${e||"$default"}//${s4e(t)}`,select:t};return e&&(n.connection=e),n}O_.makeSQLBlock=i4e;function s4e(t){const e=t.map(n=>(0,n4e.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,r4e.generateHash)(e.join(";"))}Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.SQLSource=void 0;const o4e=O_,u4e=jo,R_=Vr;class a4e extends u4e.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,o4e.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 R_.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"),R_.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(`
1303
- `)),R_.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"),R_.ErrorFactory.structDef}}Jm.SQLSource=a4e,Object.defineProperty(T_,"__esModule",{value:!0}),T_.SQSource=void 0;const l4e=Yu,c4e=Xm,f4e=Jm;class x4e extends l4e.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 f4e.SQLSource){const e=new c4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}T_.SQSource=x4e;var N_={};Object.defineProperty(N_,"__esModule",{value:!0}),N_.SQExtend=void 0;const d4e=Um,h4e=Yu;class p4e extends h4e.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 d4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}N_.SQExtend=p4e;var D_={},Zm={},e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.BinaryBoolean=void 0;const zQ=le,g4e=cr,m4e=an,y4e=Ku,E4e=xt;class A4e extends E4e.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=[m4e.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,zQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,zQ.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,y4e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,g4e.errorFor)("logial required boolean")}}e3.BinaryBoolean=A4e,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.ExprCompare=void 0;const Vt=an,v4e=e3,S4e={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class _4e extends v4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=S4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Zm.ExprCompare=_4e;var t3={},C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprTime=void 0;const C4e=le,b4e=xt;class LD extends b4e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,C4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new LD(e,r,n.expressionType)}}C2.ExprTime=LD;var j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.Range=void 0;const HQ=le,T4e=cr,O4e=xt;class R4e extends O4e.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,HQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,HQ.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,T4e.errorFor)("a range is not a value")}}j0.Range=R4e,Object.defineProperty(t3,"__esModule",{value:!0}),t3.ExprGranularTime=void 0;const QQ=le,N4e=cr,GQ=an,WQ=lr,D4e=xt,F_=C2,VQ=j0;class F4e extends D4e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[GQ.FT.timestampT,GQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,QQ.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,QQ.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,N4e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=F_.ExprTime.fromValue("timestamp",n),a=new F_.ExprTime("timestamp",(0,WQ.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new VQ.Range(u,a)}const i=new F_.ExprTime("date",n.value,n.expressionType),s=(0,WQ.timeOffset)("date",n.value,"+",r,this.units),o=new F_.ExprTime("date",s,n.expressionType);return new VQ.Range(i,o)}}t3.ExprGranularTime=F4e,Object.defineProperty(D_,"__esModule",{value:!0}),D_.Apply=void 0;const w4e=Zm,L4e=S2,YQ=t3;class I4e extends w4e.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,L4e.isGranularResult)(r)&&(n=new YQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof YQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}D_.Apply=I4e;var b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryNumeric=void 0;const $4e=an,B4e=xt;class k4e extends B4e.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=[$4e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}b2.BinaryNumeric=k4e;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.Boolean=void 0;const P4e=xt,M4e=an;let j4e=class extends P4e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...M4e.FT.boolT,value:{node:this.value}}}};w_.Boolean=j4e;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.FunctionOrdering=U0.FunctionOrderBy=void 0;const ID=le,KQ=We,U4e=px;class q4e extends KQ.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"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,ID.expressionIsAggregate)(n.expressionType)||((0,ID.expressionIsScalar)(n.expressionType)?(!(this.field instanceof U4e.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")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,ID.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}U0.FunctionOrderBy=q4e;class z4e extends KQ.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))}}U0.FunctionOrdering=z4e;var L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprAddSub=void 0;const H4e=b2;class Q4e extends H4e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}L_.ExprAddSub=Q4e;var yl={},ht={},n3={};Object.defineProperty(n3,"__esModule",{value:!0}),n3.ReferenceField=void 0;const XQ=Wr;class G4e extends XQ.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:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof XQ.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"}}}n3.ReferenceField=G4e;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.typecheckGroupBy=Gn.typecheckAggregate=Gn.typecheckCalculate=Gn.typecheckDeclare=Gn.typecheckMeasure=Gn.typecheckDimension=Gn.typecheckIndex=Gn.typecheckProject=void 0;const Nn=Ru;function W4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckProject=W4e;function V4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Nn.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`)}}Gn.typecheckIndex=V4e;function Y4e(t,e){if(!(0,Nn.expressionIsScalar)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckDimension=Y4e;function K4e(t,e){if(!(0,Nn.expressionIsAggregate)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckMeasure=K4e;function X4e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Nn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Gn.typecheckDeclare=X4e;function J4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Nn.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?`)}}Gn.typecheckCalculate=J4e;function Z4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckAggregate=Z4e;function e_e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckGroupBy=e_e,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 t_e=n3,n_e=bs,JQ=We,ZQ=Gr,q0=Gn;class Ji extends JQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=ZQ.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 t_e.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=Ji;class r_e extends Ji{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=r_e;class i_e extends Ji{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=i_e;class s_e extends Ji{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=s_e;class o_e extends Ji{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=o_e;class u_e extends Ji{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,q0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=u_e;class $D extends Ji{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,q0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return $D.indexOutputName(this.path)}}ht.IndexFieldReference=$D;class a_e extends Ji{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,q0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=a_e;class l_e extends Ji{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,q0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=l_e;class c_e extends Ji{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,q0.typecheckProject)(e,this)}}ht.ProjectFieldReference=c_e;class f_e extends Ji{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,q0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=f_e;class x_e extends Ji{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,q0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=x_e;class d_e extends Ji{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,q0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=d_e;class h_e extends Ji{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=h_e;class p_e extends JQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=ZQ.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=p_e;class g_e extends n_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=g_e,Object.defineProperty(yl,"__esModule",{value:!0}),yl.ExprAggregateFunction=void 0;const eG=le,m_e=It,r3=cr,y_e=Yr,E_e=dx,A_e=an,v_e=ht,S_e=xt,__e=Wr,C_e=px;class b_e extends S_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[A_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,eG.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:x.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"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=>T_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof E_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,r3.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,r3.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,r3.errorFor)("agggregate without expression");if((0,eG.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,r3.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=kD(a,c),p=PD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=O_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={node:"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,r3.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...BD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...BD(e,r))}return n}}yl.ExprAggregateFunction=b_e;function T_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 BD(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 y_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 __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")};for(const i of(0,m_e.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=BD(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([]);return n}function kD(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 PD(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 O_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=kD(i,e),o=PD(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=kD(l,e),f=PD(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 v_e.FieldReference?`${n.refString}.${r}()`:n instanceof C_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 I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprAlternationTree=void 0;const tG=le,R_e=cr,N_e=xt;class D_e extends N_e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,tG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,tG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,R_e.errorFor)("no value from alternation tree")}}I_.ExprAlternationTree=D_e;var T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprAsymmetric=void 0;const F_e=yl;class w_e extends F_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}`}}}}T2.ExprAsymmetric=w_e;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprAvg=void 0;const L_e=T2;class I_e extends L_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}$_.ExprAvg=I_e;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprCast=void 0;const $_e=lr,B_e=xt;class k_e extends B_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.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}B_.ExprCast=k_e;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprCoalesce=void 0;const nG=Ru,rG=an,P_e=xt;class M_e extends P_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=rG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(rG.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,nG.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,nG.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}k_.ExprCoalesce=M_e;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprCount=void 0;const j_e=yl;class U_e extends j_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={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}P_.ExprCount=U_e;var M_={};Object.defineProperty(M_,"__esModule",{value:!0}),M_.ExprCountDistinct=void 0;const j_=an,q_e=yl;class z_e extends q_e.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[j_.FT.numberT,j_.FT.stringT,j_.FT.dateT,j_.FT.timestampT]}}M_.ExprCountDistinct=z_e;var U_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const H_e=We,Q_e=On;class G_e extends H_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Q_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=G_e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.PartitionBy=void 0;const W_e=We;class V_e extends W_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}O2.PartitionBy=V_e;var i3={},H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.FieldName=void 0;const Y_e=We;class K_e extends Y_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])}}H0.FieldName=K_e,Object.defineProperty(i3,"__esModule",{value:!0}),i3.ExprFunc=void 0;const ro=le,Xu=cr,X_e=dx,J_e=xt,Z_e=H0,iG=It;class e5e extends J_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(O=>O.getExpression(e));if(this.isRaw){let O="scalar",I;const j=[`${this.name}(`];for(const G of a)O=(0,ro.maxExpressionType)(O,G.expressionType),I?j.push(","):I=G.dataType,j.push(G.value);return j.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:O,value:(0,iG.composeSQLExpr)(j),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(G=>G.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,Xu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Xu.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 O=this.source.getField(e).found;if(O){const I=O.typeDesc();if((0,ro.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:{node:"field",path:this.source.path},evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(O instanceof X_e.StructSpaceFieldBase)){const j=`Aggregate source cannot be a ${I.dataType}`;return this.log(j),(0,Xu.errorFor)(j)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Xu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=t5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(O=>O.dataType).join(", ")})`),(0,Xu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const O of m){const I=O.argIndex-(c?1:0),j=(0,ro.expressionIsScalar)(O.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualExpressionType}`)}for(const O of g){const I=O.argIndex-(c?1:0),j=O.maxEvalSpace==="literal"?"literal":O.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualEvalSpace}`)}for(const O of y){const I=O.argIndex-(c?1:0);this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(O=>O.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(O=>O.dataType).join(", ")}) with source`),(0,Xu.errorFor)("cannot call with source");const v={node:"function_call",overload:p,name:this.name,kids:{args:x.map(O=>O.value)},expressionType:A,structPath:f};let S=v;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 O=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(O||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||O){const I=C.supportsOrderBy!=="only_default",j=n.orderBys.flatMap(Q=>O?Q.getAnalyticOrderBy(e):Q.getAggregateOrderBy(e,I));v.kids.orderBy=j}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const O=[];for(const I of n.partitionBys)for(const j of I.partitionFields){const Q=j.getField(e);Q.found===void 0?j.log(`${j.refString} is not defined`):(0,ro.expressionIsAnalytic)(Q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(Q.found.typeDesc().expressionType)?j.log("Partition expression must be scalar or aggregate"):O.push(j.nameString)}v.partitionBy=O}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,Xu.errorFor)("sql_function used without enabling")}const O=x[0].value;if(O.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=O.literal,j=n5e(I),Q=j.filter(P=>P.type==="interpolation"&&P.name.includes(".")).map(P=>P.type==="interpolation"?`\${${P.name}}`:`\${${P.value}}`);if(Q.length>0){const P=Q.length===1?`'.' paths are not yet supported in sql interpolations, found ${Q.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${Q.join(", ")})`;return this.log(P),(0,Xu.errorFor)(`${P}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const G=[];for(const P of j)if(P.type==="string")G.push(P.value);else if(P.name==="TABLE")G.push({node:"source-reference"});else{const W=new Z_e.FieldName(P.name);this.has({name:W});const oe=e.lookup([W]);if(oe.found===void 0)return this.log(`Invalid interpolation: ${oe.error}`),(0,Xu.errorFor)("invalid interpolated field");oe.found.refType==="parameter"?G.push({node:"parameter",path:[P.name]}):G.push({node:"field",path:[P.name]})}S=(0,iG.composeSQLExpr)(G)}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Xu.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(O=>O.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:S,evalSpace:R}}}i3.ExprFunc=e5e;function t5e(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,ro.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 n5e(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(U_,"__esModule",{value:!0}),U_.ExprProps=void 0;const r5e=le,i5e=cr,s5e=an,o5e=U0,u5e=z0,a5e=O2,l5e=xt,c5e=i3;class f5e extends l5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=s5e.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,r5e.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:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,i5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof a5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof u5e.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 o5e.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 c5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}U_.ExprProps=f5e;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ExprLogicalOp=void 0;const x5e=e3,sG=an;class d5e extends x5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[sG.FT.boolT,sG.FT.aggregateBoolT]}}q_.ExprLogicalOp=d5e;var z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.ExprMax=void 0;const H_=an,h5e=yl;class p5e extends h5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[H_.FT.numberT,H_.FT.stringT,H_.FT.dateT,H_.FT.timestampT]}returns(e){return e.dataType}}z_.ExprMax=p5e;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ExprMin=void 0;const G_=an,g5e=yl;class m5e extends g5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[G_.FT.numberT,G_.FT.stringT,G_.FT.dateT,G_.FT.timestampT]}returns(e){return e.dataType}}Q_.ExprMin=m5e;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprMinus=void 0;const y5e=cr,oG=an,E5e=xt;class A5e extends E5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[oG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return oG.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,y5e.errorFor)("negate requires number")}}W_.ExprMinus=A5e;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprMulDiv=void 0;const v5e=b2;class S5e extends v5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}V_.ExprMulDiv=S5e;var Y_={},s3={};Object.defineProperty(s3,"__esModule",{value:!0}),s3.Unary=void 0;const _5e=xt;class C5e extends _5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}s3.Unary=C5e,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprNot=void 0;const uG=an,b5e=s3,T5e=v2;class O5e extends b5e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[uG.FT.boolT,uG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,T5e.nullsafeNot)(n.value):{node:"false"}}}}Y_.ExprNot=O5e;var K_={};Object.defineProperty(K_,"__esModule",{value:!0}),K_.ExprNow=void 0;const R5e=xt;class N5e extends R5e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}K_.ExprNow=N5e;var X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.ExprNULL=void 0;const D5e=xt;class F5e extends D5e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}X_.ExprNULL=F5e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprNumber=void 0;const w5e=an,L5e=xt;class I5e extends L5e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...w5e.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}J_.ExprNumber=I5e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprParens=void 0;const $5e=xt;class B5e extends $5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Z_.ExprParens=B5e;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.ExprRegEx=void 0;const k5e=xt;class P5e extends k5e.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}e5.ExprRegEx=P5e;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.ExprString=void 0;const M5e=xt,j5e=an;class U5e extends M5e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...j5e.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}t5.ExprString=U5e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.ExprSum=void 0;const q5e=T2;class z5e extends q5e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}n5.ExprSum=z5e;var r5={};Object.defineProperty(r5,"__esModule",{value:!0}),r5.ExprTimeExtract=void 0;const yx=le,Q0=cr,MD=xt,H5e=j0;class o3 extends MD.ExpressionDef{static extractor(e){const n=o3.pluralMap[e];if(n)return n;if((0,yx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=o3.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Q0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof H5e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,yx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,yx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Q0.errorFor)("extract from error").value};if(!(0,yx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Q0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,yx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Q0.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,MD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,MD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Q0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Q0.errorFor)(`${n} civil extraction`)):(0,yx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:(this.log(`Cannot extract ${n} from a range`),(0,Q0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,yx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Q0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}r5.ExprTimeExtract=o3,o3.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var i5={},qo={},s5={};Object.defineProperty(s5,"__esModule",{value:!0}),s5.QueryInputSpace=void 0;const Q5e=Xi,G5e=Hm,W5e=x2;class V5e extends W5e.RefinedSpace{constructor(e,n){const r=new G5e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Q5e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}s5.QueryInputSpace=V5e;var Y5e=F&&F.__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]}),K5e=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),X5e=F&&F.__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)&&Y5e(e,t,n);return K5e(e,t),e};Object.defineProperty(qo,"__esModule",{value:!0}),qo.ReduceFieldSpace=qo.QuerySpace=qo.QueryOperationSpace=void 0;const o5=X5e(le),jD=B0,J5e=H0,Z5e=Wr,eCe=ht,tCe=x2,nCe=zm,rCe=Yr,iCe=s5;class aG extends tCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new iCe.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 rCe.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();o5.isAtomicFieldType(l.dataType)&&o5.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)}}qo.QueryOperationSpace=aG;class lG extends aG{addRefineFromFields(e){var n;if(o5.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new J5e.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 nCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof eCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Z5e.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)&&!oCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(o5.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,jD.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,jD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,jD.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}}qo.QuerySpace=lG;class sCe extends lG{constructor(){super(...arguments),this.segmentType="reduce"}}qo.ReduceFieldSpace=sCe;function oCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(i5,"__esModule",{value:!0}),i5.ExprUngroup=void 0;const cG=le,UD=cr,uCe=qo,aCe=an,lCe=xt;class cCe extends lCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=aCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,cG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,UD.errorFor)("ungrouped scalar");if((0,cG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,UD.errorFor)("doubly-ungrouped aggregate");const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof uCe.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,UD.errorFor)("ungrouped type check")}}i5.ExprUngroup=cCe;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.ForRange=void 0;const fG=Ru,qD=cr,xG=an,a5=lr,fCe=xt,l5=C2,dG=j0;class xCe extends fCe.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=[xG.FT.timestampT,xG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,qD.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,fG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,fG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,qD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,a5.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,a5.timeOffset)("date",i.value,"+",o.value,u),g=new l5.ExprTime("date",m);return new dG.Range(p,g).apply(e,n,r)}const l=l5.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,a5.castDateToTimestamp)(f),c=new l5.ExprTime("timestamp",f,i.expressionType)}const x=(0,a5.timeOffset)("timestamp",f,"+",o.value,u),h=new l5.ExprTime("timestamp",x,i.expressionType);return new dG.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,qD.errorFor)("range has no value")}}u5.ForRange=xCe;var fr={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0});class Ex extends Error{}class dCe extends Ex{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class hCe extends Ex{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class pCe extends Ex{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class u3 extends Ex{}class hG extends Ex{constructor(e){super(`Invalid unit ${e}`)}}class io extends Ex{}class G0 extends Ex{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Os="long",zD={year:ke,month:ke,day:ke},pG={year:ke,month:zo,day:ke},gCe={year:ke,month:zo,day:ke,weekday:zo},gG={year:ke,month:Os,day:ke},mG={year:ke,month:Os,day:ke,weekday:Os},yG={hour:ke,minute:ke},EG={hour:ke,minute:ke,second:ke},AG={hour:ke,minute:ke,second:ke,timeZoneName:zo},vG={hour:ke,minute:ke,second:ke,timeZoneName:Os},SG={hour:ke,minute:ke,hourCycle:"h23"},_G={hour:ke,minute:ke,second:ke,hourCycle:"h23"},CG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},bG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},TG={year:ke,month:ke,day:ke,hour:ke,minute:ke},OG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},RG={year:ke,month:zo,day:ke,hour:ke,minute:ke},NG={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},mCe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},DG={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:zo},FG={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},wG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},LG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function St(t){return typeof t>"u"}function Ax(t){return typeof t=="number"}function c5(t){return typeof t=="number"&&t%1===0}function yCe(t){return typeof t=="string"}function ECe(t){return Object.prototype.toString.call(t)==="[object Date]"}function IG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ACe(t){return Array.isArray(t)?t:[t]}function $G(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 vCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function R2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function El(t,e,n){return c5(t)&&t>=e&&t<=n}function SCe(t,e){return t-e*Math.floor(t/e)}function Mn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function W0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function vx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function HD(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function QD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function a3(t){return t%4===0&&(t%100!==0||t%400===0)}function l3(t){return a3(t)?366:365}function f5(t,e){const n=SCe(e-1,12)+1,r=t+(e-n)/12;return n===2?a3(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function GD(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function x5(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 WD(t){return t>99?t:t>60?1900+t:2e3+t}function BG(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 d5(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 kG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function h5(t,e){const n={};for(const r in t)if(R2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=kG(i)}return n}function c3(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}${Mn(n,2)}:${Mn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Mn(n,2)}${Mn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function p5(t){return vCe(t,["hour","minute","second","millisecond"])}const PG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,_Ce=["January","February","March","April","May","June","July","August","September","October","November","December"],MG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function jG(t){switch(t){case"narrow":return[...CCe];case"short":return[...MG];case"long":return[..._Ce];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 UG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],qG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],bCe=["M","T","W","T","F","S","S"];function zG(t){switch(t){case"narrow":return[...bCe];case"short":return[...qG];case"long":return[...UG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const HG=["AM","PM"],TCe=["Before Christ","Anno Domini"],OCe=["BC","AD"],RCe=["B","A"];function QG(t){switch(t){case"narrow":return[...RCe];case"short":return[...OCe];case"long":return[...TCe];default:return null}}function NCe(t){return HG[t.hour<12?0:1]}function DCe(t,e){return zG(e)[t.weekday-1]}function FCe(t,e){return jG(e)[t.month-1]}function wCe(t,e){return QG(e)[t.year<0?0:1]}function LCe(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 GG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ICe={D:zD,DD:pG,DDD:gG,DDDD:mG,t:yG,tt:EG,ttt:AG,tttt:vG,T:SG,TT:_G,TTT:CG,TTTT:bG,f:TG,ff:RG,fff:DG,ffff:wG,F:OG,FF:NG,FFF:FG,FFFF:LG};class es{static create(e,n={}){return new es(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 ICe[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 Mn(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?NCe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?FCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?DCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=es.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?wCe(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 GG(es.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=es.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 GG(s,i(u))}}class Ho{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let N2=class{get type(){throw new G0}get name(){throw new G0}get ianaName(){return this.name}get isUniversal(){throw new G0}offsetName(e,n){throw new G0}formatOffset(e,n){throw new G0}offset(e){throw new G0}equals(e){throw new G0}get isValid(){throw new G0}},VD=null;class g5 extends N2{static get instance(){return VD===null&&(VD=new g5),VD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return BG(e,n,r)}formatOffset(e,n){return c3(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let m5={};function $Ce(t){return m5[t]||(m5[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"})),m5[t]}const BCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function kCe(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 PCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=BCe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let y5={};class Ju extends N2{static create(e){return y5[e]||(y5[e]=new Ju(e)),y5[e]}static resetCache(){y5={},m5={}}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=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return BG(e,n,r,this.name)}formatOffset(e,n){return c3(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=$Ce(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?PCe(r,n):kCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=GD({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let YD=null;class Kr extends N2{static get utcInstance(){return YD===null&&(YD=new Kr(0)),YD}static instance(e){return e===0?Kr.utcInstance:new Kr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Kr(d5(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${c3(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${c3(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return c3(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 WG extends N2{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 V0(t,e){if(St(t)||t===null)return e;if(t instanceof N2)return t;if(yCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Kr.utcInstance:Kr.parseSpecifier(n)||Ju.create(t)}else return Ax(t)?Kr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new WG(t)}let VG=()=>Date.now(),YG="system",KG=null,XG=null,JG=null,ZG;class jn{static get now(){return VG}static set now(e){VG=e}static set defaultZone(e){YG=e}static get defaultZone(){return V0(YG,g5.instance)}static get defaultLocale(){return KG}static set defaultLocale(e){KG=e}static get defaultNumberingSystem(){return XG}static set defaultNumberingSystem(e){XG=e}static get defaultOutputCalendar(){return JG}static set defaultOutputCalendar(e){JG=e}static get throwOnInvalid(){return ZG}static set throwOnInvalid(e){ZG=e}static resetCaches(){dn.resetCache(),Ju.resetCache()}}let eW={};function MCe(t,e={}){const n=JSON.stringify([t,e]);let r=eW[n];return r||(r=new Intl.ListFormat(t,e),eW[n]=r),r}let KD={};function XD(t,e={}){const n=JSON.stringify([t,e]);let r=KD[n];return r||(r=new Intl.DateTimeFormat(t,e),KD[n]=r),r}let JD={};function jCe(t,e={}){const n=JSON.stringify([t,e]);let r=JD[n];return r||(r=new Intl.NumberFormat(t,e),JD[n]=r),r}let ZD={};function UCe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=ZD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),ZD[i]=s),s}let f3=null;function qCe(){return f3||(f3=new Intl.DateTimeFormat().resolvedOptions().locale,f3)}function zCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=XD(t).resolvedOptions()}catch{n=XD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function HCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function QCe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function GCe(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 E5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function WCe(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 VCe{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=jCe(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):QD(e,3);return Mn(n,this.padTo)}}}class YCe{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&&Ju.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=XD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class KCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&IG()&&(this.rtf=UCe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):LCe(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||jn.defaultLocale,o=s||(i?"en-US":qCe()),u=n||jn.defaultNumberingSystem,a=r||jn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){f3=null,KD={},JD={},ZD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=zCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=HCe(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=WCe(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 E5(this,e,r,jG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=QCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return E5(this,e,r,zG,()=>{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]=GCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return E5(this,void 0,e,()=>HG,()=>{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 E5(this,e,n,QG,()=>{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 VCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new YCe(e,this.intl,n)}relFormatter(e={}){return new KCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return MCe(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 D2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function F2(...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 w2(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 tW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=W0(e[n+i]);return[r,null,n+i]}}const nW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,XCe=`(?:${nW.source}?(?:\\[(${PG.source})\\])?)?`,e8=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,rW=RegExp(`${e8.source}${XCe}`),t8=RegExp(`(?:T${rW.source})?`),JCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ZCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ebe=/(\d{4})-?(\d{3})/,tbe=tW("weekYear","weekNumber","weekDay"),nbe=tW("year","ordinal"),rbe=/(\d{4})-(\d\d)-(\d\d)/,iW=RegExp(`${e8.source} ?(?:${nW.source}|(${PG.source}))?`),ibe=RegExp(`(?: ${iW.source})?`);function L2(t,e,n){const r=t[e];return St(r)?n:W0(r)}function sbe(t,e){return[{year:L2(t,e),month:L2(t,e+1,1),day:L2(t,e+2,1)},null,e+3]}function I2(t,e){return[{hours:L2(t,e,0),minutes:L2(t,e+1,0),seconds:L2(t,e+2,0),milliseconds:HD(t[e+3])},null,e+4]}function x3(t,e){const n=!t[e]&&!t[e+1],r=d5(t[e+1],t[e+2]),i=n?null:Kr.instance(r);return[{},i,e+3]}function d3(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const obe=RegExp(`^T?${e8.source}$`),ube=/^-?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 abe(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(vx(n)),months:x(vx(r)),weeks:x(vx(i)),days:x(vx(s)),hours:x(vx(o)),minutes:x(vx(u)),seconds:x(vx(a),a==="-0"),milliseconds:x(HD(l),f)}]}const lbe={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 n8(t,e,n,r,i,s,o){const u={year:e.length===2?WD(W0(e)):W0(e),month:MG.indexOf(n)+1,day:W0(r),hour:W0(i),minute:W0(s)};return o&&(u.second=W0(o)),t&&(u.weekday=t.length>3?UG.indexOf(t)+1:qG.indexOf(t)+1),u}const cbe=/^(?:(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 fbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=n8(e,i,r,n,s,o,u);let h;return a?h=lbe[a]:l?h=0:h=d5(c,f),[x,new Kr(h)]}function xbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const dbe=/^(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$/,hbe=/^(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$/,pbe=/^(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 sW(t){const[,e,n,r,i,s,o,u]=t;return[n8(e,i,r,n,s,o,u),Kr.utcInstance]}function gbe(t){const[,e,n,r,i,s,o,u]=t;return[n8(e,u,n,r,i,s,o),Kr.utcInstance]}const mbe=D2(JCe,t8),ybe=D2(ZCe,t8),Ebe=D2(ebe,t8),Abe=D2(rW),oW=F2(sbe,I2,x3,d3),vbe=F2(tbe,I2,x3,d3),Sbe=F2(nbe,I2,x3,d3),_be=F2(I2,x3,d3);function Cbe(t){return w2(t,[mbe,oW],[ybe,vbe],[Ebe,Sbe],[Abe,_be])}function bbe(t){return w2(xbe(t),[cbe,fbe])}function Tbe(t){return w2(t,[dbe,sW],[hbe,sW],[pbe,gbe])}function Obe(t){return w2(t,[ube,abe])}const Rbe=F2(I2);function Nbe(t){return w2(t,[obe,Rbe])}const Dbe=D2(rbe,ibe),Fbe=D2(iW),wbe=F2(I2,x3,d3);function Lbe(t){return w2(t,[Dbe,oW],[Fbe,wbe])}const Ibe="Invalid Duration",uW={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}},$be={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},...uW},so=146097/400,$2=146097/4800,Bbe={years:{quarters:4,months:12,weeks:so/7,days:so,hours:so*24,minutes:so*24*60,seconds:so*24*60*60,milliseconds:so*24*60*60*1e3},quarters:{months:3,weeks:so/28,days:so/4,hours:so*24/4,minutes:so*24*60/4,seconds:so*24*60*60/4,milliseconds:so*24*60*60*1e3/4},months:{weeks:$2/7,days:$2,hours:$2*24,minutes:$2*24*60,seconds:$2*24*60*60,milliseconds:$2*24*60*60*1e3},...uW},Sx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],kbe=Sx.slice(0).reverse();function _x(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 _t(r)}function Pbe(t){return t<0?Math.floor(t):Math.ceil(t)}function aW(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?Pbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Mbe(t,e){kbe.reduce((n,r)=>St(e[r])?n:(n&&aW(t,e,n,e,r),r),null)}class _t{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?Bbe:$be,this.isLuxonDuration=!0}static fromMillis(e,n){return _t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new io(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:h5(e,_t.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Ax(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Obe(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=Nbe(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the Duration is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new pCe(r);return new _t({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 hG(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?es.create(this.loc,r).formatDurationFromString(this,e):Ibe}toHuman(e={}){const n=Sx.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+=QD(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=_t.fromDurationLike(e),r={};for(const i of Sx)(R2(n.values,i)||R2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return _x(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=_t.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]=kG(e(this.values[r],r));return _x(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...h5(e,_t.normalizeUnit)};return _x(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),_x(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Mbe(this.matrix,e),_x(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>_t.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of Sx)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;Ax(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)Sx.indexOf(l)>Sx.indexOf(o)&&aW(this.matrix,i,l,n,o)}else Ax(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 _x(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 _x(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 Sx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const h3="Invalid Interval";function jbe(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 io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new hCe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=y3(e),i=y3(n),s=jbe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=y3(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=y3(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=_t.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=_t.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(y3).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=_t.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()})`:h3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:h3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:h3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:h3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:h3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let p3=class{static hasDST(e=jn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return V0(e,jn.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:IG()}}};function lW(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(_t.fromMillis(r).as("days"))}function Ube(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=lW(u,a);return(l-l%7)/7}],["days",lW]],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 qbe(t,e,n,r){let[i,s,o,u]=Ube(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=_t.fromObject(s,r);return l.length>0?_t.fromMillis(a,r).shiftTo(...l).plus(c):c}const r8={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},cW={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]},zbe=r8.hanidec.replace(/[\[|\]]/g,"").split("");function Hbe(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(r8.hanidec)!==-1)e+=zbe.indexOf(t[n]);else for(const i in cW){const[s,o]=cW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Qo({numberingSystem:t},e=""){return new RegExp(`${r8[t||"latn"]}${e}`)}const Qbe="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(Hbe(n))}}const fW="[  ]",xW=new RegExp(fW,"g");function Gbe(t){return t.replace(/\./g,"\\.?").replace(xW,fW)}function dW(t){return t.replace(/\./g,"").replace(xW," ").toLowerCase()}function Go(t,e){return t===null?null:{regex:RegExp(t.map(Gbe).join("|")),deser:([n])=>t.findIndex(r=>dW(n)===dW(r))+e}}function hW(t,e){return{regex:t,deser:([,n,r])=>d5(n,r),groups:e}}function i8(t){return{regex:t,deser:([e])=>e}}function Wbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Vbe(t,e){const n=Qo(e),r=Qo(e,"{2}"),i=Qo(e,"{3}"),s=Qo(e,"{4}"),o=Qo(e,"{6}"),u=Qo(e,"{1,2}"),a=Qo(e,"{1,3}"),l=Qo(e,"{1,6}"),c=Qo(e,"{1,9}"),f=Qo(e,"{2,4}"),x=Qo(e,"{4,6}"),h=g=>({regex:RegExp(Wbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Go(e.eras("short",!1),0);case"GG":return Go(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,WD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Go(e.months("short",!0,!1),1);case"MMMM":return Go(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Go(e.months("short",!1,!1),1);case"LLLL":return Go(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return i8(c);case"uu":return i8(u);case"uuu":return $t(n);case"a":return Go(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,WD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Go(e.weekdays("short",!1,!1),1);case"EEEE":return Go(e.weekdays("long",!1,!1),1);case"ccc":return Go(e.weekdays("short",!0,!1),1);case"cccc":return Go(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return hW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return hW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return i8(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Qbe};return m.token=t,m}const Ybe={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 Kbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Ybe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Xbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Jbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(R2(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 Zbe(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=Ju.create(t.z)),St(t.Z)||(n||(n=new Kr(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=HD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let s8=null;function eTe(){return s8||(s8=st.fromMillis(1555555555555)),s8}function tTe(t,e){if(t.literal)return t;const n=es.macroTokenToFormatOpts(t.val);if(!n)return t;const s=es.create(e,n).formatDateTimeParts(eTe()).map(o=>Kbe(o,e,n));return s.includes(void 0)?t:s}function nTe(t,e){return Array.prototype.concat(...t.map(n=>tTe(n,e)))}function pW(t,e,n){const r=nTe(es.parseFormat(n),t),i=r.map(o=>Vbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Xbe(i),a=RegExp(o,"i"),[l,c]=Jbe(e,a,u),[f,x,h]=c?Zbe(c):[null,null,void 0];if(R2(c,"a")&&R2(c,"H"))throw new u3("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 rTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=pW(t,e,n);return[r,i,s,o]}const gW=[0,31,59,90,120,151,181,212,243,273,304,334],mW=[0,31,60,91,121,152,182,213,244,274,305,335];function oo(t,e){return new Ho("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function yW(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 EW(t,e,n){return n+(a3(t)?mW:gW)[e-1]}function AW(t,e){const n=a3(t)?mW:gW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function o8(t){const{year:e,month:n,day:r}=t,i=EW(e,n,r),s=yW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=x5(u)):o>x5(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...p5(t)}}function vW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=yW(e,1,4),s=l3(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=l3(u)):o>s?(u=e+1,o-=l3(e)):u=e;const{month:a,day:l}=AW(u,o);return{year:u,month:a,day:l,...p5(t)}}function u8(t){const{year:e,month:n,day:r}=t,i=EW(e,n,r);return{year:e,ordinal:i,...p5(t)}}function SW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=AW(e,n);return{year:e,month:r,day:i,...p5(t)}}function iTe(t){const e=c5(t.weekYear),n=El(t.weekNumber,1,x5(t.weekYear)),r=El(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function sTe(t){const e=c5(t.year),n=El(t.ordinal,1,l3(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function _W(t){const e=c5(t.year),n=El(t.month,1,12),r=El(t.day,1,f5(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function CW(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=El(e,0,23)||e===24&&n===0&&r===0&&i===0,o=El(n,0,59),u=El(r,0,59),a=El(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const a8="Invalid DateTime",bW=864e13;function A5(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function l8(t){return t.weekData===null&&(t.weekData=o8(t.c)),t.weekData}function g3(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 TW(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 OW(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 v5(t,e,n){return TW(GD(t),e,n)}function RW(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,f5(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=_t.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=GD(s);let[a,l]=TW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function m3(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 Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function S5(t,e,n=!0){return t.isValid?es.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function c8(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Mn(t.c.year,n?6:4),e?(r+="-",r+=Mn(t.c.month),r+="-",r+=Mn(t.c.day)):(r+=Mn(t.c.month),r+=Mn(t.c.day)),r}function NW(t,e,n,r,i,s){let o=Mn(t.c.hour);return e?(o+=":",o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=Mn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Mn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Mn(Math.trunc(-t.o/60)),o+=":",o+=Mn(Math.trunc(-t.o%60))):(o+="+",o+=Mn(Math.trunc(t.o/60)),o+=":",o+=Mn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const DW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},oTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},uTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},FW=["year","month","day","hour","minute","second","millisecond"],aTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],lTe=["year","ordinal","hour","minute","second","millisecond"];function wW(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 hG(t);return e}function LW(t,e){const n=V0(e.zone,jn.defaultZone),r=dn.fromObject(e),i=jn.now();let s,o;if(St(t.year))s=i;else{for(const l of FW)St(t[l])&&(t[l]=DW[l]);const u=_W(t)||CW(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=v5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function IW(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=QD(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 $W(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||jn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:A5(n));this.ts=St(e.ts)?jn.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=OW(this.ts,u),r=Number.isNaN(i.year)?new Ho("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]=$W(arguments),[r,i,s,o,u,a,l]=n;return LW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=$W(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Kr.utcInstance,LW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=ECe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=V0(n.zone,jn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(A5(i))}static fromMillis(e,n={}){if(Ax(e))return e<-bW||e>bW?st.invalid("Timestamp out of range"):new st({ts:e,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Ax(e))return new st({ts:e*1e3,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=V0(n.zone,jn.defaultZone);if(!r.isValid)return st.invalid(A5(r));const i=jn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=h5(e,wW),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 u3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new u3("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=OW(i,s);h?(p=aTe,m=oTe,g=o8(g)):u?(p=lTe,m=uTe,g=u8(g)):(p=FW,m=DW);let y=!1;for(const b of p){const R=o[b];St(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?iTe(o):u?sTe(o):_W(o),A=E||CW(o);if(A)return st.invalid(A);const v=h?vW(o):u?SW(o):o,[S,_]=v5(v,s,r),C=new st({ts:S,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]=Cbe(e);return m3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=bbe(e);return m3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Tbe(e);return m3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new io("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]=rTe(o,e,n);return c?st.invalid(c):m3(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]=Lbe(e);return m3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the DateTime is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new dCe(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?l8(this).weekYear:NaN}get weekNumber(){return this.isValid?l8(this).weekNumber:NaN}get weekday(){return this.isValid?l8(this).weekday:NaN}get ordinal(){return this.isValid?u8(this.c).ordinal:NaN}get monthShort(){return this.isValid?p3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?p3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?p3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?p3.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 a3(this.year)}get daysInMonth(){return f5(this.year,this.month)}get daysInYear(){return this.isValid?l3(this.year):NaN}get weeksInWeekYear(){return this.isValid?x5(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=es.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Kr.instance(e),n)}toLocal(){return this.setZone(jn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=V0(e,jn.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]=v5(o,s,e)}return g3(this,{ts:i,zone:e})}else return st.invalid(A5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return g3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=h5(e,wW),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 u3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new u3("Can't mix ordinal dates with month/day");let l;r?l=vW({...o8(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(f5(l.year,l.month),l.day))):l=SW({...u8(this.c),...n});const[c,f]=v5(l,this.o,this.zone);return g3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return g3(this,RW(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return g3(this,RW(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=_t.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?es.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):a8}toLocaleString(e=zD,n={}){return this.isValid?es.create(this.loc.clone(n),e).formatDateTime(this):a8}toLocaleParts(e={}){return this.isValid?es.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=c8(this,o);return u+="T",u+=NW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?c8(this,e==="extended"):null}toISOWeekDate(){return S5(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":"")+NW(this,o==="extended",n,e,r,s):null}toRFC2822(){return S5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return S5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?c8(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")),S5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():a8}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 _t.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ACe(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=qbe(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),IW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?IW(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 io("min requires all arguments be DateTimes");return $G(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new io("max requires all arguments be DateTimes");return $G(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 pW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return zD}static get DATE_MED(){return pG}static get DATE_MED_WITH_WEEKDAY(){return gCe}static get DATE_FULL(){return gG}static get DATE_HUGE(){return mG}static get TIME_SIMPLE(){return yG}static get TIME_WITH_SECONDS(){return EG}static get TIME_WITH_SHORT_OFFSET(){return AG}static get TIME_WITH_LONG_OFFSET(){return vG}static get TIME_24_SIMPLE(){return SG}static get TIME_24_WITH_SECONDS(){return _G}static get TIME_24_WITH_SHORT_OFFSET(){return CG}static get TIME_24_WITH_LONG_OFFSET(){return bG}static get DATETIME_SHORT(){return TG}static get DATETIME_SHORT_WITH_SECONDS(){return OG}static get DATETIME_MED(){return RG}static get DATETIME_MED_WITH_SECONDS(){return NG}static get DATETIME_MED_WITH_WEEKDAY(){return mCe}static get DATETIME_FULL(){return DG}static get DATETIME_FULL_WITH_SECONDS(){return FG}static get DATETIME_HUGE(){return wG}static get DATETIME_HUGE_WITH_SECONDS(){return LG}}function y3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Ax(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const cTe="2.5.2";var fTe=Zi.DateTime=st;Zi.Duration=_t,Zi.FixedOffsetZone=Kr,Zi.IANAZone=Ju,Zi.Info=p3,Zi.Interval=hn,Zi.InvalidZone=WG,Zi.Settings=jn,Zi.SystemZone=g5,Zi.VERSION=cTe,Zi.Zone=N2,Object.defineProperty(fr,"__esModule",{value:!0}),fr.LiteralYear=fr.LiteralQuarter=fr.LiteralMonth=fr.LiteralWeek=fr.LiteralDay=fr.LiteralHour=fr.LiteralTimestamp=fr.TimeFormatError=void 0;const Y0=Zi,xTe=le,dTe=j0,BW=C2,f8=xt;class hTe extends Error{}fr.TimeFormatError=hTe;function Cx(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 kW="yyyy",PW=`${kW}-LL`,uo=`${PW}-dd`,MW=`${uo} HH`,jW=`${MW}:mm`,x8=`${jW}:ss`;class UW extends f8.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class d8 extends UW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Cx(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=Y0.DateTime.fromFormat(e,x8);if(s.isValid)return new d8(r,n);if(s=Y0.DateTime.fromFormat(e,jW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(x8);return new h8(r,n,"timestamp",o)}}}fr.LiteralTimestamp=d8;class h8 extends UW{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,f8.getMorphicValue)(i,"timestamp"),a=(0,f8.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,xTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new dTe.Range(new BW.ExprTime(u,i.value),new BW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class p8 extends h8{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,MW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(x8),new p8(n,r)}}fr.LiteralHour=p8;class E3 extends h8{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 g8 extends E3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new g8(n,r)}}fr.LiteralDay=g8;class m8 extends E3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Y0.DateTime.fromFormat(i,uo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(uo),r=u.toFormat(uo),new m8(n,r)}}}fr.LiteralWeek=m8;class y8 extends E3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,PW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new y8(n,r)}}}fr.LiteralMonth=y8;class E8 extends E3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Cx(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=Y0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(uo),r=u.toFormat(uo),new E8(n,r)}}}fr.LiteralQuarter=E8;class A8 extends E3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,kW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new A8(n,r)}}}fr.LiteralYear=A8;var _5={};Object.defineProperty(_5,"__esModule",{value:!0}),_5.PartialCompare=void 0;const pTe=cr,gTe=xt;class mTe extends gTe.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,pTe.errorFor)("no value for partial compare")}}_5.PartialCompare=mTe;var B2={};Object.defineProperty(B2,"__esModule",{value:!0}),B2.PickWhen=B2.Pick=void 0;const Zu=le,K0=cr,Wo=an,yTe=xt,ETe=We;function C5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class ATe extends yTe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};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,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Wo.FT.typeEq(s,x,!0)){const h=Wo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick when type")}s=C5(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=C5(s,l),!Wo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Wo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.mergeEvalSpaces)(u,l.evalSpace),value:i}}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,K0.errorFor)("no value for partial pick");const r=[];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,K0.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,K0.errorFor)("partial when");r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Wo.FT.typeEq(a.when,Wo.FT.boolT))return this.log(`when expression must be boolean, not '${Wo.FT.inspect(a.when)}`),(0,K0.errorFor)("pick when type");if(i&&!Wo.FT.typeEq(i,a.pick,!0)){const l=Wo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type")}i=C5(i,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),i=C5(i,u),Wo.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${Wo.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type mismatch"))}}B2.Pick=ATe;class vTe extends ETe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}B2.PickWhen=vTe;var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.Timeframe=void 0;const STe=le,_Te=We;class CTe extends _Te.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,STe.isTimestampUnit)(n)?n:"second"}}b5.Timeframe=CTe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.TopBy=void 0;const bTe=le,qW=xt,TTe=We;class OTe extends TTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof qW.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof qW.ExpressionDef){const n=this.by.getExpression(e);return(0,bTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}T5.TopBy=OTe;var X0={};Object.defineProperty(X0,"__esModule",{value:!0}),X0.ImportStatement=X0.ImportSelect=X0.ImportSourceName=void 0;const v8=We;class RTe extends v8.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}X0.ImportSourceName=RTe;class NTe extends v8.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}X0.ImportSelect=NTe;class DTe extends v8.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}'`)}}}X0.ImportStatement=DTe;var A3={};Object.defineProperty(A3,"__esModule",{value:!0}),A3.ExtendBlock=void 0;const FTe=We,wTe=On;class LTe extends FTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=wTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}A3.ExtendBlock=LTe;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.Argument=void 0;const ITe=We;class $Te extends ITe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}O5.Argument=$Te;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.HasParameter=void 0;const zW=le,BTe=We;class kTe extends BTe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,zW.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,zW.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"}}}R5.HasParameter=kTe;var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.AnonymousQuery=void 0;const PTe=We,MTe=Gr;class jTe extends PTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=MTe.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)}}N5.AnonymousQuery=jTe;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.View=void 0;const UTe=We;let qTe=class extends UTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};J0.View=qTe;var D5={};Object.defineProperty(D5,"__esModule",{value:!0}),D5.ViewArrow=void 0;const zTe=Yr,HTe=J0;class QTe extends HTe.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 zTe.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()}}D5.ViewArrow=QTe;var F5={},v3={};Object.defineProperty(v3,"__esModule",{value:!0}),v3.refine=void 0;const S8=Ru,_8=B0;function GTe(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,S8.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,S8.isQuerySegment)(o)&&(0,S8.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,_8.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,_8.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(_8.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}v3.refine=GTe,Object.defineProperty(F5,"__esModule",{value:!0}),F5.ViewRefine=void 0;const WTe=Vr,VTe=Ts,YTe=v3,KTe=J0;class XTe extends KTe.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,VTe.getFinalStruct)(this.refinement,e.structDef(),i):WTe.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,YTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}F5.ViewRefine=XTe;var w5={};Object.defineProperty(w5,"__esModule",{value:!0}),w5.ReferenceView=void 0;const HW=le,QW=Vr,JTe=Ts,ZTe=Wr,e6e=v3,t6e=J0;class n6e extends t6e.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:QW.ErrorFactory.structDef,outputStruct:QW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof ZTe.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,HW.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,HW.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,JTe.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,e6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}w5.ReferenceView=n6e;var L5={},S3={},I5={},_3={};Object.defineProperty(_3,"__esModule",{value:!0}),_3.Index=void 0;const r6e=We,i6e=On;let s6e=class extends r6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=i6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};_3.Index=s6e;var C3={};Object.defineProperty(C3,"__esModule",{value:!0}),C3.SampleProperty=void 0;const o6e=We,GW=On;class u6e extends o6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=GW.LegalRefinementStage.Tail,this.forceQueryClass=GW.QueryClass.Index}sampling(){return this.sample}}C3.SampleProperty=u6e;var $5={};Object.defineProperty($5,"__esModule",{value:!0}),$5.IndexFieldSpace=void 0;const WW=le,C8=ht,a6e=Wr,l6e=qo,c6e=n3,f6e=Yr;class x6e extends l6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof C8.FieldReference?super.pushFields(n):n instanceof C8.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 a6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof c6e.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 f6e.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=C8.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,WW.isAtomicFieldType)(c.dataType)&&(0,WW.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)}}$5.IndexFieldSpace=x6e,Object.defineProperty(I5,"__esModule",{value:!0}),I5.IndexBuilder=void 0;const b8=le,d6e=Vr,h6e=Uo,p6e=_3,g6e=z0,m6e=C3,y6e=$5;class E6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new y6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof h6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof g6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof p6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof m6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,b8.isIndexSegment)(e)&&!(0,b8.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),d6e.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,b8.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}I5.IndexBuilder=E6e;var B5={},b3={};Object.defineProperty(b3,"__esModule",{value:!0}),b3.GroupBy=void 0;const A6e=bs,VW=On;class v6e extends A6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=VW.LegalRefinementStage.Single,this.forceQueryClass=VW.QueryClass.Grouping}}b3.GroupBy=v6e;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.ProjectFieldSpace=void 0;const T8=le,S6e=qo;class _6e extends S6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,T8.expressionIsAggregate)(e.expressionType)?!1:(0,T8.expressionInvolvesAggregate)(e.expressionType)&&(0,T8.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}k5.ProjectFieldSpace=_6e;var Z0={},bx={};Object.defineProperty(bx,"__esModule",{value:!0}),bx.Ordering=bx.OrderBy=void 0;const C6e=le,YW=H0,KW=We,b6e=On;class T6e extends KW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof YW.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 YW.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,C6e.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}}bx.OrderBy=T6e;class O6e extends KW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=b6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}bx.Ordering=O6e;var T3={};Object.defineProperty(T3,"__esModule",{value:!0}),T3.Top=void 0;const XW=le,R6e=H0,N6e=We,D6e=On;let F6e=class extends N6e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=D6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof R6e.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,XW.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,XW.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:r.value}}}};T3.Top=F6e,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.ReduceBuilder=Z0.QuerySegmentBuilder=void 0;const JW=le,w6e=Vr,L6e=Uo,I6e=z0,ZW=bx,eV=T3,$6e=qo,B6e=bs;class tV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof B6e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof L6e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof eV.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 I6e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof ZW.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 eV.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof ZW.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])}}Z0.QuerySegmentBuilder=tV;class k6e extends tV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new $6e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,JW.isReduceSegment)(e)||(0,JW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),w6e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Z0.ReduceBuilder=k6e,Object.defineProperty(B5,"__esModule",{value:!0}),B5.ProjectBuilder=void 0;const nV=le,P6e=Vr,M6e=b3,j6e=k5,U6e=Z0;class q6e extends U6e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new j6e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof M6e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,nV.isProjectSegment)(e)||(0,nV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),P6e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}B5.ProjectBuilder=q6e;var P5={};Object.defineProperty(P5,"__esModule",{value:!0}),P5.PartialBuilder=void 0;const z6e=Ru,H6e=Z0;class Q6e extends H6e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,z6e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}P5.PartialBuilder=Q6e,Object.defineProperty(S3,"__esModule",{value:!0}),S3.QOpDesc=void 0;const G6e=I5,W6e=B5,V6e=Z0,Y6e=We,K6e=Ts,X6e=Yr,Tx=On,J6e=P5;class Z6e extends Y6e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Tx.QueryClass.Grouping:this.refineThis.type==="project"?n=Tx.QueryClass.Project:this.refineThis.type==="index"&&(n=Tx.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=Tx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Tx.QueryClass.Grouping:return new V6e.ReduceBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Project:return new W6e.ProjectBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Index:return new G6e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new J6e.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 X6e.StaticSpace((0,K6e.opOutputStruct)(this,e.structDef(),i))}}}S3.QOpDesc=Z6e,Object.defineProperty(L5,"__esModule",{value:!0}),L5.QOpDescView=void 0;const eOe=le,tOe=Yr,rV=S3,nOe=Ts,O8=On,rOe=J0;class iOe extends rOe.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,eOe.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 rV.QOpDesc([]),o=new rV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case O8.LegalRefinementStage.Head:s.push(u);break;case O8.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case O8.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,nOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new tOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}L5.QOpDescView=iOe;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 sOe=le,oOe=an,uOe=S2,aOe=We,Ox=Gn,lOe=Gr,cOe=Wr;class ec extends aOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new R8(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.log(`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),s="number"),(0,sOe.isAtomicFieldType)(s)&&s!=="error"){const u={name:n,type:s,location:this.location};return u.e=r.value,r.expressionType&&(u.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(u.code=this.exprSrc),(0,uOe.isGranularResult)(r)&&u.type==="timestamp"&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof R8&&e.foundCircle)&&r.dataType!=="error"){const u=oOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new iV(e,this))}}pn.AtomicFieldDeclaration=ec;class fOe extends ec{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=fOe;class xOe extends ec{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=xOe;class dOe extends ec{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=dOe;class hOe extends ec{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=hOe;class pOe extends ec{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=pOe;class gOe extends ec{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=gOe;class mOe extends ec{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=mOe;class R8{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=R8;class iV extends cOe.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=iV;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.Aggregate=void 0;const yOe=bs,sV=On;let EOe=class extends yOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=sV.LegalRefinementStage.Single,this.forceQueryClass=sV.QueryClass.Grouping}};M5.Aggregate=EOe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.Calculate=void 0;const AOe=bs,vOe=On;class SOe extends AOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vOe.LegalRefinementStage.Single}}j5.Calculate=SOe;var O3={};Object.defineProperty(O3,"__esModule",{value:!0}),O3.Dimensions=void 0;const _Oe=k0;class COe extends _Oe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}O3.Dimensions=COe;var R3={};Object.defineProperty(R3,"__esModule",{value:!0}),R3.Measures=void 0;const bOe=k0;class TOe extends bOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}R3.Measures=TOe;var U5={};Object.defineProperty(U5,"__esModule",{value:!0}),U5.Nests=void 0;const OOe=bs,oV=On;class ROe extends OOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=oV.LegalRefinementStage.Single,this.forceQueryClass=oV.QueryClass.Grouping}}U5.Nests=ROe;var q5={};Object.defineProperty(q5,"__esModule",{value:!0}),q5.ProjectStatement=void 0;const NOe=bs,uV=On;class DOe extends NOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=uV.QueryClass.Project,this.queryRefinementStage=uV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}q5.ProjectStatement=DOe;var tc={},Al={};Object.defineProperty(Al,"__esModule",{value:!0}),Al.findReferences=Al.deprecatedParseTableURI=Al.constructTableKey=void 0;const FOe=I0,N8=un;function D8(t){const e=(0,N8.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,N8.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class wOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=aV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,N8.getId)(e.connectionId()),r=D8(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=D8(e.tableURI()),{connectionName:r,tablePath:i}=lV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=D8(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function aV(t,e){return t===void 0?e:`${t}:${e}`}Al.constructTableKey=aV;function lV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Al.deprecatedParseTableURI=lV;function LOe(t,e,n){const r=new wOe(t,e),i=r;return FOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Al.findReferences=LOe,Object.defineProperty(tc,"__esModule",{value:!0}),tc.TableFunctionSource=tc.TableMethodSource=tc.TableSource=void 0;const cV=Al,IOe=jo,fV=Vr;class F8 extends IOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return fV.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,cV.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),fV.ErrorFactory.structDef}}tc.TableSource=F8;class $Oe extends F8{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}}}tc.TableMethodSource=$Oe;class BOe extends F8{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,cV.deprecatedParseTableURI)(this.tableURI)}}tc.TableFunctionSource=BOe;var z5={};Object.defineProperty(z5,"__esModule",{value:!0}),z5.SQLString=void 0;const kOe=We,xV=Yu;class POe extends kOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(MOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof xV.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}}z5.SQLString=POe;function MOe(t){return t instanceof xV.SourceQueryElement}var H5={};Object.defineProperty(H5,"__esModule",{value:!0}),H5.SourceDesc=void 0;const jOe=We;class UOe extends jOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}H5.SourceDesc=UOe;var Q5={};Object.defineProperty(Q5,"__esModule",{value:!0}),Q5.isSourceProperty=void 0;const qOe=Uo,zOe=Xi,HOe=k0,QOe=h2,GOe=M0,WOe=p2,VOe=g2,YOe=m2,KOe=P0;function XOe(t){return t instanceof qOe.Filter||t instanceof zOe.Joins||t instanceof HOe.DeclareFields||t instanceof QOe.FieldListEdit||t instanceof GOe.Renames||t instanceof WOe.PrimaryKey||t instanceof KOe.ObjectAnnotation||t instanceof VOe.Views||t instanceof YOe.TimezoneStatement}Q5.isSourceProperty=XOe;var G5={};Object.defineProperty(G5,"__esModule",{value:!0}),G5.isFieldCollectionMember=void 0;const JOe=pn,dV=ht;function ZOe(t){return t instanceof dV.FieldReference||t instanceof dV.WildcardFieldReference||t instanceof JOe.AtomicFieldDeclaration}G5.isFieldCollectionMember=ZOe;var W5={};Object.defineProperty(W5,"__esModule",{value:!0}),W5.isQueryElement=void 0;const eRe=y2,tRe=E2,nRe=Km,rRe=Xm;function iRe(t){return t instanceof eRe.QueryArrow||t instanceof tRe.QueryRefine||t instanceof nRe.QueryReference||t instanceof rRe.QueryRaw}W5.isQueryElement=iRe;var hV={};Object.defineProperty(hV,"__esModule",{value:!0});var V5={};Object.defineProperty(V5,"__esModule",{value:!0}),V5.isQueryProperty=void 0;function sRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}V5.isQueryProperty=sRe;var Y5={};Object.defineProperty(Y5,"__esModule",{value:!0}),Y5.isQueryExtendProperty=void 0;const oRe=O3,uRe=Xi,aRe=R3;function lRe(t){return t instanceof oRe.Dimensions||t instanceof aRe.Measures||t instanceof uRe.Joins}Y5.isQueryExtendProperty=lRe;var K5={};Object.defineProperty(K5,"__esModule",{value:!0}),K5.isFieldPropStatement=void 0;const cRe=U0,fRe=Uo,xRe=z0,dRe=O2;function hRe(t){return t instanceof fRe.Filter||t instanceof xRe.Limit||t instanceof dRe.PartitionBy||t instanceof cRe.FunctionOrdering}K5.isFieldPropStatement=hRe,function(t){var e=F&&F.__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=F&&F.__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(Im,t),n(c2,t),n(f2,t),n(jo,t),n(Um,t),n(Yu,t),n(S_,t),n(__,t),n(T_,t),n(Gm,t),n(N_,t),n(h2,t),n(p2,t),n(M0,t),n(g2,t),n(m2,t),n(D_,t),n(b2,t),n(w_,t),n(U0,t),n(L_,t),n(yl,t),n(I_,t),n(T2,t),n($_,t),n(B_,t),n(k_,t),n(Zm,t),n(P_,t),n(M_,t),n(U_,t),n(i3,t),n(t3,t),n(px,t),n(q_,t),n(z_,t),n(Q_,t),n(W_,t),n(V_,t),n(Y_,t),n(K_,t),n(X_,t),n(J_,t),n(Z_,t),n(e5,t),n(t5,t),n(n5,t),n(r5,t),n(i5,t),n(u5,t),n(fr,t),n(_5,t),n(O2,t),n(B2,t),n(j0,t),n(b5,t),n(T5,t),n(s3,t),n(v2,t),n(X0,t),n(A3,t),n(O5,t),n(R5,t),n(N5,t),n(E2,t),n(y2,t),n(J0,t),n(D5,t),n(F5,t),n(w5,t),n(L5,t),n(pn,t),n(ht,t),n(M5,t),n(j5,t),n(k0,t),n(O3,t),n(A3,t),n(Uo,t),n(b3,t),n(_3,t),n(Xi,t),n($m,t),n(z0,t),n(R3,t),n(Im,t),n(U5,t),n(bx,t),n(q5,t),n(S3,t),n(C3,t),n(T3,t),n(A2,t),n(hx,t),n(Jm,t),n(tc,t),n(z5,t),n(P0,t),n(Ku,t),n(H5,t),n(Q5,t),n(xt,t),n(G5,t),n(H0,t),n(We,t),n(W5,t),n(hV,t),n(V5,t),n(Y5,t),n(K5,t)}(u_);var X5={},k2={};Object.defineProperty(k2,"__esModule",{value:!0}),k2.ConstantExpression=k2.ConstantFieldSpace=void 0;const pRe=xt;class pV{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}}k2.ConstantFieldSpace=pV;class gRe extends pRe.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 pV),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}k2.ConstantExpression=gRe;var mRe=F&&F.__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]}),yRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ERe=F&&F.__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)&&mRe(e,t,n);return yRe(e,t),e};Object.defineProperty(X5,"__esModule",{value:!0}),X5.MalloyToAST=void 0;const gV=lS,ARe=Bm,te=ERe(u_),vRe=ur,SRe=u_,Wn=un,w8=le,_Re=gl,CRe=k2;class mV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class L8 extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bRe=["##! m4warnings=error"];class TRe extends ARe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bRe){const s=_Re.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 L8||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,Wn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,Wn.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 vRe.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])}getPlainStringFrom(e){const[n,r]=(0,Wn.getPlainString)(e);for(const i of r)i instanceof gV.ParserRuleContext&&this.contextError(i,"%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Wn.getStringParts)(e))r instanceof gV.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 CRe.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,Wn.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,Wn.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.getPlainStringFrom(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.getPlainStringFrom(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,Wn.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))}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new te.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new te.SQReference(r),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{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),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,w8.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{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),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,Wn.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,Wn.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.getPlainStringFrom(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,Wn.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,Wn.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,Wn.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,Wn.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.getPlainStringFrom(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}'`)}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,w8.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new 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,Wn.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,w8.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Wn.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,Wn.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.getPlainStringFrom(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,Wn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,Wn.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 L8(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new L8(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,Wn.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 mV)}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 SRe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new mV}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)}}X5.MalloyToAST=TRe;var J5={};Object.defineProperty(J5,"__esModule",{value:!0}),J5.MessageLog=void 0;class ORe{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}}J5.MessageLog=ORe;var Z5={};Object.defineProperty(Z5,"__esModule",{value:!0}),Z5.Zone=void 0;class RRe{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})}}Z5.Zone=RRe;var eC={};Object.defineProperty(eC,"__esModule",{value:!0}),eC.walkForDocumentSymbols=void 0;const NRe=I0,DRe=un;class FRe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,DRe.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 wRe(t,e,n){const r=new FRe(t,e,[],[]),i=r;return NRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}eC.walkForDocumentSymbols=wRe;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.walkForDocumentCompletions=void 0;const LRe=I0,IRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],$Re=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],BRe=["source","explore","query","sql"];class kRe{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 IRe)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 $Re)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 BRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function PRe(t,e,n){const r=new kRe(t,[],n),i=r;return LRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}tC.walkForDocumentCompletions=PRe;var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.walkForDocumentHelpContext=void 0;const MRe=pD;class jRe extends MRe.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 URe(t,e){return new jRe(e).visit(t)}nC.walkForDocumentHelpContext=URe;var rC={},N3={};Object.defineProperty(N3,"__esModule",{value:!0}),N3.locationContainsPosition=void 0;function qRe(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)}N3.locationContainsPosition=qRe,Object.defineProperty(rC,"__esModule",{value:!0}),rC.ReferenceList=void 0;const zRe=N3;class HRe{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,zRe.locationContainsPosition)(r.location,e))return r}}rC.ReferenceList=HRe;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.isNeedResponse=void 0;function QRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}iC.isNeedResponse=QRe;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.walkForModelAnnotation=void 0;const GRe=I0;class WRe{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 VRe(t,e,n){const r=new WRe(t,e,n),i=r;return GRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}sC.walkForModelAnnotation=VRe;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.walkForTablePath=void 0;const yV=un,YRe=I0;class KRe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,yV.getId)(e.connectionId()),[r,i]=(0,yV.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function XRe(t,e,n){const r=new KRe(t,e),i=r;return YRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}oC.walkForTablePath=XRe;var JRe=F&&F.__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]}),ZRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eNe=F&&F.__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)&&JRe(e,t,n);return ZRe(e,t),e};Object.defineProperty(Du,"__esModule",{value:!0}),Du.MalloyParserErrorHandler=Du.MalloyTranslator=Du.MalloyChildTranslator=Du.MalloyTranslation=void 0;const EV=lS,tNe=S4,nNe=w,AV=eNe(u_),rNe=X5,iNe=J5,sNe=Al,I8=Z5,oNe=eC,uNe=tC,aNe=nC,lNe=rC,uC=iC,cNe=N3,vV=gl,fNe=sC,xNe=oC;class dNe extends tNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class hNe{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===""?`
1303
+ `)),R_.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"),R_.ErrorFactory.structDef}}Jm.SQLSource=a4e,Object.defineProperty(T_,"__esModule",{value:!0}),T_.SQSource=void 0;const l4e=Yu,c4e=Xm,f4e=Jm;class x4e extends l4e.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 f4e.SQLSource){const e=new c4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}T_.SQSource=x4e;var N_={};Object.defineProperty(N_,"__esModule",{value:!0}),N_.SQExtend=void 0;const d4e=Um,h4e=Yu;class p4e extends h4e.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 d4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}N_.SQExtend=p4e;var D_={},Zm={},e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.BinaryBoolean=void 0;const zQ=le,g4e=cr,m4e=an,y4e=Ku,E4e=xt;class A4e extends E4e.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=[m4e.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,zQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,zQ.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,y4e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,g4e.errorFor)("logial required boolean")}}e3.BinaryBoolean=A4e,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.ExprCompare=void 0;const Vt=an,v4e=e3,S4e={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class _4e extends v4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=S4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Zm.ExprCompare=_4e;var t3={},C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprTime=void 0;const C4e=le,b4e=xt;class LD extends b4e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,C4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new LD(e,r,n.expressionType)}}C2.ExprTime=LD;var j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.Range=void 0;const HQ=le,T4e=cr,O4e=xt;class R4e extends O4e.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,HQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,HQ.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,T4e.errorFor)("a range is not a value")}}j0.Range=R4e,Object.defineProperty(t3,"__esModule",{value:!0}),t3.ExprGranularTime=void 0;const QQ=le,N4e=cr,GQ=an,WQ=lr,D4e=xt,F_=C2,VQ=j0;class F4e extends D4e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[GQ.FT.timestampT,GQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,QQ.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,QQ.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,N4e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=F_.ExprTime.fromValue("timestamp",n),a=new F_.ExprTime("timestamp",(0,WQ.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new VQ.Range(u,a)}const i=new F_.ExprTime("date",n.value,n.expressionType),s=(0,WQ.timeOffset)("date",n.value,"+",r,this.units),o=new F_.ExprTime("date",s,n.expressionType);return new VQ.Range(i,o)}}t3.ExprGranularTime=F4e,Object.defineProperty(D_,"__esModule",{value:!0}),D_.Apply=void 0;const w4e=Zm,L4e=S2,YQ=t3;class I4e extends w4e.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,L4e.isGranularResult)(r)&&(n=new YQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof YQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}D_.Apply=I4e;var b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryNumeric=void 0;const $4e=an,B4e=xt;class k4e extends B4e.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=[$4e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}b2.BinaryNumeric=k4e;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.Boolean=void 0;const P4e=xt,M4e=an;let j4e=class extends P4e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...M4e.FT.boolT,value:{node:this.value}}}};w_.Boolean=j4e;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.FunctionOrdering=U0.FunctionOrderBy=void 0;const ID=le,KQ=We,U4e=px;class q4e extends KQ.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"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,ID.expressionIsAggregate)(n.expressionType)||((0,ID.expressionIsScalar)(n.expressionType)?(!(this.field instanceof U4e.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")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,ID.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}U0.FunctionOrderBy=q4e;class z4e extends KQ.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))}}U0.FunctionOrdering=z4e;var L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprAddSub=void 0;const H4e=b2;class Q4e extends H4e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}L_.ExprAddSub=Q4e;var yl={},ht={},n3={};Object.defineProperty(n3,"__esModule",{value:!0}),n3.ReferenceField=void 0;const XQ=Wr;class G4e extends XQ.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:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof XQ.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"}}}n3.ReferenceField=G4e;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.typecheckGroupBy=Gn.typecheckAggregate=Gn.typecheckCalculate=Gn.typecheckDeclare=Gn.typecheckMeasure=Gn.typecheckDimension=Gn.typecheckIndex=Gn.typecheckProject=void 0;const Nn=Ru;function W4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckProject=W4e;function V4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Nn.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`)}}Gn.typecheckIndex=V4e;function Y4e(t,e){if(!(0,Nn.expressionIsScalar)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckDimension=Y4e;function K4e(t,e){if(!(0,Nn.expressionIsAggregate)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckMeasure=K4e;function X4e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Nn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Gn.typecheckDeclare=X4e;function J4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Nn.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?`)}}Gn.typecheckCalculate=J4e;function Z4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckAggregate=Z4e;function e_e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckGroupBy=e_e,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 t_e=n3,n_e=bs,JQ=We,ZQ=Gr,q0=Gn;class Ji extends JQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=ZQ.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 t_e.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=Ji;class r_e extends Ji{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=r_e;class i_e extends Ji{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=i_e;class s_e extends Ji{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=s_e;class o_e extends Ji{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=o_e;class u_e extends Ji{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,q0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=u_e;class $D extends Ji{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,q0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return $D.indexOutputName(this.path)}}ht.IndexFieldReference=$D;class a_e extends Ji{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,q0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=a_e;class l_e extends Ji{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,q0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=l_e;class c_e extends Ji{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,q0.typecheckProject)(e,this)}}ht.ProjectFieldReference=c_e;class f_e extends Ji{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,q0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=f_e;class x_e extends Ji{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,q0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=x_e;class d_e extends Ji{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,q0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=d_e;class h_e extends Ji{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=h_e;class p_e extends JQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=ZQ.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=p_e;class g_e extends n_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=g_e,Object.defineProperty(yl,"__esModule",{value:!0}),yl.ExprAggregateFunction=void 0;const eG=le,m_e=It,r3=cr,y_e=Yr,E_e=dx,A_e=an,v_e=ht,S_e=xt,__e=Wr,C_e=px;class b_e extends S_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[A_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,eG.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:x.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"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=>T_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof E_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,r3.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,r3.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,r3.errorFor)("agggregate without expression");if((0,eG.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,r3.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=kD(a,c),p=PD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=O_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={node:"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,r3.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...BD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...BD(e,r))}return n}}yl.ExprAggregateFunction=b_e;function T_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 BD(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 y_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 __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")};for(const i of(0,m_e.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=BD(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([]);return n}function kD(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 PD(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 O_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=kD(i,e),o=PD(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=kD(l,e),f=PD(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 v_e.FieldReference?`${n.refString}.${r}()`:n instanceof C_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 I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprAlternationTree=void 0;const tG=le,R_e=cr,N_e=xt;class D_e extends N_e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,tG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,tG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,R_e.errorFor)("no value from alternation tree")}}I_.ExprAlternationTree=D_e;var T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprAsymmetric=void 0;const F_e=yl;class w_e extends F_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}`}}}}T2.ExprAsymmetric=w_e;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprAvg=void 0;const L_e=T2;class I_e extends L_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}$_.ExprAvg=I_e;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprCast=void 0;const $_e=lr,B_e=xt;class k_e extends B_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.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}B_.ExprCast=k_e;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprCoalesce=void 0;const nG=Ru,rG=an,P_e=xt;class M_e extends P_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=rG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(rG.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,nG.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,nG.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}k_.ExprCoalesce=M_e;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprCount=void 0;const j_e=yl;class U_e extends j_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={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}P_.ExprCount=U_e;var M_={};Object.defineProperty(M_,"__esModule",{value:!0}),M_.ExprCountDistinct=void 0;const j_=an,q_e=yl;class z_e extends q_e.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[j_.FT.numberT,j_.FT.stringT,j_.FT.dateT,j_.FT.timestampT]}}M_.ExprCountDistinct=z_e;var U_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const H_e=We,Q_e=On;class G_e extends H_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Q_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=G_e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.PartitionBy=void 0;const W_e=We;class V_e extends W_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}O2.PartitionBy=V_e;var i3={},H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.FieldName=void 0;const Y_e=We;class K_e extends Y_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])}}H0.FieldName=K_e,Object.defineProperty(i3,"__esModule",{value:!0}),i3.ExprFunc=void 0;const ro=le,Xu=cr,X_e=dx,J_e=xt,Z_e=H0,iG=It;class e5e extends J_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(O=>O.getExpression(e));if(this.isRaw){let O="scalar",I;const j=[`${this.name}(`];for(const G of a)O=(0,ro.maxExpressionType)(O,G.expressionType),I?j.push(","):I=G.dataType,j.push(G.value);return j.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:O,value:(0,iG.composeSQLExpr)(j),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(G=>G.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,Xu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Xu.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 O=this.source.getField(e).found;if(O){const I=O.typeDesc();if((0,ro.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:{node:"field",path:this.source.path},evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(O instanceof X_e.StructSpaceFieldBase)){const j=`Aggregate source cannot be a ${I.dataType}`;return this.log(j),(0,Xu.errorFor)(j)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Xu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=t5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(O=>O.dataType).join(", ")})`),(0,Xu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const O of m){const I=O.argIndex-(c?1:0),j=(0,ro.expressionIsScalar)(O.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualExpressionType}`)}for(const O of g){const I=O.argIndex-(c?1:0),j=O.maxEvalSpace==="literal"?"literal":O.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualEvalSpace}`)}for(const O of y){const I=O.argIndex-(c?1:0);this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(O=>O.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(O=>O.dataType).join(", ")}) with source`),(0,Xu.errorFor)("cannot call with source");const v={node:"function_call",overload:p,name:this.name,kids:{args:x.map(O=>O.value)},expressionType:A,structPath:f};let S=v;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 O=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(O||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||O){const I=C.supportsOrderBy!=="only_default",j=n.orderBys.flatMap(Q=>O?Q.getAnalyticOrderBy(e):Q.getAggregateOrderBy(e,I));v.kids.orderBy=j}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const O=[];for(const I of n.partitionBys)for(const j of I.partitionFields){const Q=j.getField(e);Q.found===void 0?j.log(`${j.refString} is not defined`):(0,ro.expressionIsAnalytic)(Q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(Q.found.typeDesc().expressionType)?j.log("Partition expression must be scalar or aggregate"):O.push(j.nameString)}v.partitionBy=O}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,Xu.errorFor)("sql_function used without enabling")}const O=x[0].value;if(O.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=O.literal,j=n5e(I),Q=j.filter(P=>P.type==="interpolation"&&P.name.includes(".")).map(P=>P.type==="interpolation"?`\${${P.name}}`:`\${${P.value}}`);if(Q.length>0){const P=Q.length===1?`'.' paths are not yet supported in sql interpolations, found ${Q.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${Q.join(", ")})`;return this.log(P),(0,Xu.errorFor)(`${P}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const G=[];for(const P of j)if(P.type==="string")G.push(P.value);else if(P.name==="TABLE")G.push({node:"source-reference"});else{const W=new Z_e.FieldName(P.name);this.has({name:W});const oe=e.lookup([W]);if(oe.found===void 0)return this.log(`Invalid interpolation: ${oe.error}`),(0,Xu.errorFor)("invalid interpolated field");oe.found.refType==="parameter"?G.push({node:"parameter",path:[P.name]}):G.push({node:"field",path:[P.name]})}S=(0,iG.composeSQLExpr)(G)}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Xu.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(O=>O.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:S,evalSpace:R}}}i3.ExprFunc=e5e;function t5e(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,ro.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 n5e(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(U_,"__esModule",{value:!0}),U_.ExprProps=void 0;const r5e=le,i5e=cr,s5e=an,o5e=U0,u5e=z0,a5e=O2,l5e=xt,c5e=i3;class f5e extends l5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=s5e.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,r5e.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:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,i5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof a5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof u5e.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 o5e.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 c5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}U_.ExprProps=f5e;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ExprLogicalOp=void 0;const x5e=e3,sG=an;class d5e extends x5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[sG.FT.boolT,sG.FT.aggregateBoolT]}}q_.ExprLogicalOp=d5e;var z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.ExprMax=void 0;const H_=an,h5e=yl;class p5e extends h5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[H_.FT.numberT,H_.FT.stringT,H_.FT.dateT,H_.FT.timestampT]}returns(e){return e.dataType}}z_.ExprMax=p5e;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ExprMin=void 0;const G_=an,g5e=yl;class m5e extends g5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[G_.FT.numberT,G_.FT.stringT,G_.FT.dateT,G_.FT.timestampT]}returns(e){return e.dataType}}Q_.ExprMin=m5e;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprMinus=void 0;const y5e=cr,oG=an,E5e=xt;class A5e extends E5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[oG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return oG.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,y5e.errorFor)("negate requires number")}}W_.ExprMinus=A5e;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprMulDiv=void 0;const v5e=b2;class S5e extends v5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}V_.ExprMulDiv=S5e;var Y_={},s3={};Object.defineProperty(s3,"__esModule",{value:!0}),s3.Unary=void 0;const _5e=xt;class C5e extends _5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}s3.Unary=C5e,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprNot=void 0;const uG=an,b5e=s3,T5e=v2;class O5e extends b5e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[uG.FT.boolT,uG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,T5e.nullsafeNot)(n.value):{node:"false"}}}}Y_.ExprNot=O5e;var K_={};Object.defineProperty(K_,"__esModule",{value:!0}),K_.ExprNow=void 0;const R5e=xt;class N5e extends R5e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}K_.ExprNow=N5e;var X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.ExprNULL=void 0;const D5e=xt;class F5e extends D5e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}X_.ExprNULL=F5e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprNumber=void 0;const w5e=an,L5e=xt;class I5e extends L5e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...w5e.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}J_.ExprNumber=I5e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprParens=void 0;const $5e=xt;class B5e extends $5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Z_.ExprParens=B5e;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.ExprRegEx=void 0;const k5e=xt;class P5e extends k5e.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}e5.ExprRegEx=P5e;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.ExprString=void 0;const M5e=xt,j5e=an;class U5e extends M5e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...j5e.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}t5.ExprString=U5e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.ExprSum=void 0;const q5e=T2;class z5e extends q5e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}n5.ExprSum=z5e;var r5={};Object.defineProperty(r5,"__esModule",{value:!0}),r5.ExprTimeExtract=void 0;const yx=le,Q0=cr,MD=xt,H5e=j0;class o3 extends MD.ExpressionDef{static extractor(e){const n=o3.pluralMap[e];if(n)return n;if((0,yx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=o3.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Q0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof H5e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,yx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,yx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Q0.errorFor)("extract from error").value};if(!(0,yx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Q0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,yx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Q0.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,MD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,MD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Q0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Q0.errorFor)(`${n} civil extraction`)):(0,yx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:(this.log(`Cannot extract ${n} from a range`),(0,Q0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,yx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Q0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}r5.ExprTimeExtract=o3,o3.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var i5={},qo={},s5={};Object.defineProperty(s5,"__esModule",{value:!0}),s5.QueryInputSpace=void 0;const Q5e=Xi,G5e=Hm,W5e=x2;class V5e extends W5e.RefinedSpace{constructor(e,n){const r=new G5e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Q5e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}s5.QueryInputSpace=V5e;var Y5e=F&&F.__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]}),K5e=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),X5e=F&&F.__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)&&Y5e(e,t,n);return K5e(e,t),e};Object.defineProperty(qo,"__esModule",{value:!0}),qo.ReduceFieldSpace=qo.QuerySpace=qo.QueryOperationSpace=void 0;const o5=X5e(le),jD=B0,J5e=H0,Z5e=Wr,eCe=ht,tCe=x2,nCe=zm,rCe=Yr,iCe=s5;class aG extends tCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new iCe.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 rCe.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();o5.isAtomicFieldType(l.dataType)&&o5.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)}}qo.QueryOperationSpace=aG;class lG extends aG{addRefineFromFields(e){var n;if(o5.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new J5e.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 nCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof eCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Z5e.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)&&!oCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(o5.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,jD.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,jD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,jD.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}}qo.QuerySpace=lG;class sCe extends lG{constructor(){super(...arguments),this.segmentType="reduce"}}qo.ReduceFieldSpace=sCe;function oCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(i5,"__esModule",{value:!0}),i5.ExprUngroup=void 0;const cG=le,UD=cr,uCe=qo,aCe=an,lCe=xt;class cCe extends lCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=aCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,cG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,UD.errorFor)("ungrouped scalar");if((0,cG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,UD.errorFor)("doubly-ungrouped aggregate");const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof uCe.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,UD.errorFor)("ungrouped type check")}}i5.ExprUngroup=cCe;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.ForRange=void 0;const fG=Ru,qD=cr,xG=an,a5=lr,fCe=xt,l5=C2,dG=j0;class xCe extends fCe.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=[xG.FT.timestampT,xG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,qD.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,fG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,fG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,qD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,a5.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,a5.timeOffset)("date",i.value,"+",o.value,u),g=new l5.ExprTime("date",m);return new dG.Range(p,g).apply(e,n,r)}const l=l5.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,a5.castDateToTimestamp)(f),c=new l5.ExprTime("timestamp",f,i.expressionType)}const x=(0,a5.timeOffset)("timestamp",f,"+",o.value,u),h=new l5.ExprTime("timestamp",x,i.expressionType);return new dG.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,qD.errorFor)("range has no value")}}u5.ForRange=xCe;var fr={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0});class Ex extends Error{}class dCe extends Ex{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class hCe extends Ex{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class pCe extends Ex{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class u3 extends Ex{}class hG extends Ex{constructor(e){super(`Invalid unit ${e}`)}}class io extends Ex{}class G0 extends Ex{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Os="long",zD={year:ke,month:ke,day:ke},pG={year:ke,month:zo,day:ke},gCe={year:ke,month:zo,day:ke,weekday:zo},gG={year:ke,month:Os,day:ke},mG={year:ke,month:Os,day:ke,weekday:Os},yG={hour:ke,minute:ke},EG={hour:ke,minute:ke,second:ke},AG={hour:ke,minute:ke,second:ke,timeZoneName:zo},vG={hour:ke,minute:ke,second:ke,timeZoneName:Os},SG={hour:ke,minute:ke,hourCycle:"h23"},_G={hour:ke,minute:ke,second:ke,hourCycle:"h23"},CG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},bG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},TG={year:ke,month:ke,day:ke,hour:ke,minute:ke},OG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},RG={year:ke,month:zo,day:ke,hour:ke,minute:ke},NG={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},mCe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},DG={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:zo},FG={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},wG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},LG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function St(t){return typeof t>"u"}function Ax(t){return typeof t=="number"}function c5(t){return typeof t=="number"&&t%1===0}function yCe(t){return typeof t=="string"}function ECe(t){return Object.prototype.toString.call(t)==="[object Date]"}function IG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ACe(t){return Array.isArray(t)?t:[t]}function $G(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 vCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function R2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function El(t,e,n){return c5(t)&&t>=e&&t<=n}function SCe(t,e){return t-e*Math.floor(t/e)}function Mn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function W0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function vx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function HD(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function QD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function a3(t){return t%4===0&&(t%100!==0||t%400===0)}function l3(t){return a3(t)?366:365}function f5(t,e){const n=SCe(e-1,12)+1,r=t+(e-n)/12;return n===2?a3(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function GD(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function x5(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 WD(t){return t>99?t:t>60?1900+t:2e3+t}function BG(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 d5(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 kG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function h5(t,e){const n={};for(const r in t)if(R2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=kG(i)}return n}function c3(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}${Mn(n,2)}:${Mn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Mn(n,2)}${Mn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function p5(t){return vCe(t,["hour","minute","second","millisecond"])}const PG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,_Ce=["January","February","March","April","May","June","July","August","September","October","November","December"],MG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function jG(t){switch(t){case"narrow":return[...CCe];case"short":return[...MG];case"long":return[..._Ce];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 UG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],qG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],bCe=["M","T","W","T","F","S","S"];function zG(t){switch(t){case"narrow":return[...bCe];case"short":return[...qG];case"long":return[...UG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const HG=["AM","PM"],TCe=["Before Christ","Anno Domini"],OCe=["BC","AD"],RCe=["B","A"];function QG(t){switch(t){case"narrow":return[...RCe];case"short":return[...OCe];case"long":return[...TCe];default:return null}}function NCe(t){return HG[t.hour<12?0:1]}function DCe(t,e){return zG(e)[t.weekday-1]}function FCe(t,e){return jG(e)[t.month-1]}function wCe(t,e){return QG(e)[t.year<0?0:1]}function LCe(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 GG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ICe={D:zD,DD:pG,DDD:gG,DDDD:mG,t:yG,tt:EG,ttt:AG,tttt:vG,T:SG,TT:_G,TTT:CG,TTTT:bG,f:TG,ff:RG,fff:DG,ffff:wG,F:OG,FF:NG,FFF:FG,FFFF:LG};class es{static create(e,n={}){return new es(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 ICe[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 Mn(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?NCe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?FCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?DCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=es.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?wCe(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 GG(es.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=es.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 GG(s,i(u))}}class Ho{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let N2=class{get type(){throw new G0}get name(){throw new G0}get ianaName(){return this.name}get isUniversal(){throw new G0}offsetName(e,n){throw new G0}formatOffset(e,n){throw new G0}offset(e){throw new G0}equals(e){throw new G0}get isValid(){throw new G0}},VD=null;class g5 extends N2{static get instance(){return VD===null&&(VD=new g5),VD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return BG(e,n,r)}formatOffset(e,n){return c3(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let m5={};function $Ce(t){return m5[t]||(m5[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"})),m5[t]}const BCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function kCe(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 PCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=BCe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let y5={};class Ju extends N2{static create(e){return y5[e]||(y5[e]=new Ju(e)),y5[e]}static resetCache(){y5={},m5={}}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=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return BG(e,n,r,this.name)}formatOffset(e,n){return c3(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=$Ce(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?PCe(r,n):kCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=GD({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let YD=null;class Kr extends N2{static get utcInstance(){return YD===null&&(YD=new Kr(0)),YD}static instance(e){return e===0?Kr.utcInstance:new Kr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Kr(d5(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${c3(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${c3(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return c3(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 WG extends N2{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 V0(t,e){if(St(t)||t===null)return e;if(t instanceof N2)return t;if(yCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Kr.utcInstance:Kr.parseSpecifier(n)||Ju.create(t)}else return Ax(t)?Kr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new WG(t)}let VG=()=>Date.now(),YG="system",KG=null,XG=null,JG=null,ZG;class jn{static get now(){return VG}static set now(e){VG=e}static set defaultZone(e){YG=e}static get defaultZone(){return V0(YG,g5.instance)}static get defaultLocale(){return KG}static set defaultLocale(e){KG=e}static get defaultNumberingSystem(){return XG}static set defaultNumberingSystem(e){XG=e}static get defaultOutputCalendar(){return JG}static set defaultOutputCalendar(e){JG=e}static get throwOnInvalid(){return ZG}static set throwOnInvalid(e){ZG=e}static resetCaches(){dn.resetCache(),Ju.resetCache()}}let eW={};function MCe(t,e={}){const n=JSON.stringify([t,e]);let r=eW[n];return r||(r=new Intl.ListFormat(t,e),eW[n]=r),r}let KD={};function XD(t,e={}){const n=JSON.stringify([t,e]);let r=KD[n];return r||(r=new Intl.DateTimeFormat(t,e),KD[n]=r),r}let JD={};function jCe(t,e={}){const n=JSON.stringify([t,e]);let r=JD[n];return r||(r=new Intl.NumberFormat(t,e),JD[n]=r),r}let ZD={};function UCe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=ZD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),ZD[i]=s),s}let f3=null;function qCe(){return f3||(f3=new Intl.DateTimeFormat().resolvedOptions().locale,f3)}function zCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=XD(t).resolvedOptions()}catch{n=XD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function HCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function QCe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function GCe(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 E5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function WCe(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 VCe{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=jCe(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):QD(e,3);return Mn(n,this.padTo)}}}class YCe{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&&Ju.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=XD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class KCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&IG()&&(this.rtf=UCe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):LCe(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||jn.defaultLocale,o=s||(i?"en-US":qCe()),u=n||jn.defaultNumberingSystem,a=r||jn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){f3=null,KD={},JD={},ZD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=zCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=HCe(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=WCe(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 E5(this,e,r,jG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=QCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return E5(this,e,r,zG,()=>{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]=GCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return E5(this,void 0,e,()=>HG,()=>{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 E5(this,e,n,QG,()=>{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 VCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new YCe(e,this.intl,n)}relFormatter(e={}){return new KCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return MCe(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 D2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function F2(...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 w2(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 tW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=W0(e[n+i]);return[r,null,n+i]}}const nW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,XCe=`(?:${nW.source}?(?:\\[(${PG.source})\\])?)?`,e8=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,rW=RegExp(`${e8.source}${XCe}`),t8=RegExp(`(?:T${rW.source})?`),JCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ZCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ebe=/(\d{4})-?(\d{3})/,tbe=tW("weekYear","weekNumber","weekDay"),nbe=tW("year","ordinal"),rbe=/(\d{4})-(\d\d)-(\d\d)/,iW=RegExp(`${e8.source} ?(?:${nW.source}|(${PG.source}))?`),ibe=RegExp(`(?: ${iW.source})?`);function L2(t,e,n){const r=t[e];return St(r)?n:W0(r)}function sbe(t,e){return[{year:L2(t,e),month:L2(t,e+1,1),day:L2(t,e+2,1)},null,e+3]}function I2(t,e){return[{hours:L2(t,e,0),minutes:L2(t,e+1,0),seconds:L2(t,e+2,0),milliseconds:HD(t[e+3])},null,e+4]}function x3(t,e){const n=!t[e]&&!t[e+1],r=d5(t[e+1],t[e+2]),i=n?null:Kr.instance(r);return[{},i,e+3]}function d3(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const obe=RegExp(`^T?${e8.source}$`),ube=/^-?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 abe(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(vx(n)),months:x(vx(r)),weeks:x(vx(i)),days:x(vx(s)),hours:x(vx(o)),minutes:x(vx(u)),seconds:x(vx(a),a==="-0"),milliseconds:x(HD(l),f)}]}const lbe={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 n8(t,e,n,r,i,s,o){const u={year:e.length===2?WD(W0(e)):W0(e),month:MG.indexOf(n)+1,day:W0(r),hour:W0(i),minute:W0(s)};return o&&(u.second=W0(o)),t&&(u.weekday=t.length>3?UG.indexOf(t)+1:qG.indexOf(t)+1),u}const cbe=/^(?:(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 fbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=n8(e,i,r,n,s,o,u);let h;return a?h=lbe[a]:l?h=0:h=d5(c,f),[x,new Kr(h)]}function xbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const dbe=/^(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$/,hbe=/^(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$/,pbe=/^(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 sW(t){const[,e,n,r,i,s,o,u]=t;return[n8(e,i,r,n,s,o,u),Kr.utcInstance]}function gbe(t){const[,e,n,r,i,s,o,u]=t;return[n8(e,u,n,r,i,s,o),Kr.utcInstance]}const mbe=D2(JCe,t8),ybe=D2(ZCe,t8),Ebe=D2(ebe,t8),Abe=D2(rW),oW=F2(sbe,I2,x3,d3),vbe=F2(tbe,I2,x3,d3),Sbe=F2(nbe,I2,x3,d3),_be=F2(I2,x3,d3);function Cbe(t){return w2(t,[mbe,oW],[ybe,vbe],[Ebe,Sbe],[Abe,_be])}function bbe(t){return w2(xbe(t),[cbe,fbe])}function Tbe(t){return w2(t,[dbe,sW],[hbe,sW],[pbe,gbe])}function Obe(t){return w2(t,[ube,abe])}const Rbe=F2(I2);function Nbe(t){return w2(t,[obe,Rbe])}const Dbe=D2(rbe,ibe),Fbe=D2(iW),wbe=F2(I2,x3,d3);function Lbe(t){return w2(t,[Dbe,oW],[Fbe,wbe])}const Ibe="Invalid Duration",uW={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}},$be={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},...uW},so=146097/400,$2=146097/4800,Bbe={years:{quarters:4,months:12,weeks:so/7,days:so,hours:so*24,minutes:so*24*60,seconds:so*24*60*60,milliseconds:so*24*60*60*1e3},quarters:{months:3,weeks:so/28,days:so/4,hours:so*24/4,minutes:so*24*60/4,seconds:so*24*60*60/4,milliseconds:so*24*60*60*1e3/4},months:{weeks:$2/7,days:$2,hours:$2*24,minutes:$2*24*60,seconds:$2*24*60*60,milliseconds:$2*24*60*60*1e3},...uW},Sx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],kbe=Sx.slice(0).reverse();function _x(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 _t(r)}function Pbe(t){return t<0?Math.floor(t):Math.ceil(t)}function aW(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?Pbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Mbe(t,e){kbe.reduce((n,r)=>St(e[r])?n:(n&&aW(t,e,n,e,r),r),null)}class _t{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?Bbe:$be,this.isLuxonDuration=!0}static fromMillis(e,n){return _t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new io(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:h5(e,_t.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Ax(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Obe(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=Nbe(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the Duration is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new pCe(r);return new _t({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 hG(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?es.create(this.loc,r).formatDurationFromString(this,e):Ibe}toHuman(e={}){const n=Sx.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+=QD(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=_t.fromDurationLike(e),r={};for(const i of Sx)(R2(n.values,i)||R2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return _x(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=_t.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]=kG(e(this.values[r],r));return _x(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...h5(e,_t.normalizeUnit)};return _x(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),_x(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Mbe(this.matrix,e),_x(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>_t.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of Sx)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;Ax(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)Sx.indexOf(l)>Sx.indexOf(o)&&aW(this.matrix,i,l,n,o)}else Ax(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 _x(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 _x(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 Sx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const h3="Invalid Interval";function jbe(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 io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new hCe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=y3(e),i=y3(n),s=jbe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=y3(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=y3(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=_t.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=_t.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(y3).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=_t.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()})`:h3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:h3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:h3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:h3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:h3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let p3=class{static hasDST(e=jn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return V0(e,jn.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:IG()}}};function lW(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(_t.fromMillis(r).as("days"))}function Ube(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=lW(u,a);return(l-l%7)/7}],["days",lW]],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 qbe(t,e,n,r){let[i,s,o,u]=Ube(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=_t.fromObject(s,r);return l.length>0?_t.fromMillis(a,r).shiftTo(...l).plus(c):c}const r8={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},cW={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]},zbe=r8.hanidec.replace(/[\[|\]]/g,"").split("");function Hbe(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(r8.hanidec)!==-1)e+=zbe.indexOf(t[n]);else for(const i in cW){const[s,o]=cW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Qo({numberingSystem:t},e=""){return new RegExp(`${r8[t||"latn"]}${e}`)}const Qbe="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(Hbe(n))}}const fW="[  ]",xW=new RegExp(fW,"g");function Gbe(t){return t.replace(/\./g,"\\.?").replace(xW,fW)}function dW(t){return t.replace(/\./g,"").replace(xW," ").toLowerCase()}function Go(t,e){return t===null?null:{regex:RegExp(t.map(Gbe).join("|")),deser:([n])=>t.findIndex(r=>dW(n)===dW(r))+e}}function hW(t,e){return{regex:t,deser:([,n,r])=>d5(n,r),groups:e}}function i8(t){return{regex:t,deser:([e])=>e}}function Wbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Vbe(t,e){const n=Qo(e),r=Qo(e,"{2}"),i=Qo(e,"{3}"),s=Qo(e,"{4}"),o=Qo(e,"{6}"),u=Qo(e,"{1,2}"),a=Qo(e,"{1,3}"),l=Qo(e,"{1,6}"),c=Qo(e,"{1,9}"),f=Qo(e,"{2,4}"),x=Qo(e,"{4,6}"),h=g=>({regex:RegExp(Wbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Go(e.eras("short",!1),0);case"GG":return Go(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,WD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Go(e.months("short",!0,!1),1);case"MMMM":return Go(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Go(e.months("short",!1,!1),1);case"LLLL":return Go(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return i8(c);case"uu":return i8(u);case"uuu":return $t(n);case"a":return Go(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,WD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Go(e.weekdays("short",!1,!1),1);case"EEEE":return Go(e.weekdays("long",!1,!1),1);case"ccc":return Go(e.weekdays("short",!0,!1),1);case"cccc":return Go(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return hW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return hW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return i8(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Qbe};return m.token=t,m}const Ybe={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 Kbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Ybe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Xbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Jbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(R2(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 Zbe(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=Ju.create(t.z)),St(t.Z)||(n||(n=new Kr(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=HD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let s8=null;function eTe(){return s8||(s8=st.fromMillis(1555555555555)),s8}function tTe(t,e){if(t.literal)return t;const n=es.macroTokenToFormatOpts(t.val);if(!n)return t;const s=es.create(e,n).formatDateTimeParts(eTe()).map(o=>Kbe(o,e,n));return s.includes(void 0)?t:s}function nTe(t,e){return Array.prototype.concat(...t.map(n=>tTe(n,e)))}function pW(t,e,n){const r=nTe(es.parseFormat(n),t),i=r.map(o=>Vbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Xbe(i),a=RegExp(o,"i"),[l,c]=Jbe(e,a,u),[f,x,h]=c?Zbe(c):[null,null,void 0];if(R2(c,"a")&&R2(c,"H"))throw new u3("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 rTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=pW(t,e,n);return[r,i,s,o]}const gW=[0,31,59,90,120,151,181,212,243,273,304,334],mW=[0,31,60,91,121,152,182,213,244,274,305,335];function oo(t,e){return new Ho("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function yW(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 EW(t,e,n){return n+(a3(t)?mW:gW)[e-1]}function AW(t,e){const n=a3(t)?mW:gW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function o8(t){const{year:e,month:n,day:r}=t,i=EW(e,n,r),s=yW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=x5(u)):o>x5(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...p5(t)}}function vW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=yW(e,1,4),s=l3(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=l3(u)):o>s?(u=e+1,o-=l3(e)):u=e;const{month:a,day:l}=AW(u,o);return{year:u,month:a,day:l,...p5(t)}}function u8(t){const{year:e,month:n,day:r}=t,i=EW(e,n,r);return{year:e,ordinal:i,...p5(t)}}function SW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=AW(e,n);return{year:e,month:r,day:i,...p5(t)}}function iTe(t){const e=c5(t.weekYear),n=El(t.weekNumber,1,x5(t.weekYear)),r=El(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function sTe(t){const e=c5(t.year),n=El(t.ordinal,1,l3(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function _W(t){const e=c5(t.year),n=El(t.month,1,12),r=El(t.day,1,f5(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function CW(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=El(e,0,23)||e===24&&n===0&&r===0&&i===0,o=El(n,0,59),u=El(r,0,59),a=El(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const a8="Invalid DateTime",bW=864e13;function A5(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function l8(t){return t.weekData===null&&(t.weekData=o8(t.c)),t.weekData}function g3(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 TW(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 OW(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 v5(t,e,n){return TW(GD(t),e,n)}function RW(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,f5(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=_t.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=GD(s);let[a,l]=TW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function m3(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 Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function S5(t,e,n=!0){return t.isValid?es.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function c8(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Mn(t.c.year,n?6:4),e?(r+="-",r+=Mn(t.c.month),r+="-",r+=Mn(t.c.day)):(r+=Mn(t.c.month),r+=Mn(t.c.day)),r}function NW(t,e,n,r,i,s){let o=Mn(t.c.hour);return e?(o+=":",o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=Mn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Mn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Mn(Math.trunc(-t.o/60)),o+=":",o+=Mn(Math.trunc(-t.o%60))):(o+="+",o+=Mn(Math.trunc(t.o/60)),o+=":",o+=Mn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const DW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},oTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},uTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},FW=["year","month","day","hour","minute","second","millisecond"],aTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],lTe=["year","ordinal","hour","minute","second","millisecond"];function wW(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 hG(t);return e}function LW(t,e){const n=V0(e.zone,jn.defaultZone),r=dn.fromObject(e),i=jn.now();let s,o;if(St(t.year))s=i;else{for(const l of FW)St(t[l])&&(t[l]=DW[l]);const u=_W(t)||CW(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=v5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function IW(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=QD(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 $W(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||jn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:A5(n));this.ts=St(e.ts)?jn.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=OW(this.ts,u),r=Number.isNaN(i.year)?new Ho("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]=$W(arguments),[r,i,s,o,u,a,l]=n;return LW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=$W(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Kr.utcInstance,LW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=ECe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=V0(n.zone,jn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(A5(i))}static fromMillis(e,n={}){if(Ax(e))return e<-bW||e>bW?st.invalid("Timestamp out of range"):new st({ts:e,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Ax(e))return new st({ts:e*1e3,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=V0(n.zone,jn.defaultZone);if(!r.isValid)return st.invalid(A5(r));const i=jn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=h5(e,wW),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 u3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new u3("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=OW(i,s);h?(p=aTe,m=oTe,g=o8(g)):u?(p=lTe,m=uTe,g=u8(g)):(p=FW,m=DW);let y=!1;for(const b of p){const R=o[b];St(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?iTe(o):u?sTe(o):_W(o),A=E||CW(o);if(A)return st.invalid(A);const v=h?vW(o):u?SW(o):o,[S,_]=v5(v,s,r),C=new st({ts:S,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]=Cbe(e);return m3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=bbe(e);return m3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Tbe(e);return m3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new io("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]=rTe(o,e,n);return c?st.invalid(c):m3(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]=Lbe(e);return m3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the DateTime is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new dCe(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?l8(this).weekYear:NaN}get weekNumber(){return this.isValid?l8(this).weekNumber:NaN}get weekday(){return this.isValid?l8(this).weekday:NaN}get ordinal(){return this.isValid?u8(this.c).ordinal:NaN}get monthShort(){return this.isValid?p3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?p3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?p3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?p3.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 a3(this.year)}get daysInMonth(){return f5(this.year,this.month)}get daysInYear(){return this.isValid?l3(this.year):NaN}get weeksInWeekYear(){return this.isValid?x5(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=es.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Kr.instance(e),n)}toLocal(){return this.setZone(jn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=V0(e,jn.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]=v5(o,s,e)}return g3(this,{ts:i,zone:e})}else return st.invalid(A5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return g3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=h5(e,wW),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 u3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new u3("Can't mix ordinal dates with month/day");let l;r?l=vW({...o8(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(f5(l.year,l.month),l.day))):l=SW({...u8(this.c),...n});const[c,f]=v5(l,this.o,this.zone);return g3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return g3(this,RW(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return g3(this,RW(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=_t.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?es.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):a8}toLocaleString(e=zD,n={}){return this.isValid?es.create(this.loc.clone(n),e).formatDateTime(this):a8}toLocaleParts(e={}){return this.isValid?es.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=c8(this,o);return u+="T",u+=NW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?c8(this,e==="extended"):null}toISOWeekDate(){return S5(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":"")+NW(this,o==="extended",n,e,r,s):null}toRFC2822(){return S5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return S5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?c8(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")),S5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():a8}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 _t.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ACe(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=qbe(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),IW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?IW(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 io("min requires all arguments be DateTimes");return $G(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new io("max requires all arguments be DateTimes");return $G(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 pW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return zD}static get DATE_MED(){return pG}static get DATE_MED_WITH_WEEKDAY(){return gCe}static get DATE_FULL(){return gG}static get DATE_HUGE(){return mG}static get TIME_SIMPLE(){return yG}static get TIME_WITH_SECONDS(){return EG}static get TIME_WITH_SHORT_OFFSET(){return AG}static get TIME_WITH_LONG_OFFSET(){return vG}static get TIME_24_SIMPLE(){return SG}static get TIME_24_WITH_SECONDS(){return _G}static get TIME_24_WITH_SHORT_OFFSET(){return CG}static get TIME_24_WITH_LONG_OFFSET(){return bG}static get DATETIME_SHORT(){return TG}static get DATETIME_SHORT_WITH_SECONDS(){return OG}static get DATETIME_MED(){return RG}static get DATETIME_MED_WITH_SECONDS(){return NG}static get DATETIME_MED_WITH_WEEKDAY(){return mCe}static get DATETIME_FULL(){return DG}static get DATETIME_FULL_WITH_SECONDS(){return FG}static get DATETIME_HUGE(){return wG}static get DATETIME_HUGE_WITH_SECONDS(){return LG}}function y3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Ax(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const cTe="2.5.2";var fTe=Zi.DateTime=st;Zi.Duration=_t,Zi.FixedOffsetZone=Kr,Zi.IANAZone=Ju,Zi.Info=p3,Zi.Interval=hn,Zi.InvalidZone=WG,Zi.Settings=jn,Zi.SystemZone=g5,Zi.VERSION=cTe,Zi.Zone=N2,Object.defineProperty(fr,"__esModule",{value:!0}),fr.LiteralYear=fr.LiteralQuarter=fr.LiteralMonth=fr.LiteralWeek=fr.LiteralDay=fr.LiteralHour=fr.LiteralTimestamp=fr.TimeFormatError=void 0;const Y0=Zi,xTe=le,dTe=j0,BW=C2,f8=xt;class hTe extends Error{}fr.TimeFormatError=hTe;function Cx(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 kW="yyyy",PW=`${kW}-LL`,uo=`${PW}-dd`,MW=`${uo} HH`,jW=`${MW}:mm`,x8=`${jW}:ss`;class UW extends f8.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class d8 extends UW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Cx(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=Y0.DateTime.fromFormat(e,x8);if(s.isValid)return new d8(r,n);if(s=Y0.DateTime.fromFormat(e,jW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(x8);return new h8(r,n,"timestamp",o)}}}fr.LiteralTimestamp=d8;class h8 extends UW{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,f8.getMorphicValue)(i,"timestamp"),a=(0,f8.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,xTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new dTe.Range(new BW.ExprTime(u,i.value),new BW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class p8 extends h8{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,MW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(x8),new p8(n,r)}}fr.LiteralHour=p8;class E3 extends h8{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 g8 extends E3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new g8(n,r)}}fr.LiteralDay=g8;class m8 extends E3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Y0.DateTime.fromFormat(i,uo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(uo),r=u.toFormat(uo),new m8(n,r)}}}fr.LiteralWeek=m8;class y8 extends E3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,PW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new y8(n,r)}}}fr.LiteralMonth=y8;class E8 extends E3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Cx(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=Y0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(uo),r=u.toFormat(uo),new E8(n,r)}}}fr.LiteralQuarter=E8;class A8 extends E3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,kW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new A8(n,r)}}}fr.LiteralYear=A8;var _5={};Object.defineProperty(_5,"__esModule",{value:!0}),_5.PartialCompare=void 0;const pTe=cr,gTe=xt;class mTe extends gTe.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,pTe.errorFor)("no value for partial compare")}}_5.PartialCompare=mTe;var B2={};Object.defineProperty(B2,"__esModule",{value:!0}),B2.PickWhen=B2.Pick=void 0;const Zu=le,K0=cr,Wo=an,yTe=xt,ETe=We;function C5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class ATe extends yTe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};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,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Wo.FT.typeEq(s,x,!0)){const h=Wo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick when type")}s=C5(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=C5(s,l),!Wo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Wo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.mergeEvalSpaces)(u,l.evalSpace),value:i}}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,K0.errorFor)("no value for partial pick");const r=[];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,K0.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,K0.errorFor)("partial when");r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Wo.FT.typeEq(a.when,Wo.FT.boolT))return this.log(`when expression must be boolean, not '${Wo.FT.inspect(a.when)}`),(0,K0.errorFor)("pick when type");if(i&&!Wo.FT.typeEq(i,a.pick,!0)){const l=Wo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type")}i=C5(i,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),i=C5(i,u),Wo.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${Wo.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type mismatch"))}}B2.Pick=ATe;class vTe extends ETe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}B2.PickWhen=vTe;var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.Timeframe=void 0;const STe=le,_Te=We;class CTe extends _Te.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,STe.isTimestampUnit)(n)?n:"second"}}b5.Timeframe=CTe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.TopBy=void 0;const bTe=le,qW=xt,TTe=We;class OTe extends TTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof qW.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof qW.ExpressionDef){const n=this.by.getExpression(e);return(0,bTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}T5.TopBy=OTe;var X0={};Object.defineProperty(X0,"__esModule",{value:!0}),X0.ImportStatement=X0.ImportSelect=X0.ImportSourceName=void 0;const v8=We;class RTe extends v8.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}X0.ImportSourceName=RTe;class NTe extends v8.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}X0.ImportSelect=NTe;class DTe extends v8.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}'`)}}}X0.ImportStatement=DTe;var A3={};Object.defineProperty(A3,"__esModule",{value:!0}),A3.ExtendBlock=void 0;const FTe=We,wTe=On;class LTe extends FTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=wTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}A3.ExtendBlock=LTe;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.Argument=void 0;const ITe=We;class $Te extends ITe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}O5.Argument=$Te;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.HasParameter=void 0;const zW=le,BTe=We;class kTe extends BTe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,zW.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,zW.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"}}}R5.HasParameter=kTe;var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.AnonymousQuery=void 0;const PTe=We,MTe=Gr;class jTe extends PTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=MTe.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)}}N5.AnonymousQuery=jTe;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.View=void 0;const UTe=We;let qTe=class extends UTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};J0.View=qTe;var D5={};Object.defineProperty(D5,"__esModule",{value:!0}),D5.ViewArrow=void 0;const zTe=Yr,HTe=J0;class QTe extends HTe.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 zTe.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()}}D5.ViewArrow=QTe;var F5={},v3={};Object.defineProperty(v3,"__esModule",{value:!0}),v3.refine=void 0;const S8=Ru,_8=B0;function GTe(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,S8.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,S8.isQuerySegment)(o)&&(0,S8.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,_8.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,_8.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(_8.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}v3.refine=GTe,Object.defineProperty(F5,"__esModule",{value:!0}),F5.ViewRefine=void 0;const WTe=Vr,VTe=Ts,YTe=v3,KTe=J0;class XTe extends KTe.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,VTe.getFinalStruct)(this.refinement,e.structDef(),i):WTe.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,YTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}F5.ViewRefine=XTe;var w5={};Object.defineProperty(w5,"__esModule",{value:!0}),w5.ReferenceView=void 0;const HW=le,QW=Vr,JTe=Ts,ZTe=Wr,e6e=v3,t6e=J0;class n6e extends t6e.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:QW.ErrorFactory.structDef,outputStruct:QW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof ZTe.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,HW.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,HW.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,JTe.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,e6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}w5.ReferenceView=n6e;var L5={},S3={},I5={},_3={};Object.defineProperty(_3,"__esModule",{value:!0}),_3.Index=void 0;const r6e=We,i6e=On;let s6e=class extends r6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=i6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};_3.Index=s6e;var C3={};Object.defineProperty(C3,"__esModule",{value:!0}),C3.SampleProperty=void 0;const o6e=We,GW=On;class u6e extends o6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=GW.LegalRefinementStage.Tail,this.forceQueryClass=GW.QueryClass.Index}sampling(){return this.sample}}C3.SampleProperty=u6e;var $5={};Object.defineProperty($5,"__esModule",{value:!0}),$5.IndexFieldSpace=void 0;const WW=le,C8=ht,a6e=Wr,l6e=qo,c6e=n3,f6e=Yr;class x6e extends l6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof C8.FieldReference?super.pushFields(n):n instanceof C8.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 a6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof c6e.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 f6e.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=C8.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,WW.isAtomicFieldType)(c.dataType)&&(0,WW.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)}}$5.IndexFieldSpace=x6e,Object.defineProperty(I5,"__esModule",{value:!0}),I5.IndexBuilder=void 0;const b8=le,d6e=Vr,h6e=Uo,p6e=_3,g6e=z0,m6e=C3,y6e=$5;class E6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new y6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof h6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof g6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof p6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof m6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,b8.isIndexSegment)(e)&&!(0,b8.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),d6e.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,b8.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}I5.IndexBuilder=E6e;var B5={},b3={};Object.defineProperty(b3,"__esModule",{value:!0}),b3.GroupBy=void 0;const A6e=bs,VW=On;class v6e extends A6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=VW.LegalRefinementStage.Single,this.forceQueryClass=VW.QueryClass.Grouping}}b3.GroupBy=v6e;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.ProjectFieldSpace=void 0;const T8=le,S6e=qo;class _6e extends S6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,T8.expressionIsAggregate)(e.expressionType)?!1:(0,T8.expressionInvolvesAggregate)(e.expressionType)&&(0,T8.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}k5.ProjectFieldSpace=_6e;var Z0={},bx={};Object.defineProperty(bx,"__esModule",{value:!0}),bx.Ordering=bx.OrderBy=void 0;const C6e=le,YW=H0,KW=We,b6e=On;class T6e extends KW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof YW.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 YW.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,C6e.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}}bx.OrderBy=T6e;class O6e extends KW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=b6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}bx.Ordering=O6e;var T3={};Object.defineProperty(T3,"__esModule",{value:!0}),T3.Top=void 0;const XW=le,R6e=H0,N6e=We,D6e=On;let F6e=class extends N6e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=D6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof R6e.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,XW.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,XW.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:r.value}}}};T3.Top=F6e,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.ReduceBuilder=Z0.QuerySegmentBuilder=void 0;const JW=le,w6e=Vr,L6e=Uo,I6e=z0,ZW=bx,eV=T3,$6e=qo,B6e=bs;class tV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof B6e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof L6e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof eV.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 I6e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof ZW.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 eV.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof ZW.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])}}Z0.QuerySegmentBuilder=tV;class k6e extends tV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new $6e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,JW.isReduceSegment)(e)||(0,JW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),w6e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Z0.ReduceBuilder=k6e,Object.defineProperty(B5,"__esModule",{value:!0}),B5.ProjectBuilder=void 0;const nV=le,P6e=Vr,M6e=b3,j6e=k5,U6e=Z0;class q6e extends U6e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new j6e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof M6e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,nV.isProjectSegment)(e)||(0,nV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),P6e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}B5.ProjectBuilder=q6e;var P5={};Object.defineProperty(P5,"__esModule",{value:!0}),P5.PartialBuilder=void 0;const z6e=Ru,H6e=Z0;class Q6e extends H6e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,z6e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}P5.PartialBuilder=Q6e,Object.defineProperty(S3,"__esModule",{value:!0}),S3.QOpDesc=void 0;const G6e=I5,W6e=B5,V6e=Z0,Y6e=We,K6e=Ts,X6e=Yr,Tx=On,J6e=P5;class Z6e extends Y6e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Tx.QueryClass.Grouping:this.refineThis.type==="project"?n=Tx.QueryClass.Project:this.refineThis.type==="index"&&(n=Tx.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=Tx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Tx.QueryClass.Grouping:return new V6e.ReduceBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Project:return new W6e.ProjectBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Index:return new G6e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new J6e.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 X6e.StaticSpace((0,K6e.opOutputStruct)(this,e.structDef(),i))}}}S3.QOpDesc=Z6e,Object.defineProperty(L5,"__esModule",{value:!0}),L5.QOpDescView=void 0;const eOe=le,tOe=Yr,rV=S3,nOe=Ts,O8=On,rOe=J0;class iOe extends rOe.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,eOe.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 rV.QOpDesc([]),o=new rV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case O8.LegalRefinementStage.Head:s.push(u);break;case O8.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case O8.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,nOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new tOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}L5.QOpDescView=iOe;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 sOe=le,oOe=an,uOe=S2,aOe=We,Ox=Gn,lOe=Gr,cOe=Wr;class ec extends aOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new R8(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.log(`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),s="number"),(0,sOe.isAtomicFieldType)(s)&&s!=="error"){const u={name:n,type:s,location:this.location};return u.e=r.value,r.expressionType&&(u.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(u.code=this.exprSrc),(0,uOe.isGranularResult)(r)&&(u.type==="timestamp"||u.type==="date")&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof R8&&e.foundCircle)&&r.dataType!=="error"){const u=oOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new iV(e,this))}}pn.AtomicFieldDeclaration=ec;class fOe extends ec{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=fOe;class xOe extends ec{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=xOe;class dOe extends ec{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=dOe;class hOe extends ec{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=hOe;class pOe extends ec{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=pOe;class gOe extends ec{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=gOe;class mOe extends ec{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=mOe;class R8{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=R8;class iV extends cOe.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=iV;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.Aggregate=void 0;const yOe=bs,sV=On;let EOe=class extends yOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=sV.LegalRefinementStage.Single,this.forceQueryClass=sV.QueryClass.Grouping}};M5.Aggregate=EOe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.Calculate=void 0;const AOe=bs,vOe=On;class SOe extends AOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vOe.LegalRefinementStage.Single}}j5.Calculate=SOe;var O3={};Object.defineProperty(O3,"__esModule",{value:!0}),O3.Dimensions=void 0;const _Oe=k0;class COe extends _Oe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}O3.Dimensions=COe;var R3={};Object.defineProperty(R3,"__esModule",{value:!0}),R3.Measures=void 0;const bOe=k0;class TOe extends bOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}R3.Measures=TOe;var U5={};Object.defineProperty(U5,"__esModule",{value:!0}),U5.Nests=void 0;const OOe=bs,oV=On;class ROe extends OOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=oV.LegalRefinementStage.Single,this.forceQueryClass=oV.QueryClass.Grouping}}U5.Nests=ROe;var q5={};Object.defineProperty(q5,"__esModule",{value:!0}),q5.ProjectStatement=void 0;const NOe=bs,uV=On;class DOe extends NOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=uV.QueryClass.Project,this.queryRefinementStage=uV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}q5.ProjectStatement=DOe;var tc={},Al={};Object.defineProperty(Al,"__esModule",{value:!0}),Al.findReferences=Al.deprecatedParseTableURI=Al.constructTableKey=void 0;const FOe=I0,N8=un;function D8(t){const e=(0,N8.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,N8.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class wOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=aV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,N8.getId)(e.connectionId()),r=D8(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=D8(e.tableURI()),{connectionName:r,tablePath:i}=lV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=D8(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function aV(t,e){return t===void 0?e:`${t}:${e}`}Al.constructTableKey=aV;function lV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Al.deprecatedParseTableURI=lV;function LOe(t,e,n){const r=new wOe(t,e),i=r;return FOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Al.findReferences=LOe,Object.defineProperty(tc,"__esModule",{value:!0}),tc.TableFunctionSource=tc.TableMethodSource=tc.TableSource=void 0;const cV=Al,IOe=jo,fV=Vr;class F8 extends IOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return fV.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,cV.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),fV.ErrorFactory.structDef}}tc.TableSource=F8;class $Oe extends F8{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}}}tc.TableMethodSource=$Oe;class BOe extends F8{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,cV.deprecatedParseTableURI)(this.tableURI)}}tc.TableFunctionSource=BOe;var z5={};Object.defineProperty(z5,"__esModule",{value:!0}),z5.SQLString=void 0;const kOe=We,xV=Yu;class POe extends kOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(MOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof xV.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}}z5.SQLString=POe;function MOe(t){return t instanceof xV.SourceQueryElement}var H5={};Object.defineProperty(H5,"__esModule",{value:!0}),H5.SourceDesc=void 0;const jOe=We;class UOe extends jOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}H5.SourceDesc=UOe;var Q5={};Object.defineProperty(Q5,"__esModule",{value:!0}),Q5.isSourceProperty=void 0;const qOe=Uo,zOe=Xi,HOe=k0,QOe=h2,GOe=M0,WOe=p2,VOe=g2,YOe=m2,KOe=P0;function XOe(t){return t instanceof qOe.Filter||t instanceof zOe.Joins||t instanceof HOe.DeclareFields||t instanceof QOe.FieldListEdit||t instanceof GOe.Renames||t instanceof WOe.PrimaryKey||t instanceof KOe.ObjectAnnotation||t instanceof VOe.Views||t instanceof YOe.TimezoneStatement}Q5.isSourceProperty=XOe;var G5={};Object.defineProperty(G5,"__esModule",{value:!0}),G5.isFieldCollectionMember=void 0;const JOe=pn,dV=ht;function ZOe(t){return t instanceof dV.FieldReference||t instanceof dV.WildcardFieldReference||t instanceof JOe.AtomicFieldDeclaration}G5.isFieldCollectionMember=ZOe;var W5={};Object.defineProperty(W5,"__esModule",{value:!0}),W5.isQueryElement=void 0;const eRe=y2,tRe=E2,nRe=Km,rRe=Xm;function iRe(t){return t instanceof eRe.QueryArrow||t instanceof tRe.QueryRefine||t instanceof nRe.QueryReference||t instanceof rRe.QueryRaw}W5.isQueryElement=iRe;var hV={};Object.defineProperty(hV,"__esModule",{value:!0});var V5={};Object.defineProperty(V5,"__esModule",{value:!0}),V5.isQueryProperty=void 0;function sRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}V5.isQueryProperty=sRe;var Y5={};Object.defineProperty(Y5,"__esModule",{value:!0}),Y5.isQueryExtendProperty=void 0;const oRe=O3,uRe=Xi,aRe=R3;function lRe(t){return t instanceof oRe.Dimensions||t instanceof aRe.Measures||t instanceof uRe.Joins}Y5.isQueryExtendProperty=lRe;var K5={};Object.defineProperty(K5,"__esModule",{value:!0}),K5.isFieldPropStatement=void 0;const cRe=U0,fRe=Uo,xRe=z0,dRe=O2;function hRe(t){return t instanceof fRe.Filter||t instanceof xRe.Limit||t instanceof dRe.PartitionBy||t instanceof cRe.FunctionOrdering}K5.isFieldPropStatement=hRe,function(t){var e=F&&F.__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=F&&F.__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(Im,t),n(c2,t),n(f2,t),n(jo,t),n(Um,t),n(Yu,t),n(S_,t),n(__,t),n(T_,t),n(Gm,t),n(N_,t),n(h2,t),n(p2,t),n(M0,t),n(g2,t),n(m2,t),n(D_,t),n(b2,t),n(w_,t),n(U0,t),n(L_,t),n(yl,t),n(I_,t),n(T2,t),n($_,t),n(B_,t),n(k_,t),n(Zm,t),n(P_,t),n(M_,t),n(U_,t),n(i3,t),n(t3,t),n(px,t),n(q_,t),n(z_,t),n(Q_,t),n(W_,t),n(V_,t),n(Y_,t),n(K_,t),n(X_,t),n(J_,t),n(Z_,t),n(e5,t),n(t5,t),n(n5,t),n(r5,t),n(i5,t),n(u5,t),n(fr,t),n(_5,t),n(O2,t),n(B2,t),n(j0,t),n(b5,t),n(T5,t),n(s3,t),n(v2,t),n(X0,t),n(A3,t),n(O5,t),n(R5,t),n(N5,t),n(E2,t),n(y2,t),n(J0,t),n(D5,t),n(F5,t),n(w5,t),n(L5,t),n(pn,t),n(ht,t),n(M5,t),n(j5,t),n(k0,t),n(O3,t),n(A3,t),n(Uo,t),n(b3,t),n(_3,t),n(Xi,t),n($m,t),n(z0,t),n(R3,t),n(Im,t),n(U5,t),n(bx,t),n(q5,t),n(S3,t),n(C3,t),n(T3,t),n(A2,t),n(hx,t),n(Jm,t),n(tc,t),n(z5,t),n(P0,t),n(Ku,t),n(H5,t),n(Q5,t),n(xt,t),n(G5,t),n(H0,t),n(We,t),n(W5,t),n(hV,t),n(V5,t),n(Y5,t),n(K5,t)}(u_);var X5={},k2={};Object.defineProperty(k2,"__esModule",{value:!0}),k2.ConstantExpression=k2.ConstantFieldSpace=void 0;const pRe=xt;class pV{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}}k2.ConstantFieldSpace=pV;class gRe extends pRe.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 pV),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}k2.ConstantExpression=gRe;var mRe=F&&F.__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]}),yRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ERe=F&&F.__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)&&mRe(e,t,n);return yRe(e,t),e};Object.defineProperty(X5,"__esModule",{value:!0}),X5.MalloyToAST=void 0;const gV=lS,ARe=Bm,te=ERe(u_),vRe=ur,SRe=u_,Wn=un,w8=le,_Re=gl,CRe=k2;class mV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class L8 extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bRe=["##! m4warnings=error"];class TRe extends ARe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bRe){const s=_Re.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 L8||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,Wn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,Wn.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 vRe.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])}getPlainStringFrom(e){const[n,r]=(0,Wn.getPlainString)(e);for(const i of r)i instanceof gV.ParserRuleContext&&this.contextError(i,"%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Wn.getStringParts)(e))r instanceof gV.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 CRe.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,Wn.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,Wn.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.getPlainStringFrom(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.getPlainStringFrom(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,Wn.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))}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new te.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new te.SQReference(r),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{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),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,w8.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{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),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,Wn.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,Wn.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.getPlainStringFrom(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,Wn.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,Wn.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,Wn.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,Wn.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.getPlainStringFrom(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}'`)}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,w8.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new 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,Wn.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,w8.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Wn.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,Wn.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.getPlainStringFrom(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,Wn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,Wn.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 L8(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new L8(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,Wn.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 mV)}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 SRe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new mV}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)}}X5.MalloyToAST=TRe;var J5={};Object.defineProperty(J5,"__esModule",{value:!0}),J5.MessageLog=void 0;class ORe{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}}J5.MessageLog=ORe;var Z5={};Object.defineProperty(Z5,"__esModule",{value:!0}),Z5.Zone=void 0;class RRe{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})}}Z5.Zone=RRe;var eC={};Object.defineProperty(eC,"__esModule",{value:!0}),eC.walkForDocumentSymbols=void 0;const NRe=I0,DRe=un;class FRe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,DRe.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 wRe(t,e,n){const r=new FRe(t,e,[],[]),i=r;return NRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}eC.walkForDocumentSymbols=wRe;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.walkForDocumentCompletions=void 0;const LRe=I0,IRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],$Re=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],BRe=["source","explore","query","sql"];class kRe{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 IRe)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 $Re)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 BRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function PRe(t,e,n){const r=new kRe(t,[],n),i=r;return LRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}tC.walkForDocumentCompletions=PRe;var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.walkForDocumentHelpContext=void 0;const MRe=pD;class jRe extends MRe.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 URe(t,e){return new jRe(e).visit(t)}nC.walkForDocumentHelpContext=URe;var rC={},N3={};Object.defineProperty(N3,"__esModule",{value:!0}),N3.locationContainsPosition=void 0;function qRe(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)}N3.locationContainsPosition=qRe,Object.defineProperty(rC,"__esModule",{value:!0}),rC.ReferenceList=void 0;const zRe=N3;class HRe{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,zRe.locationContainsPosition)(r.location,e))return r}}rC.ReferenceList=HRe;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.isNeedResponse=void 0;function QRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}iC.isNeedResponse=QRe;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.walkForModelAnnotation=void 0;const GRe=I0;class WRe{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 VRe(t,e,n){const r=new WRe(t,e,n),i=r;return GRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}sC.walkForModelAnnotation=VRe;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.walkForTablePath=void 0;const yV=un,YRe=I0;class KRe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,yV.getId)(e.connectionId()),[r,i]=(0,yV.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function XRe(t,e,n){const r=new KRe(t,e),i=r;return YRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}oC.walkForTablePath=XRe;var JRe=F&&F.__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]}),ZRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eNe=F&&F.__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)&&JRe(e,t,n);return ZRe(e,t),e};Object.defineProperty(Du,"__esModule",{value:!0}),Du.MalloyParserErrorHandler=Du.MalloyTranslator=Du.MalloyChildTranslator=Du.MalloyTranslation=void 0;const EV=lS,tNe=S4,nNe=w,AV=eNe(u_),rNe=X5,iNe=J5,sNe=Al,I8=Z5,oNe=eC,uNe=tC,aNe=nC,lNe=rC,uC=iC,cNe=N3,vV=gl,fNe=sC,xNe=oC;class dNe extends tNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class hNe{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===""?`
1304
1304
  `: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=EV.CharStreams.fromString(e),i=new dNe(r),s=new EV.CommonTokenStream(i),o=new nNe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new _V(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 pNe{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,sNe.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,uC.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,uC.isNeedResponse)(u))return u}return null}}class gNe{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 rNe.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 AV.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,uC.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class mNe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,oNe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class yNe{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,uNe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class ENe{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,aNe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class ANe{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,fNe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class vNe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,xNe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class SNe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=vV.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,uC.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof AV.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 $8{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new vV.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new hNe,this.modelAnnotationStep=new ANe(this.parseStep),this.metadataStep=new mNe(this.parseStep),this.completionsStep=new yNe(this.parseStep),this.helpContextStep=new ENe(this.parseStep),this.importsAndTablesStep=new pNe(this.parseStep),this.astStep=new gNe(this.importsAndTablesStep),this.tablePathInfoStep=new vNe(this.parseStep),this.translateStep=new SNe(this.astStep),this.references=new lNe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new SV(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}
1305
1305
  | ${l}`,u>0&&(i=i+`
1306
1306
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}