@malloydata/render 0.0.153 → 0.0.154-dev240722014518
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.
|
@@ -1281,7 +1281,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1281
1281
|
`)+`
|
|
1282
1282
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Hu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(e)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Hu;class pye extends Hu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=pye;class hL extends Hu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ve.ModelEntryReference=hL;class gye extends Hu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=gye;function YH(t){return t.execute!==void 0}Ve.isDocStatement=YH;function mye(t){return t instanceof o1||YH(t)}Ve.isDocStatementOrDocStatementList=mye;class XH extends Hu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ve.ListOf=XH;class o1 extends XH{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=VH.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,VH.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof o1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ve.DocStatementList=o1;const yye="5a79a191-06bc-43cf-9b12-58741cd82970";function KH(t){const e=t.inherits?KH(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 Eye(t){const e=KH(t).join("");return(0,hye.v5)(e,yye)}class pL extends Hu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new dye.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new xye.Tag({}),this.modelAnnotationTodoList=[],this.statements=new o1(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=Eye(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,cye.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=pL;var b_={},zh={},Wr={},R0={};Object.defineProperty(R0,"__esModule",{value:!0}),R0.canMakeEntry=R0.SpaceEntry=void 0;class Aye{}R0.SpaceEntry=Aye;function Sye(t){return"makeEntry"in t}R0.canMakeEntry=Sye,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.SpaceField=void 0;const vye=ne,_ye=R0;class Cye extends _ye.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,vye.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="unsupported"&&e.type==="unsupported"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Wr.SpaceField=Cye,Object.defineProperty(zh,"__esModule",{value:!0}),zh.ViewField=void 0;const bye=Wr;class Tye extends bye.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}zh.ViewField=Tye,Object.defineProperty(b_,"__esModule",{value:!0}),b_.ASTViewField=void 0;const Rye=zh;class Oye extends Rye.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)}}b_.ASTViewField=Oye,Object.defineProperty(t1,"__esModule",{value:!0}),t1.ViewFieldDeclaration=void 0;const Nye=Ve,Dye=Gr,Fye=jh,wye=b_;class Lye extends Nye.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Dye.extendNoteMethod}makeEntry(e){const n=new wye.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Fye.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}t1.ViewFieldDeclaration=Lye;var bn={};Object.defineProperty(bn,"__esModule",{value:!0}),bn.LegalRefinementStage=bn.QueryClass=void 0;var JH;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(JH||(bn.QueryClass=JH={}));var ZH;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(ZH||(bn.LegalRefinementStage=ZH={})),Object.defineProperty(e1,"__esModule",{value:!0}),e1.NestFieldDeclaration=void 0;const Iye=jh,$ye=t1,ez=bn;class Bye extends $ye.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=ez.LegalRefinementStage.Single,this.forceQueryClass=ez.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,Iye.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")}}e1.NestFieldDeclaration=Bye;var Qh={},Vr={};Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.ErrorFactory=void 0;const tz={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class gL{static get structDef(){return{...tz}}static isErrorStructDef(e){return e.name.includes(tz.name)}static get query(){return{structRef:gL.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=gL;var u1={};Object.defineProperty(u1,"__esModule",{value:!0}),u1.HasParameter=void 0;const kye=ne,Pye=Ve;class Mye extends Pye.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,this.isCondition=e.isCondition,e.type&&(0,kye.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e,n;const r=this.name,i=this.type||"string";if(this.isCondition){const o=((e=this.default)===null||e===void 0?void 0:e.constantCondition(i).value)||null;return{type:i,name:r,condition:o}}return{value:((n=this.default)===null||n===void 0?void 0:n.constantValue().value)||null,type:i,name:this.name,constant:!1}}}u1.HasParameter=Mye,Object.defineProperty(Qh,"__esModule",{value:!0}),Qh.DefineSourceList=Qh.DefineSource=void 0;const Uye=Vr,jye=u1,nz=Ve,qye=Gr;class Hye extends nz.MalloyElement{constructor(e,n,r,i){if(super(),this.name=e,this.sourceExpr=n,this.exported=r,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=qye.extendNoteMethod,n&&this.has({sourceExpr:n}),i){this.parameters=[];for(const s of i)s instanceof jye.HasParameter?this.parameters.push(s):this.log(`Unexpected element type in define statement: ${s.elementType}`);this.has({parameters:this.parameters})}}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=r.withParameters(this.parameters);if(Uye.ErrorFactory.isErrorStructDef(i))return;const s={...i,as:this.name,location:this.location};this.note&&(s.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:s,exported:this.exported})}}}Qh.DefineSource=Hye;class zye extends nz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Qh.DefineSourceList=zye;var Gh={};Object.defineProperty(Gh,"__esModule",{value:!0}),Gh.DefineQueryList=Gh.DefineQuery=void 0;const rz=Ve,Qye=Gr;class Gye extends rz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Qye.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})}}Gh.DefineQuery=Gye;class Wye extends rz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Gh.DefineQueryList=Wye;var Mo={};Object.defineProperty(Mo,"__esModule",{value:!0}),Mo.Source=void 0;const Vye=Ve;class Yye extends Vye.MalloyElement{structRef(){return this.structDef()}withParameters(e){const n=this.structDef();if(e){const r={...n.parameters||{}};for(const i of e){const s=i.parameter();r[s.name]=s}return{...n,parameters:r}}return n}}Mo.Source=Yye;var a1={},Wh={},T_={},O0={};Object.defineProperty(O0,"__esModule",{value:!0}),O0.mergeFields=O0.nameFromDef=void 0;function mL(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}O0.nameFromDef=mL;function Xye(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>mL(i))),r=t.filter(i=>!n.has(mL(i)));return r.push(...e),r}O0.mergeFields=Xye;var l1={},Yr={},zu={};Object.defineProperty(zu,"__esModule",{value:!0}),zu.DefinedParameter=zu.AbstractParameter=zu.SpaceParam=void 0;const Kye=R0;class yL extends Kye.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}zu.SpaceParam=yL;class Jye extends yL{constructor(e){super(),this.astParam=e}parameter(){return this.astParam.parameter()}typeDesc(){return{dataType:this.astParam.type||"error",expressionType:"scalar",evalSpace:"input"}}}zu.AbstractParameter=Jye;class Zye extends yL{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}zu.DefinedParameter=Zye;var ix={};Object.defineProperty(ix,"__esModule",{value:!0}),ix.StructSpaceFieldBase=void 0;const eEe=Wr;class tEe extends eEe.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"}}}ix.StructSpaceFieldBase=tEe;var c1={};Object.defineProperty(c1,"__esModule",{value:!0}),c1.ColumnSpaceField=void 0;const nEe=Wr;class rEe extends nEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}c1.ColumnSpaceField=rEe;var R_={};Object.defineProperty(R_,"__esModule",{value:!0}),R_.IRViewField=void 0;const iEe=zh;class sEe extends iEe.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()}}R_.IRViewField=sEe,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.StructSpaceField=Yr.StaticSpace=void 0;const oEe=_u,uEe=ne,aEe=zu,lEe=Wr,O_=ix,cEe=c1,fEe=R_;class iz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,oEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new sz(e):(0,uEe.isTurtleDef)(e)?new fEe.IRViewField(this,e):new cEe.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)){if(this.memoMap[e])throw new Error(`In struct '${this.fromStruct.as||this.fromStruct.name}': : Field and parameter name conflict '${e}`);this.memoMap[e]=new aEe.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:[]}}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 lEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof O_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof O_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof O_.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=iz;class sz extends O_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new iz(this.sourceDef)}}Yr.StructSpaceField=sz,Object.defineProperty(l1,"__esModule",{value:!0}),l1.JoinSpaceField=void 0;const xEe=Yr;class dEe extends xEe.StructSpaceField{constructor(e){super(e.structDef()),this.join=e}}l1.JoinSpaceField=dEe;var f1={};Object.defineProperty(f1,"__esModule",{value:!0}),f1.SpaceSeed=void 0;const hEe=Yr;function oz(t){return t.type==="fieldSpace"}class pEe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return oz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return oz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new hEe.StaticSpace(this.spaceSpec)),this.asFS)}}f1.SpaceSeed=pEe,Object.defineProperty(T_,"__esModule",{value:!0}),T_.DynamicSpace=void 0;const gEe=O0,mEe=Vr,yEe=Wr,EEe=l1,AEe=zh,uz=zu,SEe=f1,vEe=Yr,_Ee=ix;class CEe extends vEe.StaticSpace{constructor(e){const n=new SEe.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,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.setEntry(n.name,new uz.AbstractParameter(n));return this}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,gEe.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){const e=this.fromStruct.parameters||{};if(this.final===void 0){this.final={...this.fromStruct,fields:[]};const n=[],r=[],i=[],s=[];for(const[u,a]of this.entries())a instanceof _Ee.StructSpaceFieldBase?r.push([u,a]):a instanceof AEe.ViewField?i.push([u,a]):a instanceof yEe.SpaceField?n.push([u,a]):a instanceof uz.SpaceParam&&(e[u]=a.parameter());const o=[...n,...r,...i];for(const[,u]of o)if(u instanceof EEe.JoinSpaceField){const a=u.join.structDef();mEe.ErrorFactory.isErrorStructDef(a)||(this.final.fields.push(a),s.push([u.join,a]))}else{const a=u.fieldDef();a&&this.final.fields.push(a)}Object.entries(e).length>0&&(this.final.parameters=e);for(const[u,a]of s)u.fixupJoinOn(this,a)}return this.newTimezone&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}T_.DynamicSpace=CEe,Object.defineProperty(Wh,"__esModule",{value:!0}),Wh.RefinedSpace=void 0;const bEe=T_,TEe=R0;class EL extends bEe.DynamicSpace{static filteredFrom(e,n){const r=new EL(e);if(n){const i=n.refs.list,s=r.entries();r.dropEntries();for(const[o,u]of s){const a=!!i.find(c=>c.refString===o),l=n.edit==="accept";a===l&&r.setEntry(o,u)}}return r}pushFields(...e){for(const n of e)(0,TEe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Wh.RefinedSpace=EL;var N0={},bs={};Object.defineProperty(bs,"__esModule",{value:!0}),bs.DefinitionList=void 0;const REe=Ve,az=Gr;class OEe extends REe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,az.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,az.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}bs.DefinitionList=OEe,Object.defineProperty(N0,"__esModule",{value:!0}),N0.DeclareFields=void 0;const NEe=bs,DEe=bn;class FEe extends NEe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=DEe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}N0.DeclareFields=FEe;var Uo={},fn={};Object.defineProperty(fn,"__esModule",{value:!0}),fn.nullsafeNot=fn.compressExpr=fn.compose=void 0;const wEe=ne;function lz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function LEe(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...lz(t),o,...lz(n)]}fn.compose=LEe;function IEe(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}fn.compressExpr=IEe;function $Ee(t,e){return e===void 0||e==="!="||e==="!~"?(0,wEe.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}fn.nullsafeNot=$Ee,Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Filter=Uo.FilterElement=void 0;const cz=ne,BEe=fn,fz=Ve,AL=bn;class kEe extends fz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,BEe.compressExpr)(n.value),expressionType:n.expressionType}}}Uo.FilterElement=kEe;let PEe=class extends fz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=AL.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?AL.LegalRefinementStage.Tail:AL.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,cz.expressionIsAggregate)(i.expressionType),o=(0,cz.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=PEe;var Zi={};Object.defineProperty(Zi,"__esModule",{value:!0}),Zi.Joins=Zi.ExpressionJoin=Zi.KeyJoin=Zi.Join=void 0;const MEe=ne,UEe=fn,jEe=l1,qEe=bs,HEe=Ve,zEe=Gr,QEe=bn,xz=Vr;class SL extends HEe.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=zEe.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new jEe.JoinSpaceField(this))}getStructDefFromExpr(){const e=this.sourceExpr.getSource();return e?e.structDef():(this.sourceExpr.sqLog("Cannot great a source to join from"),xz.ErrorFactory.structDef)}}Zi.Join=SL;class GEe extends SL{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(){var e;const n=this.getStructDefFromExpr(),r={...n,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return n.structSource.type==="query"?r.name=this.name.refString:r.as=this.name.refString,this.note&&(r.annotation=this.note),(e=this.document())===null||e===void 0||e.rememberToAddModelAnnotations(r),r}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}Zi.KeyJoin=GEe;class WEe extends SL{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,MEe.isJoinOn)(i)&&(i.onExpression=(0,UEe.compressExpr)(r.value))}structDef(){var e;const n=this.sourceExpr.getSource();if(!n)return this.sourceExpr.sqLog("Cannot create a source to join from"),xz.ErrorFactory.structDef;const r=n.structDef();let i="left";this.inExperiment("join_types",!0)&&(i=this.matrixOperation);const s={...r,structRelationship:{type:this.joinType,matrixOperation:i},location:this.location};return r.structSource.type==="query"?(s.name=this.name.refString,delete s.as):s.as=this.name.refString,this.note&&(s.annotation=this.note),(e=this.document())===null||e===void 0||e.rememberToAddModelAnnotations(s),s}}Zi.ExpressionJoin=WEe;class VEe extends qEe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=QEe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Zi.Joins=VEe;var Vh={};Object.defineProperty(Vh,"__esModule",{value:!0}),Vh.FieldListEdit=void 0;const YEe=Ve;class XEe extends YEe.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Vh.FieldListEdit=XEe;var Yh={};Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.PrimaryKey=void 0;const KEe=Ve;class JEe extends KEe.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Yh.PrimaryKey=JEe;var Xh={};Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.Views=void 0;const ZEe=bs;class e3e extends ZEe.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Xh.Views=e3e;var Kh={};Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.TimezoneStatement=void 0;const t3e=Ve;class n3e extends t3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}Kh.TimezoneStatement=n3e;var D0={};Object.defineProperty(D0,"__esModule",{value:!0}),D0.ModelAnnotation=D0.ObjectAnnotation=void 0;const r3e=al,i3e=Ve;class dz extends i3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}D0.ObjectAnnotation=dz;class s3e extends dz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=r3e.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)}}D0.ModelAnnotation=s3e;var F0={},N_={};Object.defineProperty(N_,"__esModule",{value:!0}),N_.RenameSpaceField=void 0;const o3e=Wr;class u3e extends o3e.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()}}N_.RenameSpaceField=u3e,Object.defineProperty(F0,"__esModule",{value:!0}),F0.Renames=F0.RenameField=void 0;const a3e=N_,hz=Ve,l3e=Wr;class c3e extends hz.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 l3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new a3e.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}F0.RenameField=c3e;class f3e extends hz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}F0.Renames=f3e,Object.defineProperty(a1,"__esModule",{value:!0}),a1.RefinedSource=void 0;const x3e=ne,d3e=Wh,h3e=N0,p3e=Uo,g3e=Zi,m3e=Vh,y3e=Yh,E3e=Xh,A3e=Mo,S3e=Kh,v3e=D0,_3e=F0;class C3e extends A3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(){return this.withParameters([])}withParameters(e){var n;let r,i;const s=[],o=[];let u;for(const h of this.refinement.list){if(h instanceof v3e.ObjectAnnotation)continue;const p=h;h instanceof y3e.PrimaryKey?(r&&(r.log("Primary key already defined"),h.log("Primary key redefined")),r=h):h instanceof m3e.FieldListEdit?(i&&(i.log("Too many accept/except statements"),h.log("Too many accept/except statements")),i=h):h instanceof h3e.DeclareFields||h instanceof g3e.Joins||h instanceof E3e.Views||h instanceof _3e.Renames?s.push(...h.list):h instanceof p3e.Filter?o.push(h):h instanceof S3e.TimezoneStatement?u=h.tz:p.log(`Unexpected source property: '${p.elementType}'`)}const a=structuredClone(this.source.structDef());r&&(a.primaryKey=r.field.name);const l=d3e.RefinedSpace.filteredFrom(a,i);if(u&&l.setTimezone(u),l.pushFields(...s),e&&l.addParameters(e),r){const h=r.field.getField(l);h.error&&r.log(h.error)}const c=l.structDef(),f=c.filterList||[];let x=!1;for(const h of o)for(const p of h.list){const m=p.filterExpression(l);(0,x3e.expressionIsCalculation)(m.expressionType)?p.log("Can't use aggregate computations in top level filters"):(f.push(m),x=!0)}return x?{...c,filterList:f}:((n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(c),c)}}a1.RefinedSource=C3e;var Qu={};Object.defineProperty(Qu,"__esModule",{value:!0}),Qu.SourceQueryElement=void 0;const b3e=Ve;class vL extends b3e.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 vL&&n.errored){e=!1;break}return e}}Qu.SourceQueryElement=vL;var D_={},sx={};Object.defineProperty(sx,"__esModule",{value:!0}),sx.QuerySource=void 0;const T3e=Mo;class R3e extends T3e.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(){var e;const n=this.query.queryComp(!1),r={...n.outputStruct,structSource:{type:"query",query:n.query}};return(e=this.document())===null||e===void 0||e.rememberToAddModelAnnotations(r),r}}sx.QuerySource=R3e;var Jh={},x1={};Object.defineProperty(x1,"__esModule",{value:!0}),x1.QueryBase=void 0;const O3e=jh,N3e=Ve;class D3e extends N3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,O3e.detectAndRemovePartialStages)(e.pipeline,this)}}}x1.QueryBase=D3e,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.QueryArrow=void 0;const F3e=ne,w3e=Mo,pz=Yr,L3e=x1;class I3e extends L3e.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 w3e.Source){const l=e?this.source.structRef():this.source.structDef();r={type:"query",structRef:l,pipeline:[],location:this.location},n=(0,F3e.refIsStructDef)(l)?l:this.source.structDef(),i=new pz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new pz.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}}}Jh.QueryArrow=I3e,Object.defineProperty(D_,"__esModule",{value:!0}),D_.SQArrow=void 0;const $3e=Qu,B3e=sx,k3e=Jh;class P3e extends $3e.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 k3e.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 B3e.QuerySource(e);return this.has({asSource:n}),n}}D_.SQArrow=P3e;var F_={},Zh={},Ts={};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getStructFieldDef=Ts.getFinalStruct=Ts.opOutputStruct=void 0;const M3e=f0,U3e=vf,j3e=ne,gz=Vr;function mz(t,e,n){const r=gz.ErrorFactory.isErrorStructDef(e);if((0,j3e.isPartialSegment)(n)&&(n={...n,type:"reduce"}),!r)try{return U3e.Segment.nextStructDef(e,n)}catch(i){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${i.message}
|
|
1283
1283
|
QUERY: ${(0,M3e.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...gz.ErrorFactory.structDef,dialect:e.dialect}}Ts.opOutputStruct=mz;function q3e(t,e,n){for(const r of n)e=mz(t,e,r);return e}Ts.getFinalStruct=q3e;function H3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ts.getStructFieldDef=H3e,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.QueryRefine=void 0;const z3e=Yr,Q3e=Ts,G3e=x1;class W3e extends G3e.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 z3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Q3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Zh.QueryRefine=W3e;var d1={},w0={},Tn={};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.dateOffset=Tn.timestampOffset=Tn.timeResult=Tn.resolution=Tn.castDateToTimestamp=Tn.castTimestampToDate=Tn.castTo=Tn.timeOffset=void 0;const V3e=ne,yz=fn;function Y3e(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}Tn.timeOffset=Y3e;function X3e(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,V3e.isAtomicFieldType)(n)&&(i.srcType=n),[i]}Tn.castTo=X3e;function K3e(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}Tn.castTimestampToDate=K3e;function J3e(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}Tn.castDateToTimestamp=J3e;function Z3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Tn.resolution=Z3e;function eAe(t,e){return e?{...t,timeframe:e}:t}Tn.timeResult=eAe;function tAe(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,yz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}Tn.timestampOffset=tAe;function nAe(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,yz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}Tn.dateOffset=nAe,Object.defineProperty(w0,"__esModule",{value:!0}),w0.NamedSource=w0.IsValueBlock=void 0;const w_=ne,rAe=Mo,iAe=Vr,sAe=Tn,L_=Ve;class Ez extends L_.MalloyElement{constructor(e){super(),this.isMap=e,this.elementType="isValueBlock",this.has(e)}}w0.IsValueBlock=Ez;class oAe extends rAe.Source{constructor(e,n={}){super(),this.ref=e,this.elementType="namedSource",n&&Object.keys(n).length>0&&(this.isBlock=new Ez(n),this.has({parameterValues:this.isBlock})),e instanceof L_.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof L_.ModelEntryReference?this.ref.name:this.ref}structRef(){if(this.isBlock)return this.structDef();const e=this.modelEntry(this.ref);return e&&!e.exported?this.structDef():this.refName}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 L_.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,w_.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}}structDef(){var e,n;const r=this.modelStruct();if(!r){const o=iAe.ErrorFactory.structDef,u=`${this.refName}-undefined`;return o.name=o.name+u,o.dialect=o.dialect+u,o}const i={...r.parameters},s=((e=this.isBlock)===null||e===void 0?void 0:e.isMap)||{};for(const[o,u]of Object.entries(s)){const a=i[o];if(!a)this.log(`Value given for undeclared parameter '${o}`);else if((0,w_.isValueParameter)(a))if(a.constant)u.log(`Cannot override constant parameter ${o}`);else{const l=u.constantValue();let c=l.value;l.dataType!==a.type&&(0,w_.isCastType)(a.type)&&(c=(0,sAe.castTo)(a.type,l.value,l.dataType,!0)),a.value=c}else a.condition=u.constantCondition(a.type).value}for(const o in r.parameters)(0,w_.paramHasValue)(i[o])||this.log(`Value not provided for required parameter ${o}`);return(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(r),r}}w0.NamedSource=oAe;var h1={},I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.QueryHeadStruct=void 0;const uAe=ne,aAe=Mo,lAe=w0;class cAe extends aAe.Source{constructor(e){super(),this.fromRef=e,this.elementType="internalOnlyQueryHead"}structRef(){return this.fromRef}structDef(){if((0,uAe.refIsStructDef)(this.fromRef))return this.fromRef;const e=new lAe.NamedSource(this.fromRef);return this.has({exploreReference:e}),e.structDef()}}I_.QueryHeadStruct=cAe,Object.defineProperty(h1,"__esModule",{value:!0}),h1.QueryReference=void 0;const _L=Vr,fAe=Ve,xAe=I_,dAe=ne,hAe=Ts;class pAe extends fAe.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:_L.ErrorFactory.structDef,outputStruct:_L.ErrorFactory.structDef,query:_L.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new xAe.QueryHeadStruct(r.structRef);this.has({queryHead:s});const o=s.structDef(),u=(0,hAe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,dAe.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}}h1.QueryReference=pAe,Object.defineProperty(d1,"__esModule",{value:!0}),d1.SQReference=void 0;const gAe=Qu,mAe=sx,yAe=w0,Az=h1;class EAe extends gAe.SourceQueryElement{constructor(e){super({ref:e}),this.ref=e,this.elementType="sq-reference"}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new Az.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`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"){const n=new Az.QueryReference(this.ref);this.asSource=new mAe.QuerySource(n)}else if(e.type==="struct")this.asSource=new yAe.NamedSource(this.ref);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}}d1.SQReference=EAe,Object.defineProperty(F_,"__esModule",{value:!0}),F_.SQRefine=void 0;const AAe=Qu,SAe=sx,vAe=Zh,_Ae=d1;class CAe extends AAe.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 _Ae.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 vAe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new SAe.QuerySource(e);return this.has({queryAsSource:n}),n}}}F_.SQRefine=CAe;var $_={},p1={};Object.defineProperty(p1,"__esModule",{value:!0}),p1.QueryRaw=void 0;const bAe=ne,TAe=Ve;class RAe extends TAe.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef():this.source.structDef(),r=(0,bAe.refIsStructDef)(n)?n:this.source.structDef();return{query:{type:"query",structRef:n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}p1.QueryRaw=RAe;var g1={},B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.makeSQLBlock=void 0;const OAe=ne,NAe=Wt;function DAe(t,e){const n={name:`md5:/${e||"$default"}//${FAe(t)}`,select:t};return e&&(n.connection=e),n}B_.makeSQLBlock=DAe;function FAe(t){const e=t.map(n=>(0,OAe.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,NAe.generateHash)(e.join(";"))}Object.defineProperty(g1,"__esModule",{value:!0}),g1.SQLSource=void 0;const wAe=B_,LAe=Mo,k_=Vr;class IAe extends LAe.Source{constructor(e,n){super(),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1,this.has({connectionName:e,select:n})}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,wAe.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return 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 k_.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"),k_.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(`
|
|
1284
|
-
`)),k_.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"),k_.ErrorFactory.structDef}}g1.SQLSource=IAe,Object.defineProperty($_,"__esModule",{value:!0}),$_.SQSource=void 0;const $Ae=Qu,BAe=p1,kAe=g1;class PAe extends $Ae.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 kAe.SQLSource){const e=new BAe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}$_.SQSource=PAe;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.SQExtend=void 0;const MAe=a1,UAe=Qu;class jAe extends UAe.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 MAe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}P_.SQExtend=jAe;var M_={},L0={};Object.defineProperty(L0,"__esModule",{value:!0}),L0.isComparison=L0.Comparison=void 0;var CL;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(CL||(L0.Comparison=CL={}));function qAe(t){return Object.values(CL).includes(t)}L0.isComparison=qAe;var m1={},un={};Object.defineProperty(un,"__esModule",{value:!0}),un.FT=void 0;const HAe=Cu;function ox(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Dr{static in(e,n){return e?n.find(i=>Dr.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=>Dr.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,HAe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}un.FT=Dr,Dr.nullT=ox("null"),Dr.numberT=ox("number"),Dr.stringT=ox("string"),Dr.dateT=ox("date"),Dr.timestampT=ox("timestamp"),Dr.boolT=ox("boolean"),Dr.anyAtomicT=[Dr.numberT,Dr.stringT,Dr.dateT,Dr.timestampT,Dr.boolT],Dr.aggregateBoolT=ox("boolean","aggregate");var ep={},fr={};Object.defineProperty(fr,"__esModule",{value:!0}),fr.errorFor=void 0;function zAe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}fr.errorFor=zAe;var pt={},tp={};Object.defineProperty(tp,"__esModule",{value:!0}),tp.isEquality=tp.Equality=void 0;var bL;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(bL||(tp.Equality=bL={}));function QAe(t){return Object.values(bL).includes(t)}tp.isEquality=QAe;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.isGranularResult=void 0;function GAe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}np.isGranularResult=GAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.applyBinary=pt.getMorphicValue=pt.ExprDuration=pt.ExpressionDef=void 0;const Rn=ne,rp=fr,cl=fn,ux=un,U_=Tn,WAe=L0,VAe=tp,Sz=np,YAe=Ve;class XAe extends Error{}class vz extends YAe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=ux.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!ux.FT.in(n,this.legalChildTypes)?(e.log(`'${this.elementType}' Can't use type ${ux.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Oz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Rn.expressionIsAggregate)(e.expressionType)}}pt.ExpressionDef=vz;class TL extends vz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[ux.FT.timestampT,ux.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(!ux.FT.typeEq(s,ux.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,rp.errorFor)("illegal unit expression");let o;if((0,Sz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,U_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,U_.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,U_.timeResult)({dataType:"date",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,U_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,rp.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}pt.ExprDuration=TL;function _z(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function KAe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}pt.getMorphicValue=KAe;function Cz(t,e,n,r){const i=(0,Rn.isTimeFieldType)(e.dataType),s=(0,Rn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=_z(e,"timestamp"),u=_z(r,"timestamp");if(o&&u)return(0,cl.compose)(o,n,u)}else return(0,cl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function bz(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function JAe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function ZAe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("boolean",i,s);if(o)return o;if(i.dataType==="unsupported"||s.dataType==="unsupported"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=E1(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=Cz(e,i,n,s)||(0,cl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,cl.compose)(i.value,"LIKE",s.value);else{const l=bz(i,s);if(l===void 0)throw new XAe("Incompatible types for match('~') operator");a=l}a=(0,cl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=JAe(i,n,s);l?a=l:a=(0,cl.nullsafeNot)(bz(i,s)||(0,cl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function eSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("boolean",i,s);if(o)return o;const u=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),a=E1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Cz(e,i,n,s)||(0,cl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Tz(t,...e){return e.includes(t)}function tSe(t,...e){for(const n of e)if(n.dataType!==t)return!1;return!0}function Rz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("number",i,s);if(o)return o;const u=E1(e,i,r,s);if(u)return u;const a=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType);return tSe("number",i,s)?{dataType:"number",expressionType:a,value:(0,cl.compose)(i.value,n,s.value),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)}:(e.log(`Non numeric('${i.dataType},${s.dataType}') value with '${n}'`),(0,rp.errorFor)("numbers required"))}function nSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=E1(e,i,r,s);if(o)return o;const u=(0,Rn.isTimeFieldType)(i.dataType),a=y1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Sz.isGranularResult)(i))l=new TL(r,i.timeframe);else if(i.dataType==="date")l=new TL(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,rp.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Rz(t,e,n,r)}function Oz(t,e,n,r){if((0,VAe.isEquality)(n))return ZAe(t,e,n,r);if((0,WAe.isComparison)(n))return eSe(t,e,n,r);if(Tz(n,"+","-"))return nSe(t,e,n,r);if(n==="*")return Rz(t,e,n,r);if(Tz(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=E1(e,i,r,s);if(o)return e.log("Cannot operate with unsupported type"),o;const u=y1("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,rp.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,rp.errorFor)("applybinary bad operator")}pt.applyBinary=Oz;function y1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Rn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Rn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function E1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Rn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Rn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="unsupported")return t.log("Unsupported type not allowed in expression"),{...i,dataType:r.dataType};if(r.dataType==="unsupported")return n.log("Unsupported type not allowed in expression"),i}Object.defineProperty(ep,"__esModule",{value:!0}),ep.BinaryBoolean=void 0;const Nz=ne,rSe=fr,iSe=un,sSe=pt,oSe=fn;class uSe extends sSe.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=[iSe.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,Nz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Nz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,oSe.compose)(n.value,this.op,r.value)}}return(0,rSe.errorFor)("logial required boolean")}}ep.BinaryBoolean=uSe,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ExprCompare=void 0;const Vt=un,aSe=ep,lSe={"~":[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 cSe extends aSe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=lSe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}m1.ExprCompare=cSe;var A1={},ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.ExprTime=void 0;const fSe=ne,xSe=fn,dSe=pt;class RL extends dSe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,fSe.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,xSe.compressExpr)([i])}return new RL(e,r,n.expressionType)}}ip.ExprTime=RL;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.Range=void 0;const Dz=ne,hSe=fr,pSe=pt,gSe=fn;class mSe extends pSe.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,Dz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Dz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,gSe.compose)(u.value,s,a.value)}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,hSe.errorFor)("a range is not a value")}}I0.Range=mSe,Object.defineProperty(A1,"__esModule",{value:!0}),A1.ExprGranularTime=void 0;const OL=ne,ySe=fr,Fz=un,wz=Tn,ESe=pt,j_=ip,Lz=I0;class ASe extends ESe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Fz.FT.timestampT,Fz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,OL.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,OL.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,ySe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=j_.ExprTime.fromValue("timestamp",n),u=new j_.ExprTime("timestamp",(0,wz.timeOffset)("timestamp",n.value,"+",(0,OL.mkExpr)`1`,this.units),n.expressionType);return new Lz.Range(o,u)}const r=new j_.ExprTime("date",n.value,n.expressionType),i=(0,wz.timeOffset)("date",n.value,"+",["1"],this.units),s=new j_.ExprTime("date",i,n.expressionType);return new Lz.Range(r,s)}}A1.ExprGranularTime=ASe,Object.defineProperty(M_,"__esModule",{value:!0}),M_.Apply=void 0;const SSe=L0,vSe=m1,_Se=np,Iz=A1;class CSe extends vSe.ExprCompare{constructor(e,n){super(e,SSe.Comparison.EqualTo,n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,_Se.isGranularResult)(r)&&(n=new Iz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Iz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}M_.Apply=CSe;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.BinaryNumeric=void 0;const bSe=un,TSe=pt;class RSe extends TSe.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=[bSe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}sp.BinaryNumeric=RSe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.Boolean=void 0;const OSe=pt,NSe=un;let DSe=class extends OSe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...NSe.FT.boolT,value:[this.value]}}};q_.Boolean=DSe;var $0={},op={};Object.defineProperty(op,"__esModule",{value:!0}),op.ExprIdReference=void 0;const NL=ne,FSe=fr,wSe=zu,LSe=pt;class ISe extends LSe.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,NL.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,FSe.errorFor)(n.error)}apply(e,n,r){const i=this.fieldReference.getField(e).found;if(i instanceof wSe.SpaceParam){const s=i.parameter();if((0,NL.isConditionParameter)(s)){const o=r.getExpression(e);return{dataType:"boolean",expressionType:o.expressionType,evalSpace:(0,NL.mergeEvalSpaces)(o.evalSpace,"input"),value:[{type:"apply",value:o.value,to:[{type:"parameter",path:this.fieldReference.path}]}]}}}return super.apply(e,n,r)}}op.ExprIdReference=ISe,Object.defineProperty($0,"__esModule",{value:!0}),$0.FunctionOrdering=$0.FunctionOrderBy=void 0;const DL=ne,$z=Ve,$Se=op;class BSe extends $z.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,DL.expressionIsAggregate)(n.expressionType)||((0,DL.expressionIsScalar)(n.expressionType)?(!(this.field instanceof $Se.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,DL.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}$0.FunctionOrderBy=BSe;class kSe extends $z.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))}}$0.FunctionOrdering=kSe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.ExprAddSub=void 0;const PSe=sp;class MSe extends PSe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}H_.ExprAddSub=MSe;var fl={},mt={},S1={};Object.defineProperty(S1,"__esModule",{value:!0}),S1.ReferenceField=void 0;const Bz=Wr;class USe extends Bz.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){if(!this.queryFieldDef){const n=this.fieldRef.getField(e);n.error&&this.fieldRef.log(n.error),this.queryFieldDef={type:"fieldref",path:this.fieldRef.list.map(i=>i.name)};const r=this.referenceTo;if(r instanceof Bz.SpaceField&&r.haveFieldDef){const i=r.haveFieldDef,s=this.fieldRef.note;if(i.annotation||s){const o=s||{};i.annotation&&(o.inherits=i.annotation),this.queryFieldDef.annotation=o}}}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"}}}S1.ReferenceField=USe;var Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.typecheckGroupBy=Yn.typecheckAggregate=Yn.typecheckCalculate=Yn.typecheckDeclare=Yn.typecheckMeasure=Yn.typecheckDimension=Yn.typecheckIndex=Yn.typecheckProject=void 0;const On=Cu;function jSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckProject=jSe;function qSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,On.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`)}}Yn.typecheckIndex=qSe;function HSe(t,e){if(!(0,On.expressionIsScalar)(t.expressionType))if((0,On.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,On.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`)}Yn.typecheckDimension=HSe;function zSe(t,e){if(!(0,On.expressionIsAggregate)(t.expressionType))if((0,On.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,On.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`)}Yn.typecheckMeasure=zSe;function QSe(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,On.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Yn.typecheckDeclare=QSe;function GSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,On.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?`)}}Yn.typecheckCalculate=GSe;function WSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckAggregate=WSe;function VSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckGroupBy=VSe,Object.defineProperty(mt,"__esModule",{value:!0}),mt.FieldReferences=mt.WildcardFieldReference=mt.ViewOrScalarFieldReference=mt.DimensionFieldReference=mt.MeasureFieldReference=mt.DeclareFieldReference=mt.ProjectFieldReference=mt.GroupByFieldReference=mt.AggregateFieldReference=mt.IndexFieldReference=mt.CalculateFieldReference=mt.PartitionByFieldReference=mt.ExpressionFieldReference=mt.AcceptExceptFieldReference=mt.FieldReference=void 0;const YSe=S1,XSe=bs,kz=Ve,Pz=Gr,B0=Yn;class Rs extends kz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Pz.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 YSe.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}}mt.FieldReference=Rs;class KSe extends Rs{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}mt.AcceptExceptFieldReference=KSe;class JSe extends Rs{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}mt.ExpressionFieldReference=JSe;class ZSe extends Rs{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}mt.PartitionByFieldReference=ZSe;class eve extends Rs{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,B0.typecheckCalculate)(e,this)}}mt.CalculateFieldReference=eve;class FL extends Rs{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,B0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return FL.indexOutputName(this.path)}}mt.IndexFieldReference=FL;class tve extends Rs{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,B0.typecheckAggregate)(e,this)}}mt.AggregateFieldReference=tve;class nve extends Rs{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,B0.typecheckGroupBy)(e,this)}}mt.GroupByFieldReference=nve;class rve extends Rs{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,B0.typecheckProject)(e,this)}}mt.ProjectFieldReference=rve;class ive extends Rs{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,B0.typecheckDeclare)(e,this)}}mt.DeclareFieldReference=ive;class sve extends Rs{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,B0.typecheckMeasure)(e,this)}}mt.MeasureFieldReference=sve;class ove extends Rs{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,B0.typecheckDimension)(e,this)}}mt.DimensionFieldReference=ove;class uve extends Rs{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}mt.ViewOrScalarFieldReference=uve;class ave extends kz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Pz.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}.*`:"*"}}mt.WildcardFieldReference=ave;class lve extends XSe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}mt.FieldReferences=lve,Object.defineProperty(fl,"__esModule",{value:!0}),fl.ExprAggregateFunction=void 0;const Mz=ne,cve=Wt,v1=fr,fve=Yr,xve=ix,dve=un,hve=mt,pve=pt,gve=Wr,mve=op;class yve extends pve.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[dve.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,Mz.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>Eve(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof xve.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,v1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,v1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,v1.errorFor)("agggregate without expression");if((0,Mz.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,v1.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=LL(a,c),p=IL(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=Ave(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,v1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...wL(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...wL(e,r))}return n}}fl.ExprAggregateFunction=yve;function Eve(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 wL(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 fve.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof gve.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,cve.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=wL(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function LL(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 IL(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 Ave(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=LL(i,e),o=IL(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=LL(l,e),f=IL(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 hve.FieldReference?`${n.refString}.${r}()`:n instanceof mve.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 z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.ExprAlternationTree=void 0;const Uz=ne,Sve=fr,vve=ep,_ve=fn;class Cve extends vve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Uz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Uz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,_ve.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,Sve.errorFor)("no value from alternation tree")}}z_.ExprAlternationTree=Cve;var up={};Object.defineProperty(up,"__esModule",{value:!0}),up.ExprAsymmetric=void 0;const bve=fl;class Tve extends bve.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}`}}}}up.ExprAsymmetric=Tve;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ExprAvg=void 0;const Rve=up;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Q_.ExprAvg=Ove;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ExprCast=void 0;const Nve=Tn,Dve=pt,Fve=fn;class wve extends Dve.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="unsupported";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:"unsupported":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,Fve.compressExpr)((0,Nve.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}G_.ExprCast=wve;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprCoalesce=void 0;const $L=Cu,jz=un,Lve=pt;class Ive extends Lve.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=jz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(jz.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,$L.maxExpressionType)(n.expressionType,r.expressionType),value:(0,$L.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,$L.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}W_.ExprCoalesce=Ive;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprCount=void 0;const $ve=fl;class Bve extends $ve.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}V_.ExprCount=Bve;var Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprCountDistinct=void 0;const X_=un,kve=fl;class Pve extends kve.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[X_.FT.numberT,X_.FT.stringT,X_.FT.dateT,X_.FT.timestampT]}}Y_.ExprCountDistinct=Pve;var K_={},k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.Limit=void 0;const Mve=Ve,Uve=bn;class jve extends Mve.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Uve.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}k0.Limit=jve;var ap={};Object.defineProperty(ap,"__esModule",{value:!0}),ap.PartitionBy=void 0;const qve=Ve;class Hve extends qve.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}ap.PartitionBy=Hve;var _1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.ExprFunc=void 0;const ro=ne,xl=fr,zve=ix,Qve=pt,qz=fn;class Gve extends Qve.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(N=>N.getExpression(e));if(this.isRaw){let N="scalar",L;const M=[`${this.name}(`];for(const W of a)N=(0,ro.maxExpressionType)(N,W.expressionType),L?M.push(","):L=W.dataType,M.push(...W.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:L)!==null&&i!==void 0?i:"number",expressionType:N,value:(0,qz.compressExpr)(M),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(W=>W.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,xl.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,xl.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 N=this.source.getField(e).found;if(N){const L=N.typeDesc();if((0,ro.isAtomicFieldType)(L.dataType))c={dataType:L.dataType,expressionType:L.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:L.evalSpace},f=this.source.path.slice(0,-1);else if(!(N instanceof zve.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${L.dataType}`;return this.log(M),(0,xl.errorFor)(M)}}else{const L=`Reference to undefined value ${this.source.refString}`;return this.log(L),(0,xl.errorFor)(L)}}const x=[...c?[c]:[],...a],h=Wve(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(N=>N.dataType).join(", ")})`),(0,xl.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const N of m){const L=N.argIndex-(c?1:0),M=(0,ro.expressionIsScalar)(N.maxExpressionType)?"scalar":"scalar or aggregate";this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must be ${M}, but received ${N.actualExpressionType}`)}for(const N of g){const L=N.argIndex-(c?1:0),M=N.maxEvalSpace==="literal"?"literal":N.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must be ${M}, but received ${N.actualEvalSpace}`)}for(const N of y){const L=N.argIndex-(c?1:0);this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(N=>N.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(N=>N.dataType).join(", ")}) with source`),(0,xl.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(N=>N.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const N=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(N||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||N){const L=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(q=>N?q.getAnalyticOrderBy(e):q.getAggregateOrderBy(e,L));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const N=[];for(const L of n.partitionBys)for(const M of L.partitionFields){const q=M.getField(e);q.found===void 0?M.log(`${M.refString} is not defined`):(0,ro.expressionIsAnalytic)(q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(q.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):N.push(M.nameString)}S.partitionBy=N}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return(0,xl.errorFor)(`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const N=x[0].value;if(N.length!==1||typeof N[0]=="string"||N[0].type!=="dialect"||N[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const L=N[0].literal,M=Vve(L),q=M.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(q.length>0){const W=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(W),(0,xl.errorFor)(`${W}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}v=[{type:"sql-string",e:M.map(W=>W.type==="string"?W.value:W.name==="TABLE"?{type:"source-reference"}:{type:"field",path:[W.name]})}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,xl.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(N=>N.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,qz.compressExpr)(v),evalSpace:R}}}_1.ExprFunc=Gve;function Wve(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 Vve(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(K_,"__esModule",{value:!0}),K_.ExprProps=void 0;const Yve=ne,Xve=fr,Kve=un,Jve=$0,Zve=k0,e_e=ap,t_e=pt,n_e=_1;class r_e extends t_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=Kve.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,Yve.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,Xve.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof e_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof Zve.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 Jve.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 n_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}K_.ExprProps=r_e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprLogicalOp=void 0;const i_e=ep,Hz=un;class s_e extends i_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Hz.FT.boolT,Hz.FT.aggregateBoolT]}}J_.ExprLogicalOp=s_e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprMax=void 0;const eC=un,o_e=fl;class u_e extends o_e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[eC.FT.numberT,eC.FT.stringT,eC.FT.dateT,eC.FT.timestampT]}returns(e){return e.dataType}}Z_.ExprMax=u_e;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.ExprMin=void 0;const nC=un,a_e=fl;class l_e extends a_e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[nC.FT.numberT,nC.FT.stringT,nC.FT.dateT,nC.FT.timestampT]}returns(e){return e.dataType}}tC.ExprMin=l_e;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.ExprMinus=void 0;const c_e=fr,zz=un,f_e=pt;class x_e extends f_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[zz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return zz.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,c_e.errorFor)("negate requires number")}}rC.ExprMinus=x_e;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.ExprMulDiv=void 0;const d_e=sp;class h_e extends d_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}iC.ExprMulDiv=h_e;var sC={},C1={};Object.defineProperty(C1,"__esModule",{value:!0}),C1.Unary=void 0;const p_e=pt;class g_e extends p_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}C1.Unary=g_e,Object.defineProperty(sC,"__esModule",{value:!0}),sC.ExprNot=void 0;const Qz=un,m_e=C1,y_e=fn;class E_e extends m_e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Qz.FT.boolT,Qz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,y_e.nullsafeNot)(n.value):["false"]}}}sC.ExprNot=E_e;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.ExprNow=void 0;const A_e=pt;class S_e extends A_e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}oC.ExprNow=S_e;var uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprNULL=void 0;const v_e=pt;class __e extends v_e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}uC.ExprNULL=__e;var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprNumber=void 0;const C_e=un,b_e=pt;class T_e extends b_e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...C_e.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}aC.ExprNumber=T_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprParens=void 0;const R_e=pt;class O_e extends R_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:["(",...n.value,")"]}}}lC.ExprParens=O_e;var cC={};Object.defineProperty(cC,"__esModule",{value:!0}),cC.ExprRegEx=void 0;const N_e=pt;class D_e extends N_e.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}cC.ExprRegEx=D_e;var fC={};Object.defineProperty(fC,"__esModule",{value:!0}),fC.ExprString=void 0;const F_e=pt,w_e=un;class L_e extends F_e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...w_e.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}fC.ExprString=L_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprSum=void 0;const I_e=up;class $_e extends I_e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}xC.ExprSum=$_e;var dC={};Object.defineProperty(dC,"__esModule",{value:!0}),dC.ExprTimeExtract=void 0;const ax=ne,P0=fr,BL=pt,B_e=I0;class b1 extends BL.ExpressionDef{static extractor(e){const n=b1.pluralMap[e];if(n)return n;if((0,ax.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=b1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,P0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof B_e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,ax.maxExpressionType)(i.expressionType,s.expressionType),u=(0,ax.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,P0.errorFor)("extract from error").value};if(!(0,ax.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,P0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,ax.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,P0.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,BL.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,BL.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,P0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,P0.errorFor)(`${n} civil extraction`)):(0,ax.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,P0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,ax.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,P0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}dC.ExprTimeExtract=b1,b1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var hC={},jo={},lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.FieldName=void 0;const k_e=Ve;class P_e extends k_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])}}lx.FieldName=P_e;var pC={};Object.defineProperty(pC,"__esModule",{value:!0}),pC.QueryInputSpace=void 0;const M_e=Zi,U_e=f1,j_e=Wh;class q_e extends j_e.RefinedSpace{constructor(e,n){const r=new U_e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof M_e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}pC.QueryInputSpace=q_e;var H_e=O&&O.__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]}),z_e=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Q_e=O&&O.__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)&&H_e(e,t,n);return z_e(e,t),e};Object.defineProperty(jo,"__esModule",{value:!0}),jo.ReduceFieldSpace=jo.QuerySpace=jo.QueryOperationSpace=void 0;const gC=Q_e(ne),kL=O0,G_e=lx,W_e=Wr,V_e=mt,Y_e=Wh,X_e=c1,K_e=Yr,J_e=pC;class Gz extends Y_e.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new J_e.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 K_e.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))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();gC.isAtomicFieldType(l.dataType)&&gC.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)}}jo.QueryOperationSpace=Gz;class Wz extends Gz{addRefineFromFields(e){var n;if(gC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new G_e.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 X_e.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof V_e.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof W_e.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)&&!eCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(gC.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,kL.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,kL.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,kL.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}}jo.QuerySpace=Wz;class Z_e extends Wz{constructor(){super(...arguments),this.segmentType="reduce"}}jo.ReduceFieldSpace=Z_e;function eCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(hC,"__esModule",{value:!0}),hC.ExprUngroup=void 0;const Vz=ne,PL=fr,tCe=jo,nCe=un,rCe=pt;class iCe extends rCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=nCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Vz.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,PL.errorFor)("ungrouped scalar");if((0,Vz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,PL.errorFor)("doubly-ungrouped aggregate");const r={type:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof tCe.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,PL.errorFor)("ungrouped type check")}}hC.ExprUngroup=iCe;var mC={};Object.defineProperty(mC,"__esModule",{value:!0}),mC.ForRange=void 0;const Yz=Cu,ML=fr,Xz=un,yC=Tn,sCe=pt,EC=ip,Kz=I0;class oCe extends sCe.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=[Xz.FT.timestampT,Xz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,ML.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,Yz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Yz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,ML.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,yC.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,yC.timeOffset)("date",i.value,"+",o.value,u),g=new EC.ExprTime("date",m);return new Kz.Range(p,g).apply(e,n,r)}const l=EC.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,yC.castDateToTimestamp)(f),c=new EC.ExprTime("timestamp",f,i.expressionType)}const x=(0,yC.timeOffset)("timestamp",f,"+",o.value,u),h=new EC.ExprTime("timestamp",x,i.expressionType);return new Kz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,ML.errorFor)("range has no value")}}mC.ForRange=oCe;var xr={},es={};Object.defineProperty(es,"__esModule",{value:!0});class cx extends Error{}class uCe extends cx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class aCe extends cx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class lCe extends cx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class T1 extends cx{}class Jz extends cx{constructor(e){super(`Invalid unit ${e}`)}}class io extends cx{}class M0 extends cx{constructor(){super("Zone is an abstract class")}}const ke="numeric",qo="short",Os="long",UL={year:ke,month:ke,day:ke},Zz={year:ke,month:qo,day:ke},cCe={year:ke,month:qo,day:ke,weekday:qo},eQ={year:ke,month:Os,day:ke},tQ={year:ke,month:Os,day:ke,weekday:Os},nQ={hour:ke,minute:ke},rQ={hour:ke,minute:ke,second:ke},iQ={hour:ke,minute:ke,second:ke,timeZoneName:qo},sQ={hour:ke,minute:ke,second:ke,timeZoneName:Os},oQ={hour:ke,minute:ke,hourCycle:"h23"},uQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},aQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:qo},lQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},cQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},fQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},xQ={year:ke,month:qo,day:ke,hour:ke,minute:ke},dQ={year:ke,month:qo,day:ke,hour:ke,minute:ke,second:ke},fCe={year:ke,month:qo,day:ke,weekday:qo,hour:ke,minute:ke},hQ={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:qo},pQ={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:qo},gQ={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},mQ={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function At(t){return typeof t>"u"}function fx(t){return typeof t=="number"}function AC(t){return typeof t=="number"&&t%1===0}function xCe(t){return typeof t=="string"}function dCe(t){return Object.prototype.toString.call(t)==="[object Date]"}function yQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function hCe(t){return Array.isArray(t)?t:[t]}function EQ(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 pCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function lp(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function dl(t,e,n){return AC(t)&&t>=e&&t<=n}function gCe(t,e){return t-e*Math.floor(t/e)}function jn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function U0(t){if(!(At(t)||t===null||t===""))return parseInt(t,10)}function xx(t){if(!(At(t)||t===null||t===""))return parseFloat(t)}function jL(t){if(!(At(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function qL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function R1(t){return t%4===0&&(t%100!==0||t%400===0)}function O1(t){return R1(t)?366:365}function SC(t,e){const n=gCe(e-1,12)+1,r=t+(e-n)/12;return n===2?R1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function HL(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 vC(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 zL(t){return t>99?t:t>60?1900+t:2e3+t}function AQ(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 _C(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 SQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function CC(t,e){const n={};for(const r in t)if(lp(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=SQ(i)}return n}function N1(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}${jn(n,2)}:${jn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${jn(n,2)}${jn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function bC(t){return pCe(t,["hour","minute","second","millisecond"])}const vQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,mCe=["January","February","March","April","May","June","July","August","September","October","November","December"],_Q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],yCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function CQ(t){switch(t){case"narrow":return[...yCe];case"short":return[..._Q];case"long":return[...mCe];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 bQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],TQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ECe=["M","T","W","T","F","S","S"];function RQ(t){switch(t){case"narrow":return[...ECe];case"short":return[...TQ];case"long":return[...bQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const OQ=["AM","PM"],ACe=["Before Christ","Anno Domini"],SCe=["BC","AD"],vCe=["B","A"];function NQ(t){switch(t){case"narrow":return[...vCe];case"short":return[...SCe];case"long":return[...ACe];default:return null}}function _Ce(t){return OQ[t.hour<12?0:1]}function CCe(t,e){return RQ(e)[t.weekday-1]}function bCe(t,e){return CQ(e)[t.month-1]}function TCe(t,e){return NQ(e)[t.year<0?0:1]}function RCe(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 DQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const OCe={D:UL,DD:Zz,DDD:eQ,DDDD:tQ,t:nQ,tt:rQ,ttt:iQ,tttt:sQ,T:oQ,TT:uQ,TTT:aQ,TTTT:lQ,f:cQ,ff:xQ,fff:hQ,ffff:gQ,F:fQ,FF:dQ,FFF:pQ,FFFF:mQ};class ts{static create(e,n={}){return new ts(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 OCe[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 jn(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?_Ce(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?bCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?CCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=ts.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?TCe(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 DQ(ts.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=ts.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 DQ(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 cp=class{get type(){throw new M0}get name(){throw new M0}get ianaName(){return this.name}get isUniversal(){throw new M0}offsetName(e,n){throw new M0}formatOffset(e,n){throw new M0}offset(e){throw new M0}equals(e){throw new M0}get isValid(){throw new M0}},QL=null;class TC extends cp{static get instance(){return QL===null&&(QL=new TC),QL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return AQ(e,n,r)}formatOffset(e,n){return N1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let RC={};function NCe(t){return RC[t]||(RC[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"})),RC[t]}const DCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function FCe(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 wCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=DCe[s];s==="era"?r[u]=o:At(u)||(r[u]=parseInt(o,10))}return r}let OC={};class Gu extends cp{static create(e){return OC[e]||(OC[e]=new Gu(e)),OC[e]}static resetCache(){OC={},RC={}}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=Gu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return AQ(e,n,r,this.name)}formatOffset(e,n){return N1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=NCe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?wCe(r,n):FCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=HL({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 GL=null;class Xr extends cp{static get utcInstance(){return GL===null&&(GL=new Xr(0)),GL}static instance(e){return e===0?Xr.utcInstance:new Xr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Xr(_C(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${N1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${N1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return N1(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 FQ extends cp{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 j0(t,e){if(At(t)||t===null)return e;if(t instanceof cp)return t;if(xCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Xr.utcInstance:Xr.parseSpecifier(n)||Gu.create(t)}else return fx(t)?Xr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new FQ(t)}let wQ=()=>Date.now(),LQ="system",IQ=null,$Q=null,BQ=null,kQ;class qn{static get now(){return wQ}static set now(e){wQ=e}static set defaultZone(e){LQ=e}static get defaultZone(){return j0(LQ,TC.instance)}static get defaultLocale(){return IQ}static set defaultLocale(e){IQ=e}static get defaultNumberingSystem(){return $Q}static set defaultNumberingSystem(e){$Q=e}static get defaultOutputCalendar(){return BQ}static set defaultOutputCalendar(e){BQ=e}static get throwOnInvalid(){return kQ}static set throwOnInvalid(e){kQ=e}static resetCaches(){xn.resetCache(),Gu.resetCache()}}let PQ={};function LCe(t,e={}){const n=JSON.stringify([t,e]);let r=PQ[n];return r||(r=new Intl.ListFormat(t,e),PQ[n]=r),r}let WL={};function VL(t,e={}){const n=JSON.stringify([t,e]);let r=WL[n];return r||(r=new Intl.DateTimeFormat(t,e),WL[n]=r),r}let YL={};function ICe(t,e={}){const n=JSON.stringify([t,e]);let r=YL[n];return r||(r=new Intl.NumberFormat(t,e),YL[n]=r),r}let XL={};function $Ce(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=XL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),XL[i]=s),s}let D1=null;function BCe(){return D1||(D1=new Intl.DateTimeFormat().resolvedOptions().locale,D1)}function kCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=VL(t).resolvedOptions()}catch{n=VL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function PCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function MCe(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function UCe(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function NC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function jCe(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 qCe{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=ICe(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):qL(e,3);return jn(n,this.padTo)}}}class HCe{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&&Gu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.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=VL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class zCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&yQ()&&(this.rtf=$Ce(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):RCe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||qn.defaultLocale,o=s||(i?"en-US":BCe()),u=n||qn.defaultNumberingSystem,a=r||qn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){D1=null,WL={},YL={},XL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=kCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=PCe(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=jCe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return NC(this,e,r,CQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=MCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return NC(this,e,r,RQ,()=>{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]=UCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return NC(this,void 0,e,()=>OQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return NC(this,e,n,NQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.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 qCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new HCe(e,this.intl,n)}relFormatter(e={}){return new zCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return LCe(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 fp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function xp(...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 dp(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 MQ(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=U0(e[n+i]);return[r,null,n+i]}}const UQ=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,QCe=`(?:${UQ.source}?(?:\\[(${vQ.source})\\])?)?`,KL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jQ=RegExp(`${KL.source}${QCe}`),JL=RegExp(`(?:T${jQ.source})?`),GCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,WCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,VCe=/(\d{4})-?(\d{3})/,YCe=MQ("weekYear","weekNumber","weekDay"),XCe=MQ("year","ordinal"),KCe=/(\d{4})-(\d\d)-(\d\d)/,qQ=RegExp(`${KL.source} ?(?:${UQ.source}|(${vQ.source}))?`),JCe=RegExp(`(?: ${qQ.source})?`);function hp(t,e,n){const r=t[e];return At(r)?n:U0(r)}function ZCe(t,e){return[{year:hp(t,e),month:hp(t,e+1,1),day:hp(t,e+2,1)},null,e+3]}function pp(t,e){return[{hours:hp(t,e,0),minutes:hp(t,e+1,0),seconds:hp(t,e+2,0),milliseconds:jL(t[e+3])},null,e+4]}function F1(t,e){const n=!t[e]&&!t[e+1],r=_C(t[e+1],t[e+2]),i=n?null:Xr.instance(r);return[{},i,e+3]}function w1(t,e){const n=t[e]?Gu.create(t[e]):null;return[{},n,e+1]}const ebe=RegExp(`^T?${KL.source}$`),tbe=/^-?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 nbe(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(xx(n)),months:x(xx(r)),weeks:x(xx(i)),days:x(xx(s)),hours:x(xx(o)),minutes:x(xx(u)),seconds:x(xx(a),a==="-0"),milliseconds:x(jL(l),f)}]}const rbe={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 ZL(t,e,n,r,i,s,o){const u={year:e.length===2?zL(U0(e)):U0(e),month:_Q.indexOf(n)+1,day:U0(r),hour:U0(i),minute:U0(s)};return o&&(u.second=U0(o)),t&&(u.weekday=t.length>3?bQ.indexOf(t)+1:TQ.indexOf(t)+1),u}const ibe=/^(?:(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 sbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=ZL(e,i,r,n,s,o,u);let h;return a?h=rbe[a]:l?h=0:h=_C(c,f),[x,new Xr(h)]}function obe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const ube=/^(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$/,abe=/^(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$/,lbe=/^(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 HQ(t){const[,e,n,r,i,s,o,u]=t;return[ZL(e,i,r,n,s,o,u),Xr.utcInstance]}function cbe(t){const[,e,n,r,i,s,o,u]=t;return[ZL(e,u,n,r,i,s,o),Xr.utcInstance]}const fbe=fp(GCe,JL),xbe=fp(WCe,JL),dbe=fp(VCe,JL),hbe=fp(jQ),zQ=xp(ZCe,pp,F1,w1),pbe=xp(YCe,pp,F1,w1),gbe=xp(XCe,pp,F1,w1),mbe=xp(pp,F1,w1);function ybe(t){return dp(t,[fbe,zQ],[xbe,pbe],[dbe,gbe],[hbe,mbe])}function Ebe(t){return dp(obe(t),[ibe,sbe])}function Abe(t){return dp(t,[ube,HQ],[abe,HQ],[lbe,cbe])}function Sbe(t){return dp(t,[tbe,nbe])}const vbe=xp(pp);function _be(t){return dp(t,[ebe,vbe])}const Cbe=fp(KCe,JCe),bbe=fp(qQ),Tbe=xp(pp,F1,w1);function Rbe(t){return dp(t,[Cbe,zQ],[bbe,Tbe])}const Obe="Invalid Duration",QQ={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}},Nbe={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},...QQ},so=146097/400,gp=146097/4800,Dbe={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:gp/7,days:gp,hours:gp*24,minutes:gp*24*60,seconds:gp*24*60*60,milliseconds:gp*24*60*60*1e3},...QQ},dx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Fbe=dx.slice(0).reverse();function hx(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 St(r)}function wbe(t){return t<0?Math.floor(t):Math.ceil(t)}function GQ(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?wbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Lbe(t,e){Fbe.reduce((n,r)=>At(e[r])?n:(n&&GQ(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Dbe:Nbe,this.isLuxonDuration=!0}static fromMillis(e,n){return St.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 St({values:CC(e,St.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(fx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Sbe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=_be(e);return r?St.fromObject(r,n):St.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(qn.throwOnInvalid)throw new lCe(r);return new St({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 Jz(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?ts.create(this.loc,r).formatDurationFromString(this,e):Obe}toHuman(e={}){const n=dx.map(r=>{const i=this.values[r];return At(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+=qL(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=St.fromDurationLike(e),r={};for(const i of dx)(lp(n.values,i)||lp(this.values,i))&&(r[i]=n.get(i)+this.get(i));return hx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=SQ(e(this.values[r],r));return hx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...CC(e,St.normalizeUnit)};return hx(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),hx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Lbe(this.matrix,e),hx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of dx)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;fx(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)dx.indexOf(l)>dx.indexOf(o)&&GQ(this.matrix,i,l,n,o)}else fx(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 hx(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 hx(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 dx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const L1="Invalid Interval";function Ibe(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(qn.throwOnInvalid)throw new aCe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=k1(e),i=k1(n),s=Ibe(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=k1(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=k1(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(k1).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:L1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:L1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:L1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:L1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:L1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let I1=class{static hasDST(e=qn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Gu.isValidZone(e)}static normalizeZone(e){return j0(e,qn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:yQ()}}};function WQ(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function $be(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=WQ(u,a);return(l-l%7)/7}],["days",WQ]],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 Bbe(t,e,n,r){let[i,s,o,u]=$be(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const e4={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},VQ={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]},kbe=e4.hanidec.replace(/[\[|\]]/g,"").split("");function Pbe(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(e4.hanidec)!==-1)e+=kbe.indexOf(t[n]);else for(const i in VQ){const[s,o]=VQ[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function zo({numberingSystem:t},e=""){return new RegExp(`${e4[t||"latn"]}${e}`)}const Mbe="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(Pbe(n))}}const YQ="[ ]",XQ=new RegExp(YQ,"g");function Ube(t){return t.replace(/\./g,"\\.?").replace(XQ,YQ)}function KQ(t){return t.replace(/\./g,"").replace(XQ," ").toLowerCase()}function Qo(t,e){return t===null?null:{regex:RegExp(t.map(Ube).join("|")),deser:([n])=>t.findIndex(r=>KQ(n)===KQ(r))+e}}function JQ(t,e){return{regex:t,deser:([,n,r])=>_C(n,r),groups:e}}function t4(t){return{regex:t,deser:([e])=>e}}function jbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function qbe(t,e){const n=zo(e),r=zo(e,"{2}"),i=zo(e,"{3}"),s=zo(e,"{4}"),o=zo(e,"{6}"),u=zo(e,"{1,2}"),a=zo(e,"{1,3}"),l=zo(e,"{1,6}"),c=zo(e,"{1,9}"),f=zo(e,"{2,4}"),x=zo(e,"{4,6}"),h=g=>({regex:RegExp(jbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Qo(e.eras("short",!1),0);case"GG":return Qo(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,zL);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return Qo(e.months("short",!0,!1),1);case"MMMM":return Qo(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return Qo(e.months("short",!1,!1),1);case"LLLL":return Qo(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return t4(c);case"uu":return t4(u);case"uuu":return Ft(n);case"a":return Qo(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,zL);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return Qo(e.weekdays("short",!1,!1),1);case"EEEE":return Qo(e.weekdays("long",!1,!1),1);case"ccc":return Qo(e.weekdays("short",!0,!1),1);case"cccc":return Qo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return JQ(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return JQ(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return t4(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Mbe};return m.token=t,m}const Hbe={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 zbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Hbe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Qbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Gbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(lp(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 Wbe(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 At(t.z)||(n=Gu.create(t.z)),At(t.Z)||(n||(n=new Xr(t.Z)),r=t.Z),At(t.q)||(t.M=(t.q-1)*3+1),At(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),At(t.u)||(t.S=jL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let n4=null;function Vbe(){return n4||(n4=ot.fromMillis(1555555555555)),n4}function Ybe(t,e){if(t.literal)return t;const n=ts.macroTokenToFormatOpts(t.val);if(!n)return t;const s=ts.create(e,n).formatDateTimeParts(Vbe()).map(o=>zbe(o,e,n));return s.includes(void 0)?t:s}function Xbe(t,e){return Array.prototype.concat(...t.map(n=>Ybe(n,e)))}function ZQ(t,e,n){const r=Xbe(ts.parseFormat(n),t),i=r.map(o=>qbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Qbe(i),a=RegExp(o,"i"),[l,c]=Gbe(e,a,u),[f,x,h]=c?Wbe(c):[null,null,void 0];if(lp(c,"a")&&lp(c,"H"))throw new T1("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 Kbe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=ZQ(t,e,n);return[r,i,s,o]}const eG=[0,31,59,90,120,151,181,212,243,273,304,334],tG=[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 nG(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 rG(t,e,n){return n+(R1(t)?tG:eG)[e-1]}function iG(t,e){const n=R1(t)?tG:eG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function r4(t){const{year:e,month:n,day:r}=t,i=rG(e,n,r),s=nG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=vC(u)):o>vC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...bC(t)}}function sG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=nG(e,1,4),s=O1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=O1(u)):o>s?(u=e+1,o-=O1(e)):u=e;const{month:a,day:l}=iG(u,o);return{year:u,month:a,day:l,...bC(t)}}function i4(t){const{year:e,month:n,day:r}=t,i=rG(e,n,r);return{year:e,ordinal:i,...bC(t)}}function oG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=iG(e,n);return{year:e,month:r,day:i,...bC(t)}}function Jbe(t){const e=AC(t.weekYear),n=dl(t.weekNumber,1,vC(t.weekYear)),r=dl(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function Zbe(t){const e=AC(t.year),n=dl(t.ordinal,1,O1(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function uG(t){const e=AC(t.year),n=dl(t.month,1,12),r=dl(t.day,1,SC(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function aG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=dl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=dl(n,0,59),u=dl(r,0,59),a=dl(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const s4="Invalid DateTime",lG=864e13;function DC(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function o4(t){return t.weekData===null&&(t.weekData=r4(t.c)),t.weekData}function $1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function cG(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 fG(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 FC(t,e,n){return cG(HL(t),e,n)}function xG(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,SC(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.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=HL(s);let[a,l]=cG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function B1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function wC(t,e,n=!0){return t.isValid?ts.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function u4(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=jn(t.c.year,n?6:4),e?(r+="-",r+=jn(t.c.month),r+="-",r+=jn(t.c.day)):(r+=jn(t.c.month),r+=jn(t.c.day)),r}function dG(t,e,n,r,i,s){let o=jn(t.c.hour);return e?(o+=":",o+=jn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=jn(t.c.minute),(t.c.second!==0||!n)&&(o+=jn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=jn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=jn(Math.trunc(-t.o/60)),o+=":",o+=jn(Math.trunc(-t.o%60))):(o+="+",o+=jn(Math.trunc(t.o/60)),o+=":",o+=jn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const hG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},eTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},tTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},pG=["year","month","day","hour","minute","second","millisecond"],nTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],rTe=["year","ordinal","hour","minute","second","millisecond"];function gG(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 Jz(t);return e}function mG(t,e){const n=j0(e.zone,qn.defaultZone),r=xn.fromObject(e),i=qn.now();let s,o;if(At(t.year))s=i;else{for(const l of pG)At(t[l])&&(t[l]=hG[l]);const u=uG(t)||aG(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=FC(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function yG(t,e,n){const r=At(n.round)?!0:n.round,i=(o,u)=>(o=qL(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 EG(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 ot{constructor(e){const n=e.zone||qn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:DC(n));this.ts=At(e.ts)?qn.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=fG(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||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=EG(arguments),[r,i,s,o,u,a,l]=n;return mG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=EG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Xr.utcInstance,mG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=dCe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=j0(n.zone,qn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:xn.fromObject(n)}):ot.invalid(DC(i))}static fromMillis(e,n={}){if(fx(e))return e<-lG||e>lG?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:j0(n.zone,qn.defaultZone),loc:xn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(fx(e))return new ot({ts:e*1e3,zone:j0(n.zone,qn.defaultZone),loc:xn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=j0(n.zone,qn.defaultZone);if(!r.isValid)return ot.invalid(DC(r));const i=qn.now(),s=At(n.specificOffset)?r.offset(i):n.specificOffset,o=CC(e,gG),u=!At(o.ordinal),a=!At(o.year),l=!At(o.month)||!At(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new T1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=fG(i,s);h?(p=nTe,m=eTe,g=r4(g)):u?(p=rTe,m=tTe,g=i4(g)):(p=pG,m=hG);let y=!1;for(const b of p){const R=o[b];At(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?Jbe(o):u?Zbe(o):uG(o),A=E||aG(o);if(A)return ot.invalid(A);const S=h?sG(o):u?oG(o):o,[v,_]=FC(S,s,r),C=new ot({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.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]=ybe(e);return B1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=Ebe(e);return B1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Abe(e);return B1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(At(e)||At(n))throw new io("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=Kbe(o,e,n);return c?ot.invalid(c):B1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Rbe(e);return B1(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(qn.throwOnInvalid)throw new uCe(r);return new ot({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?o4(this).weekYear:NaN}get weekNumber(){return this.isValid?o4(this).weekNumber:NaN}get weekday(){return this.isValid?o4(this).weekday:NaN}get ordinal(){return this.isValid?i4(this.c).ordinal:NaN}get monthShort(){return this.isValid?I1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?I1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?I1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?I1.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 R1(this.year)}get daysInMonth(){return SC(this.year,this.month)}get daysInYear(){return this.isValid?O1(this.year):NaN}get weeksInWeekYear(){return this.isValid?vC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=ts.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Xr.instance(e),n)}toLocal(){return this.setZone(qn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=j0(e,qn.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]=FC(o,s,e)}return $1(this,{ts:i,zone:e})}else return ot.invalid(DC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return $1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=CC(e,gG),r=!At(n.weekYear)||!At(n.weekNumber)||!At(n.weekday),i=!At(n.ordinal),s=!At(n.year),o=!At(n.month)||!At(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new T1("Can't mix ordinal dates with month/day");let l;r?l=sG({...r4(this.c),...n}):At(n.ordinal)?(l={...this.toObject(),...n},At(n.day)&&(l.day=Math.min(SC(l.year,l.month),l.day))):l=oG({...i4(this.c),...n});const[c,f]=FC(l,this.o,this.zone);return $1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return $1(this,xG(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return $1(this,xG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?ts.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):s4}toLocaleString(e=UL,n={}){return this.isValid?ts.create(this.loc.clone(n),e).formatDateTime(this):s4}toLocaleParts(e={}){return this.isValid?ts.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=u4(this,o);return u+="T",u+=dG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?u4(this,e==="extended"):null}toISOWeekDate(){return wC(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":"")+dG(this,o==="extended",n,e,r,s):null}toRFC2822(){return wC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return wC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?u4(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")),wC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():s4}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=hCe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=Bbe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ot.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),yG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?yG(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new io("min requires all arguments be DateTimes");return EQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new io("max requires all arguments be DateTimes");return EQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return ZQ(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return UL}static get DATE_MED(){return Zz}static get DATE_MED_WITH_WEEKDAY(){return cCe}static get DATE_FULL(){return eQ}static get DATE_HUGE(){return tQ}static get TIME_SIMPLE(){return nQ}static get TIME_WITH_SECONDS(){return rQ}static get TIME_WITH_SHORT_OFFSET(){return iQ}static get TIME_WITH_LONG_OFFSET(){return sQ}static get TIME_24_SIMPLE(){return oQ}static get TIME_24_WITH_SECONDS(){return uQ}static get TIME_24_WITH_SHORT_OFFSET(){return aQ}static get TIME_24_WITH_LONG_OFFSET(){return lQ}static get DATETIME_SHORT(){return cQ}static get DATETIME_SHORT_WITH_SECONDS(){return fQ}static get DATETIME_MED(){return xQ}static get DATETIME_MED_WITH_SECONDS(){return dQ}static get DATETIME_MED_WITH_WEEKDAY(){return fCe}static get DATETIME_FULL(){return hQ}static get DATETIME_FULL_WITH_SECONDS(){return pQ}static get DATETIME_HUGE(){return gQ}static get DATETIME_HUGE_WITH_SECONDS(){return mQ}}function k1(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&fx(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const iTe="2.5.2";es.DateTime=ot,es.Duration=St,es.FixedOffsetZone=Xr,es.IANAZone=Gu,es.Info=I1,es.Interval=dn,es.InvalidZone=FQ,es.Settings=qn,es.SystemZone=TC,es.VERSION=iTe,es.Zone=cp,Object.defineProperty(xr,"__esModule",{value:!0}),xr.LiteralYear=xr.LiteralQuarter=xr.LiteralMonth=xr.LiteralWeek=xr.LiteralDay=xr.LiteralHour=xr.LiteralTimestamp=xr.TimeFormatError=void 0;const q0=es,sTe=ne,oTe=I0,AG=ip,a4=pt;class uTe extends Error{}xr.TimeFormatError=uTe;function px(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 SG="yyyy",vG=`${SG}-LL`,uo=`${vG}-dd`,_G=`${uo} HH`,CG=`${_G}:mm`,l4=`${CG}:ss`;class bG extends a4.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={type:"dialect",function:"timeLiteral",literal:e,literalType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=[r];return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class c4 extends bG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=px(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=q0.DateTime.fromFormat(e,l4);if(s.isValid)return new c4(r,n);if(s=q0.DateTime.fromFormat(e,CG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(l4);return new f4(r,n,"timestamp",o)}}}xr.LiteralTimestamp=c4;class f4 extends bG{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,a4.getMorphicValue)(i,"timestamp"),a=(0,a4.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,sTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new oTe.Range(new AG.ExprTime(u,i.value),new AG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class x4 extends f4{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,_G);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(l4),new x4(n,r)}}xr.LiteralHour=x4;class P1 extends f4{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 d4 extends P1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new d4(n,r)}}xr.LiteralDay=d4;class h4 extends P1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=px(e,!1);let r=n.text;const i=n.text.slice(0,10),s=q0.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 h4(n,r)}}}xr.LiteralWeek=h4;class p4 extends P1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,vG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new p4(n,r)}}}xr.LiteralMonth=p4;class g4 extends P1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=px(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=q0.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 g4(n,r)}}}xr.LiteralQuarter=g4;class m4 extends P1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,SG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new m4(n,r)}}}xr.LiteralYear=m4;var LC={};Object.defineProperty(LC,"__esModule",{value:!0}),LC.PartialCompare=void 0;const aTe=fr,lTe=pt;class cTe extends lTe.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,aTe.errorFor)("no value for partial compare")}}LC.PartialCompare=cTe;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.PickWhen=mp.Pick=void 0;const Wu=ne,H0=fr,Go=un,fTe=pt,xTe=Ve,TG=fn;function IC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class dTe extends fTe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i=["CASE"];let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Wu.maxExpressionType)(o,(0,Wu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Wu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Go.FT.typeEq(s,x,!0)){const h=Go.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'`),(0,H0.errorFor)("pick when type")}s=IC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=IC(s,l),!Go.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Go.FT.inspect(l)}', expected '${s.dataType}'`),(0,H0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Wu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Wu.mergeEvalSpaces)(u,l.evalSpace),value:(0,TG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,H0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,H0.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,H0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Go.FT.typeEq(a.when,Go.FT.boolT))return this.log(`when expression must be boolean, not '${Go.FT.inspect(a.when)}`),(0,H0.errorFor)("pick when type");if(r&&!Go.FT.typeEq(r,a.pick,!0)){const l=Go.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'`),(0,H0.errorFor)("pick value type")}r=IC(r,a.pick),s=(0,Wu.maxExpressionType)(s,(0,Wu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Wu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Wu.maxExpressionType)(s,u.expressionType),o=(0,Wu.mergeEvalSpaces)(o,u.evalSpace),r=IC(r,u),Go.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,TG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Go.FT.inspect(u)}', expected '${r.dataType}'`),(0,H0.errorFor)("pick value type mismatch"))}}mp.Pick=dTe;class hTe extends xTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}mp.PickWhen=hTe;var $C={};Object.defineProperty($C,"__esModule",{value:!0}),$C.Timeframe=void 0;const pTe=ne,gTe=Ve;class mTe extends gTe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,pTe.isTimestampUnit)(n)?n:"second"}}$C.Timeframe=mTe;var BC={};Object.defineProperty(BC,"__esModule",{value:!0}),BC.TopBy=void 0;const yTe=ne,RG=pt,ETe=Ve,ATe=fn;class STe extends ETe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof RG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof RG.ExpressionDef){const n=this.by.getExpression(e);return(0,yTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,ATe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}BC.TopBy=STe;var z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.ImportStatement=z0.ImportSelect=z0.ImportSourceName=void 0;const y4=Ve;class vTe extends y4.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}z0.ImportSourceName=vTe;class _Te extends y4.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}z0.ImportSelect=_Te;class CTe extends y4.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}'`)}}}z0.ImportStatement=CTe;var M1={};Object.defineProperty(M1,"__esModule",{value:!0}),M1.ExtendBlock=void 0;const bTe=Ve,TTe=bn;class RTe extends bTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=TTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}M1.ExtendBlock=RTe;var kC={};Object.defineProperty(kC,"__esModule",{value:!0}),kC.AnonymousQuery=void 0;const OTe=Ve,NTe=Gr;class DTe extends OTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=NTe.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)}}kC.AnonymousQuery=DTe;var Q0={};Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.View=void 0;const FTe=Ve;let wTe=class extends FTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Q0.View=wTe;var PC={};Object.defineProperty(PC,"__esModule",{value:!0}),PC.ViewArrow=void 0;const LTe=Yr,ITe=Q0;class $Te extends ITe.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 LTe.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()}}PC.ViewArrow=$Te;var MC={},U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.refine=void 0;const E4=Cu,A4=O0;function BTe(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,E4.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,E4.isQuerySegment)(o)&&(0,E4.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,A4.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,A4.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(A4.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}U1.refine=BTe,Object.defineProperty(MC,"__esModule",{value:!0}),MC.ViewRefine=void 0;const kTe=Vr,PTe=Ts,MTe=U1,UTe=Q0;class jTe extends UTe.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,PTe.getFinalStruct)(this.refinement,e.structDef(),i):kTe.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,MTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}MC.ViewRefine=jTe;var UC={};Object.defineProperty(UC,"__esModule",{value:!0}),UC.ReferenceView=void 0;const OG=ne,NG=Vr,qTe=Ts,HTe=Wr,zTe=U1,QTe=Q0;class GTe extends QTe.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:NG.ErrorFactory.structDef,outputStruct:NG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof HTe.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,OG.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,OG.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,qTe.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,zTe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}UC.ReferenceView=GTe;var jC={},j1={},qC={},q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.Index=void 0;const WTe=Ve,VTe=bn;let YTe=class extends WTe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=VTe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};q1.Index=YTe;var H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.SampleProperty=void 0;const XTe=Ve,DG=bn;class KTe extends XTe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=DG.LegalRefinementStage.Tail,this.forceQueryClass=DG.QueryClass.Index}sampling(){return this.sample}}H1.SampleProperty=KTe;var HC={};Object.defineProperty(HC,"__esModule",{value:!0}),HC.IndexFieldSpace=void 0;const FG=ne,S4=mt,JTe=Wr,ZTe=jo,eRe=S1,tRe=Yr;class nRe extends ZTe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof S4.FieldReference?super.pushFields(n):n instanceof S4.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 JTe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof eRe.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 tRe.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))continue;const l=S4.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,FG.isAtomicFieldType)(c.dataType)&&(0,FG.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)}}HC.IndexFieldSpace=nRe,Object.defineProperty(qC,"__esModule",{value:!0}),qC.IndexBuilder=void 0;const v4=ne,rRe=Vr,iRe=Uo,sRe=q1,oRe=k0,uRe=H1,aRe=HC;class lRe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new aRe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof iRe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof oRe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof sRe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof uRe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,v4.isIndexSegment)(e)&&!(0,v4.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),rRe.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,v4.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}qC.IndexBuilder=lRe;var zC={},z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.GroupBy=void 0;const cRe=bs,wG=bn;class fRe extends cRe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=wG.LegalRefinementStage.Single,this.forceQueryClass=wG.QueryClass.Grouping}}z1.GroupBy=fRe;var QC={};Object.defineProperty(QC,"__esModule",{value:!0}),QC.ProjectFieldSpace=void 0;const _4=ne,xRe=jo;class dRe extends xRe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,_4.expressionIsAggregate)(e.expressionType)?!1:(0,_4.expressionInvolvesAggregate)(e.expressionType)&&(0,_4.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}QC.ProjectFieldSpace=dRe;var G0={},gx={};Object.defineProperty(gx,"__esModule",{value:!0}),gx.Ordering=gx.OrderBy=void 0;const hRe=ne,LG=lx,IG=Ve,pRe=bn;class gRe extends IG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof LG.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 LG.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,hRe.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}}gx.OrderBy=gRe;class mRe extends IG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=pRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}gx.Ordering=mRe;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Top=void 0;const $G=ne,yRe=fn,ERe=lx,ARe=Ve,SRe=bn;let vRe=class extends ARe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=SRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof ERe.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,$G.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,$G.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,yRe.compressExpr)(r.value)}}}};Q1.Top=vRe,Object.defineProperty(G0,"__esModule",{value:!0}),G0.ReduceBuilder=G0.QuerySegmentBuilder=void 0;const BG=ne,_Re=Vr,CRe=Uo,bRe=k0,kG=gx,PG=Q1,TRe=jo,RRe=bs;class MG{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof RRe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof CRe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof PG.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 bRe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof kG.Ordering&&(this.order?e.log("Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof PG.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof kG.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}G0.QuerySegmentBuilder=MG;class ORe extends MG{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new TRe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,BG.isReduceSegment)(e)||(0,BG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),_Re.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}G0.ReduceBuilder=ORe,Object.defineProperty(zC,"__esModule",{value:!0}),zC.ProjectBuilder=void 0;const UG=ne,NRe=Vr,DRe=z1,FRe=QC,wRe=G0;class LRe extends wRe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new FRe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof DRe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,UG.isProjectSegment)(e)||(0,UG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),NRe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}zC.ProjectBuilder=LRe;var GC={};Object.defineProperty(GC,"__esModule",{value:!0}),GC.PartialBuilder=void 0;const IRe=Cu,$Re=G0;class BRe extends $Re.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,IRe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}GC.PartialBuilder=BRe,Object.defineProperty(j1,"__esModule",{value:!0}),j1.QOpDesc=void 0;const kRe=qC,PRe=zC,MRe=G0,URe=Ve,jRe=Ts,qRe=Yr,mx=bn,HRe=GC;class zRe extends URe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=mx.QueryClass.Grouping:this.refineThis.type==="project"?n=mx.QueryClass.Project:this.refineThis.type==="index"&&(n=mx.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=mx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case mx.QueryClass.Grouping:return new MRe.ReduceBuilder(e,this.refineThis,n,r);case mx.QueryClass.Project:return new PRe.ProjectBuilder(e,this.refineThis,n,r);case mx.QueryClass.Index:return new kRe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new HRe.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 qRe.StaticSpace((0,jRe.opOutputStruct)(this,e.structDef(),i))}}}j1.QOpDesc=zRe,Object.defineProperty(jC,"__esModule",{value:!0}),jC.QOpDescView=void 0;const QRe=ne,GRe=Yr,jG=j1,WRe=Ts,C4=bn,VRe=Q0;class YRe extends VRe.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,QRe.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 jG.QOpDesc([]),o=new jG.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case C4.LegalRefinementStage.Head:s.push(u);break;case C4.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case C4.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,WRe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new GRe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}jC.QOpDescView=YRe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const XRe=ne,KRe=fn,JRe=un,ZRe=np,eOe=Ve,yx=Yn,tOe=Gr,nOe=Wr;class W0 extends eOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=tOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new b4(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,KRe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,XRe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,ZRe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof b4&&e.foundCircle)&&r.dataType!=="error"){const a=JRe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new qG(e,this))}}hn.AtomicFieldDeclaration=W0;class rOe extends W0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=rOe;class iOe extends W0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=iOe;class sOe extends W0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=sOe;class oOe extends W0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=oOe;class uOe extends W0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=uOe;class aOe extends W0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=aOe;class lOe extends W0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=lOe;class b4{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")}}hn.DefSpace=b4;class qG extends nOe.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)}}hn.FieldDefinitionValue=qG;var WC={};Object.defineProperty(WC,"__esModule",{value:!0}),WC.Aggregate=void 0;const cOe=bs,HG=bn;let fOe=class extends cOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=HG.LegalRefinementStage.Single,this.forceQueryClass=HG.QueryClass.Grouping}};WC.Aggregate=fOe;var VC={};Object.defineProperty(VC,"__esModule",{value:!0}),VC.Calculate=void 0;const xOe=bs,dOe=bn;class hOe extends xOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=dOe.LegalRefinementStage.Single}}VC.Calculate=hOe;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.Dimensions=void 0;const pOe=N0;class gOe extends pOe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}G1.Dimensions=gOe;var W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.Measures=void 0;const mOe=N0;class yOe extends mOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}W1.Measures=yOe;var YC={};Object.defineProperty(YC,"__esModule",{value:!0}),YC.Nests=void 0;const EOe=bs,zG=bn;class AOe extends EOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=zG.LegalRefinementStage.Single,this.forceQueryClass=zG.QueryClass.Grouping}}YC.Nests=AOe;var XC={};Object.defineProperty(XC,"__esModule",{value:!0}),XC.ProjectStatement=void 0;const SOe=bs,QG=bn;class vOe extends SOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=QG.QueryClass.Project,this.queryRefinementStage=QG.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}XC.ProjectStatement=vOe;var V0={},hl={};Object.defineProperty(hl,"__esModule",{value:!0}),hl.findReferences=hl.deprecatedParseTableURI=hl.constructTableKey=void 0;const _Oe=nx,T4=$n;function R4(t){const e=(0,T4.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,T4.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class COe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=GG(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,T4.getId)(e.connectionId()),r=R4(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=R4(e.tableURI()),{connectionName:r,tablePath:i}=WG(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=R4(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function GG(t,e){return t===void 0?e:`${t}:${e}`}hl.constructTableKey=GG;function WG(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}hl.deprecatedParseTableURI=WG;function bOe(t,e,n){const r=new COe(t,e),i=r;return _Oe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}hl.findReferences=bOe,Object.defineProperty(V0,"__esModule",{value:!0}),V0.TableFunctionSource=V0.TableMethodSource=V0.TableSource=void 0;const VG=hl,TOe=Mo,YG=Vr;class O4 extends TOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return YG.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,VG.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),YG.ErrorFactory.structDef}}V0.TableSource=O4;class ROe extends O4{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}}}V0.TableMethodSource=ROe;class OOe extends O4{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,VG.deprecatedParseTableURI)(this.tableURI)}}V0.TableFunctionSource=OOe;var KC={};Object.defineProperty(KC,"__esModule",{value:!0}),KC.SQLString=void 0;const NOe=Ve,XG=Qu;class DOe extends NOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(FOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof XG.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}}KC.SQLString=DOe;function FOe(t){return t instanceof XG.SourceQueryElement}var JC={};Object.defineProperty(JC,"__esModule",{value:!0}),JC.SourceDesc=void 0;const wOe=Ve;class LOe extends wOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}JC.SourceDesc=LOe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.isSourceProperty=void 0;const IOe=Uo,$Oe=Zi,BOe=N0,kOe=Vh,POe=F0,MOe=Yh,UOe=Xh,jOe=Kh,qOe=D0;function HOe(t){return t instanceof IOe.Filter||t instanceof $Oe.Joins||t instanceof BOe.DeclareFields||t instanceof kOe.FieldListEdit||t instanceof POe.Renames||t instanceof MOe.PrimaryKey||t instanceof qOe.ObjectAnnotation||t instanceof UOe.Views||t instanceof jOe.TimezoneStatement}ZC.isSourceProperty=HOe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.isFieldCollectionMember=void 0;const zOe=hn,KG=mt;function QOe(t){return t instanceof KG.FieldReference||t instanceof KG.WildcardFieldReference||t instanceof zOe.AtomicFieldDeclaration}eb.isFieldCollectionMember=QOe;var tb={};Object.defineProperty(tb,"__esModule",{value:!0}),tb.isQueryElement=void 0;const GOe=Jh,WOe=Zh,VOe=h1,YOe=p1;function XOe(t){return t instanceof GOe.QueryArrow||t instanceof WOe.QueryRefine||t instanceof VOe.QueryReference||t instanceof YOe.QueryRaw}tb.isQueryElement=XOe;var JG={};Object.defineProperty(JG,"__esModule",{value:!0});var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.isQueryProperty=void 0;function KOe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}nb.isQueryProperty=KOe;var rb={};Object.defineProperty(rb,"__esModule",{value:!0}),rb.isQueryExtendProperty=void 0;const JOe=G1,ZOe=Zi,eNe=W1;function tNe(t){return t instanceof JOe.Dimensions||t instanceof eNe.Measures||t instanceof ZOe.Joins}rb.isQueryExtendProperty=tNe;var ib={};Object.defineProperty(ib,"__esModule",{value:!0}),ib.isFieldPropStatement=void 0;const nNe=$0,rNe=Uo,iNe=k0,sNe=ap;function oNe(t){return t instanceof rNe.Filter||t instanceof iNe.Limit||t instanceof sNe.PartitionBy||t instanceof nNe.FunctionOrdering}ib.isFieldPropStatement=oNe,function(t){var e=O&&O.__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=O&&O.__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(e1,t),n(Qh,t),n(Gh,t),n(Mo,t),n(a1,t),n(Qu,t),n(D_,t),n(F_,t),n($_,t),n(d1,t),n(P_,t),n(Vh,t),n(Yh,t),n(F0,t),n(Xh,t),n(Kh,t),n(M_,t),n(sp,t),n(q_,t),n($0,t),n(H_,t),n(fl,t),n(z_,t),n(up,t),n(Q_,t),n(G_,t),n(W_,t),n(m1,t),n(V_,t),n(Y_,t),n(K_,t),n(_1,t),n(A1,t),n(op,t),n(J_,t),n(Z_,t),n(tC,t),n(rC,t),n(iC,t),n(sC,t),n(oC,t),n(uC,t),n(aC,t),n(lC,t),n(cC,t),n(fC,t),n(xC,t),n(dC,t),n(hC,t),n(mC,t),n(xr,t),n(LC,t),n(ap,t),n(mp,t),n(I0,t),n($C,t),n(BC,t),n(C1,t),n(fn,t),n(z0,t),n(M1,t),n(u1,t),n(kC,t),n(Zh,t),n(Jh,t),n(Q0,t),n(PC,t),n(MC,t),n(UC,t),n(jC,t),n(hn,t),n(mt,t),n(WC,t),n(VC,t),n(N0,t),n(G1,t),n(M1,t),n(Uo,t),n(z1,t),n(q1,t),n(Zi,t),n(t1,t),n(k0,t),n(W1,t),n(e1,t),n(YC,t),n(gx,t),n(XC,t),n(j1,t),n(H1,t),n(Q1,t),n(w0,t),n(sx,t),n(g1,t),n(V0,t),n(KC,t),n(D0,t),n(L0,t),n(JC,t),n(ZC,t),n(pt,t),n(eb,t),n(lx,t),n(Ve,t),n(tb,t),n(JG,t),n(nb,t),n(rb,t),n(ib,t)}(p_);var sb={},uNe=O&&O.__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]}),aNe=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),lNe=O&&O.__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)&&uNe(e,t,n);return aNe(e,t),e};Object.defineProperty(sb,"__esModule",{value:!0}),sb.MalloyToAST=void 0;const ZG=vS,cNe=n1,re=lNe(p_),fNe=lr,xNe=p_,Hn=$n,N4=ne,dNe=al;class eW extends re.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class D4 extends re.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const hNe=["##! m4warnings=error"];class pNe extends cNe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of hNe){const s=dNe.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 D4||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 re.FieldName((0,Hn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new re.ModelEntryReference((0,Hn.getId)(e)),e.id())}defaultResult(){return new re.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 fNe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new re.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 re.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 re.Filter([n])}getPlainString(e){const n=(0,Hn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,Hn.getStringParts)(i))s instanceof ZG.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,Hn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Hn.getStringParts)(e))r instanceof ZG.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 re.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=>re.isDocStatementOrDocStatementList(r)&&r,"statement");return new re.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new re.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=new re.DefineSource((0,Hn.getId)(e.sourceNameDef()),n instanceof re.SourceQueryElement?n:void 0,!0,[]),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,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=>re.isSourceProperty(s)&&s,"source property"),i=new re.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new re.TableFunctionSource(n),e);return this.m4advisory(e,"`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainString(e.tablePath());return this.astAt(new re.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new re.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Hn.getShortString)(o));const u=new re.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 re.Join&&(n.push(s),s instanceof re.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof re.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new re.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 re.Join&&(r.push(s),s instanceof re.ExpressionJoin&&(s.joinType="one"));const i=new re.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 re.Join&&(r.push(s),s instanceof re.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new re.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new re.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new re.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,N4.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new re.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,Hn.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(),re.DimensionFieldDeclaration),r=new re.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),re.MeasureFieldDeclaration),r=new re.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(re.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new re.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),re.DeclareFieldDeclaration),r=new re.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 re.RenameField((0,Hn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new re.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new re.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 re.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 re.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new re.AcceptExceptFieldReference([this.getFieldName(r)]));return new re.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new re.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new re.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=>re.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new re.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 re.FieldReference||i instanceof re.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new re.Aggregate(this.getQueryItems(e.queryFieldList(),re.AggregateFieldDeclaration,re.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new re.GroupBy(this.getQueryItems(e.queryFieldList(),re.GroupByFieldDeclaration,re.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new re.Calculate(this.getQueryItems(e.queryFieldList(),re.CalculateFieldDeclaration,re.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(),re.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new re.ExprGranularTime(new re.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new re.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,re.ProjectFieldDeclaration,re.ProjectFieldReference));return this.astAt(new re.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,re.ProjectFieldReference):void 0,s=this.astAt(new re.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,Hn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new re.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,re.IndexFieldReference);return r.STAR()?this.astAt(new re.WildcardFieldReference(s),e):this.astAt(s,e)});return new re.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new re.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 re.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 re.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 re.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new re.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new re.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 re.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 re.Top(r,u)}const o=n.fieldExpr();o&&(i=new re.Top(r,this.getFieldExpr(o)))}return i||(i=new re.Top(r,void 0)),this.astAt(i,e)}visitSourceID(e){return this.astAt(new re.NamedSource((0,Hn.getId)(e)),e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new re.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Hn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof re.SourceQueryElement){const s=new re.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 re.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 re.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 re.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof re.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Hn.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 re.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,Hn.getId)(e.exploreQueryNameDef()),r=new re.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 re.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new re.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 re.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new re.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new re.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new re.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new re.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(re.isComparison(i))return this.astAt(new re.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new re.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new re.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new re.ExprNow}visitExprNumber(e){return new re.ExprNumber(e.text)}visitExprFieldPath(e){const n=new re.ExprIdReference(this.getFieldPath(e.fieldPath(),re.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new re.ExprNULL}visitExprExpr(e){return new re.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new re.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 re.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new re.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(re.isComparison(n))return new re.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new re.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new re.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,re.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 re.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 re.ExprIdReference(r),n);return s==="min"?new re.ExprMin(a):new re.ExprMax(a)}else{if(s==="avg")return new re.ExprAvg(u,i);if(s==="sum")return new re.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new re.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 re.ExprCountDistinct(r):new re.ExprCount,e);if(s==="min"){if(r)return new re.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new re.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new re.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new re.ExprAvg(r,i,o);if(s==="sum")return new re.ExprSum(r,i,o)}return new re.ExprNULL}visitExprApply(e){return new re.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new re.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new re.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyOrSQLType(e){const n=e.malloyType();if(n){const i=n.text;if((0,N4.isCastType)(i))return i;throw this.internalError(e,`unknown type '${i}'`)}const r=e.string();if(r)return{raw:this.getPlainString({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new re.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new re.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new re.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new re.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Hn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,re.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return re.ExprTimeExtract.extractor(i)?this.astAt(new re.ExprTimeExtract(i,r),e):this.astAt(new re.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,N4.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Hn.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"),re.ExprTimeExtract.extractor(l)?this.astAt(new re.ExprTimeExtract(l,s),e):this.astAt(new re.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new re.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 re.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new re.Pick(n,this.getFieldExpr(e._pickElse)):new re.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>re.isFieldPropStatement(r)&&r,"field property statement");return new re.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new re.PartitionBy(e.id().map(n=>this.astAt(new re.PartitionByFieldReference([this.astAt(new re.FieldName((0,Hn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,re.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,re.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,re.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,re.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,re.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,re.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,re.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new re.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 re.ImportSourceName((0,Hn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new re.ImportSelect((0,Hn.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 re.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new re.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new re.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new re.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 D4(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new D4(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new re.ObjectAnnotation(n)}visitSQID(e){const n=this.getModelEntryName(e);return this.astAt(new re.SQReference(n),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof re.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new eW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new re.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 re.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof re.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new re.ReferenceView(this.getFieldPath(e.fieldPath(),re.ViewOrScalarFieldReference))}visitSegOps(e){return new re.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new re.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new re.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new re.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof xNe.TableSource){const r=new re.SQSource(n);return this.astAt(r,e)}return new eW}visitSQSQL(e){const n=new re.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new re.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}sb.MalloyToAST=pNe;var ob={};Object.defineProperty(ob,"__esModule",{value:!0}),ob.MessageLog=void 0;class gNe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){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}}ob.MessageLog=gNe;var ub={};Object.defineProperty(ub,"__esModule",{value:!0}),ub.Zone=void 0;class mNe{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})}}ub.Zone=mNe;var ab={};Object.defineProperty(ab,"__esModule",{value:!0}),ab.walkForDocumentSymbols=void 0;const yNe=nx,ENe=$n;class ANe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,ENe.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 SNe(t,e,n){const r=new ANe(t,e,[],[]),i=r;return yNe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}ab.walkForDocumentSymbols=SNe;var lb={};Object.defineProperty(lb,"__esModule",{value:!0}),lb.walkForDocumentCompletions=void 0;const vNe=nx,_Ne=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],CNe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],bNe=["source","explore","query","sql"];class TNe{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 _Ne)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 CNe)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 bNe)this.completions.push({type:"model_property",text:`${r}: `})}}}function RNe(t,e,n){const r=new TNe(t,[],n),i=r;return vNe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}lb.walkForDocumentCompletions=RNe;var cb={};Object.defineProperty(cb,"__esModule",{value:!0}),cb.walkForDocumentHelpContext=void 0;const ONe=cL;class NNe extends ONe.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 DNe(t,e){return new NNe(e).visit(t)}cb.walkForDocumentHelpContext=DNe;var fb={},V1={};Object.defineProperty(V1,"__esModule",{value:!0}),V1.locationContainsPosition=void 0;function FNe(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)}V1.locationContainsPosition=FNe,Object.defineProperty(fb,"__esModule",{value:!0}),fb.ReferenceList=void 0;const wNe=V1;class LNe{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,wNe.locationContainsPosition)(r.location,e))return r}}fb.ReferenceList=LNe;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.isNeedResponse=void 0;function INe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}xb.isNeedResponse=INe;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.walkForModelAnnotation=void 0;const $Ne=nx;class BNe{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 kNe(t,e,n){const r=new BNe(t,e,n),i=r;return $Ne.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}db.walkForModelAnnotation=kNe;var PNe=O&&O.__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]}),MNe=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UNe=O&&O.__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)&&PNe(e,t,n);return MNe(e,t),e};Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.MalloyParserErrorHandler=Tu.MalloyTranslator=Tu.MalloyChildTranslator=Tu.MalloyTranslation=void 0;const tW=vS,jNe=Fv,qNe=F,nW=UNe(p_),HNe=sb,zNe=ob,QNe=hl,F4=ub,GNe=ab,WNe=lb,VNe=cb,YNe=fb,hb=xb,XNe=V1,rW=al,KNe=db;class JNe extends jNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class ZNe{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===""?`
|
|
1284
|
+
`)),k_.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"),k_.ErrorFactory.structDef}}g1.SQLSource=IAe,Object.defineProperty($_,"__esModule",{value:!0}),$_.SQSource=void 0;const $Ae=Qu,BAe=p1,kAe=g1;class PAe extends $Ae.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 kAe.SQLSource){const e=new BAe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}$_.SQSource=PAe;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.SQExtend=void 0;const MAe=a1,UAe=Qu;class jAe extends UAe.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 MAe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}P_.SQExtend=jAe;var M_={},L0={};Object.defineProperty(L0,"__esModule",{value:!0}),L0.isComparison=L0.Comparison=void 0;var CL;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(CL||(L0.Comparison=CL={}));function qAe(t){return Object.values(CL).includes(t)}L0.isComparison=qAe;var m1={},un={};Object.defineProperty(un,"__esModule",{value:!0}),un.FT=void 0;const HAe=Cu;function ox(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Dr{static in(e,n){return e?n.find(i=>Dr.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=>Dr.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,HAe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}un.FT=Dr,Dr.nullT=ox("null"),Dr.numberT=ox("number"),Dr.stringT=ox("string"),Dr.dateT=ox("date"),Dr.timestampT=ox("timestamp"),Dr.boolT=ox("boolean"),Dr.anyAtomicT=[Dr.numberT,Dr.stringT,Dr.dateT,Dr.timestampT,Dr.boolT],Dr.aggregateBoolT=ox("boolean","aggregate");var ep={},fr={};Object.defineProperty(fr,"__esModule",{value:!0}),fr.errorFor=void 0;function zAe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}fr.errorFor=zAe;var pt={},tp={};Object.defineProperty(tp,"__esModule",{value:!0}),tp.isEquality=tp.Equality=void 0;var bL;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(bL||(tp.Equality=bL={}));function QAe(t){return Object.values(bL).includes(t)}tp.isEquality=QAe;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.isGranularResult=void 0;function GAe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}np.isGranularResult=GAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.applyBinary=pt.getMorphicValue=pt.ExprDuration=pt.ExpressionDef=void 0;const Rn=ne,rp=fr,cl=fn,ux=un,U_=Tn,WAe=L0,VAe=tp,Sz=np,YAe=Ve;class XAe extends Error{}class vz extends YAe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=ux.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!ux.FT.in(n,this.legalChildTypes)?(e.log(`'${this.elementType}' Can't use type ${ux.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Oz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Rn.expressionIsAggregate)(e.expressionType)}}pt.ExpressionDef=vz;class TL extends vz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[ux.FT.timestampT,ux.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(!ux.FT.typeEq(s,ux.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,rp.errorFor)("illegal unit expression");let o;if((0,Sz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,U_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,U_.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,U_.timeResult)({dataType:"date",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,U_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,rp.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}pt.ExprDuration=TL;function _z(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function KAe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}pt.getMorphicValue=KAe;function Cz(t,e,n,r){const i=(0,Rn.isTimeFieldType)(e.dataType),s=(0,Rn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=_z(e,"timestamp"),u=_z(r,"timestamp");if(o&&u)return(0,cl.compose)(o,n,u)}else return(0,cl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function bz(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function JAe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function ZAe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("boolean",i,s);if(o)return o;if(i.dataType==="unsupported"||s.dataType==="unsupported"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=E1(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=Cz(e,i,n,s)||(0,cl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,cl.compose)(i.value,"LIKE",s.value);else{const l=bz(i,s);if(l===void 0)throw new XAe("Incompatible types for match('~') operator");a=l}a=(0,cl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=JAe(i,n,s);l?a=l:a=(0,cl.nullsafeNot)(bz(i,s)||(0,cl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function eSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("boolean",i,s);if(o)return o;const u=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),a=E1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Cz(e,i,n,s)||(0,cl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Tz(t,...e){return e.includes(t)}function tSe(t,...e){for(const n of e)if(n.dataType!==t)return!1;return!0}function Rz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=y1("number",i,s);if(o)return o;const u=E1(e,i,r,s);if(u)return u;const a=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType);return tSe("number",i,s)?{dataType:"number",expressionType:a,value:(0,cl.compose)(i.value,n,s.value),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)}:(e.log(`Non numeric('${i.dataType},${s.dataType}') value with '${n}'`),(0,rp.errorFor)("numbers required"))}function nSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=E1(e,i,r,s);if(o)return o;const u=(0,Rn.isTimeFieldType)(i.dataType),a=y1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Sz.isGranularResult)(i))l=new TL(r,i.timeframe);else if(i.dataType==="date")l=new TL(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,rp.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Rz(t,e,n,r)}function Oz(t,e,n,r){if((0,VAe.isEquality)(n))return ZAe(t,e,n,r);if((0,WAe.isComparison)(n))return eSe(t,e,n,r);if(Tz(n,"+","-"))return nSe(t,e,n,r);if(n==="*")return Rz(t,e,n,r);if(Tz(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=E1(e,i,r,s);if(o)return e.log("Cannot operate with unsupported type"),o;const u=y1("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,rp.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,rp.errorFor)("applybinary bad operator")}pt.applyBinary=Oz;function y1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Rn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Rn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function E1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Rn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Rn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="unsupported")return t.log("Unsupported type not allowed in expression"),{...i,dataType:r.dataType};if(r.dataType==="unsupported")return n.log("Unsupported type not allowed in expression"),i}Object.defineProperty(ep,"__esModule",{value:!0}),ep.BinaryBoolean=void 0;const Nz=ne,rSe=fr,iSe=un,sSe=pt,oSe=fn;class uSe extends sSe.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=[iSe.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,Nz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Nz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,oSe.compose)(n.value,this.op,r.value)}}return(0,rSe.errorFor)("logial required boolean")}}ep.BinaryBoolean=uSe,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ExprCompare=void 0;const Vt=un,aSe=ep,lSe={"~":[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 cSe extends aSe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=lSe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}m1.ExprCompare=cSe;var A1={},ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.ExprTime=void 0;const fSe=ne,xSe=fn,dSe=pt;class RL extends dSe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,fSe.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,xSe.compressExpr)([i])}return new RL(e,r,n.expressionType)}}ip.ExprTime=RL;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.Range=void 0;const Dz=ne,hSe=fr,pSe=pt,gSe=fn;class mSe extends pSe.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,Dz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Dz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,gSe.compose)(u.value,s,a.value)}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,hSe.errorFor)("a range is not a value")}}I0.Range=mSe,Object.defineProperty(A1,"__esModule",{value:!0}),A1.ExprGranularTime=void 0;const OL=ne,ySe=fr,Fz=un,wz=Tn,ESe=pt,j_=ip,Lz=I0;class ASe extends ESe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Fz.FT.timestampT,Fz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,OL.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,OL.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,ySe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=j_.ExprTime.fromValue("timestamp",n),u=new j_.ExprTime("timestamp",(0,wz.timeOffset)("timestamp",n.value,"+",(0,OL.mkExpr)`1`,this.units),n.expressionType);return new Lz.Range(o,u)}const r=new j_.ExprTime("date",n.value,n.expressionType),i=(0,wz.timeOffset)("date",n.value,"+",["1"],this.units),s=new j_.ExprTime("date",i,n.expressionType);return new Lz.Range(r,s)}}A1.ExprGranularTime=ASe,Object.defineProperty(M_,"__esModule",{value:!0}),M_.Apply=void 0;const SSe=L0,vSe=m1,_Se=np,Iz=A1;class CSe extends vSe.ExprCompare{constructor(e,n){super(e,SSe.Comparison.EqualTo,n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,_Se.isGranularResult)(r)&&(n=new Iz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Iz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}M_.Apply=CSe;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.BinaryNumeric=void 0;const bSe=un,TSe=pt;class RSe extends TSe.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=[bSe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}sp.BinaryNumeric=RSe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.Boolean=void 0;const OSe=pt,NSe=un;let DSe=class extends OSe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...NSe.FT.boolT,value:[this.value]}}};q_.Boolean=DSe;var $0={},op={};Object.defineProperty(op,"__esModule",{value:!0}),op.ExprIdReference=void 0;const NL=ne,FSe=fr,wSe=zu,LSe=pt;class ISe extends LSe.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,NL.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,FSe.errorFor)(n.error)}apply(e,n,r){const i=this.fieldReference.getField(e).found;if(i instanceof wSe.SpaceParam){const s=i.parameter();if((0,NL.isConditionParameter)(s)){const o=r.getExpression(e);return{dataType:"boolean",expressionType:o.expressionType,evalSpace:(0,NL.mergeEvalSpaces)(o.evalSpace,"input"),value:[{type:"apply",value:o.value,to:[{type:"parameter",path:this.fieldReference.path}]}]}}}return super.apply(e,n,r)}}op.ExprIdReference=ISe,Object.defineProperty($0,"__esModule",{value:!0}),$0.FunctionOrdering=$0.FunctionOrderBy=void 0;const DL=ne,$z=Ve,$Se=op;class BSe extends $z.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,DL.expressionIsAggregate)(n.expressionType)||((0,DL.expressionIsScalar)(n.expressionType)?(!(this.field instanceof $Se.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,DL.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}$0.FunctionOrderBy=BSe;class kSe extends $z.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))}}$0.FunctionOrdering=kSe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.ExprAddSub=void 0;const PSe=sp;class MSe extends PSe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}H_.ExprAddSub=MSe;var fl={},mt={},S1={};Object.defineProperty(S1,"__esModule",{value:!0}),S1.ReferenceField=void 0;const Bz=Wr;class USe extends Bz.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){if(!this.queryFieldDef){const n=this.fieldRef.getField(e);n.error&&this.fieldRef.log(n.error),this.queryFieldDef={type:"fieldref",path:this.fieldRef.list.map(i=>i.name)};const r=this.referenceTo;if(r instanceof Bz.SpaceField&&r.haveFieldDef){const i=r.haveFieldDef,s=this.fieldRef.note;if(i.annotation||s){const o=s||{};i.annotation&&(o.inherits=i.annotation),this.queryFieldDef.annotation=o}}}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"}}}S1.ReferenceField=USe;var Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.typecheckGroupBy=Yn.typecheckAggregate=Yn.typecheckCalculate=Yn.typecheckDeclare=Yn.typecheckMeasure=Yn.typecheckDimension=Yn.typecheckIndex=Yn.typecheckProject=void 0;const On=Cu;function jSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckProject=jSe;function qSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,On.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`)}}Yn.typecheckIndex=qSe;function HSe(t,e){if(!(0,On.expressionIsScalar)(t.expressionType))if((0,On.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,On.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`)}Yn.typecheckDimension=HSe;function zSe(t,e){if(!(0,On.expressionIsAggregate)(t.expressionType))if((0,On.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,On.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`)}Yn.typecheckMeasure=zSe;function QSe(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,On.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Yn.typecheckDeclare=QSe;function GSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,On.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?`)}}Yn.typecheckCalculate=GSe;function WSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckAggregate=WSe;function VSe(t,e){if(t.dataType==="turtle"||!(0,On.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,On.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,On.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?`)}}Yn.typecheckGroupBy=VSe,Object.defineProperty(mt,"__esModule",{value:!0}),mt.FieldReferences=mt.WildcardFieldReference=mt.ViewOrScalarFieldReference=mt.DimensionFieldReference=mt.MeasureFieldReference=mt.DeclareFieldReference=mt.ProjectFieldReference=mt.GroupByFieldReference=mt.AggregateFieldReference=mt.IndexFieldReference=mt.CalculateFieldReference=mt.PartitionByFieldReference=mt.ExpressionFieldReference=mt.AcceptExceptFieldReference=mt.FieldReference=void 0;const YSe=S1,XSe=bs,kz=Ve,Pz=Gr,B0=Yn;class Rs extends kz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Pz.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 YSe.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}}mt.FieldReference=Rs;class KSe extends Rs{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}mt.AcceptExceptFieldReference=KSe;class JSe extends Rs{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}mt.ExpressionFieldReference=JSe;class ZSe extends Rs{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}mt.PartitionByFieldReference=ZSe;class eve extends Rs{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,B0.typecheckCalculate)(e,this)}}mt.CalculateFieldReference=eve;class FL extends Rs{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,B0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return FL.indexOutputName(this.path)}}mt.IndexFieldReference=FL;class tve extends Rs{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,B0.typecheckAggregate)(e,this)}}mt.AggregateFieldReference=tve;class nve extends Rs{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,B0.typecheckGroupBy)(e,this)}}mt.GroupByFieldReference=nve;class rve extends Rs{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,B0.typecheckProject)(e,this)}}mt.ProjectFieldReference=rve;class ive extends Rs{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,B0.typecheckDeclare)(e,this)}}mt.DeclareFieldReference=ive;class sve extends Rs{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,B0.typecheckMeasure)(e,this)}}mt.MeasureFieldReference=sve;class ove extends Rs{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,B0.typecheckDimension)(e,this)}}mt.DimensionFieldReference=ove;class uve extends Rs{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}mt.ViewOrScalarFieldReference=uve;class ave extends kz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Pz.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}.*`:"*"}}mt.WildcardFieldReference=ave;class lve extends XSe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}mt.FieldReferences=lve,Object.defineProperty(fl,"__esModule",{value:!0}),fl.ExprAggregateFunction=void 0;const Mz=ne,cve=Wt,v1=fr,fve=Yr,xve=ix,dve=un,hve=mt,pve=pt,gve=Wr,mve=op;class yve extends pve.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[dve.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,Mz.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>Eve(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof xve.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,v1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,v1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,v1.errorFor)("agggregate without expression");if((0,Mz.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,v1.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=LL(a,c),p=IL(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=Ave(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,v1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...wL(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...wL(e,r))}return n}}fl.ExprAggregateFunction=yve;function Eve(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 wL(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 fve.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof gve.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,cve.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=wL(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function LL(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 IL(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 Ave(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=LL(i,e),o=IL(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=LL(l,e),f=IL(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 hve.FieldReference?`${n.refString}.${r}()`:n instanceof mve.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 z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.ExprAlternationTree=void 0;const Uz=ne,Sve=fr,vve=ep,_ve=fn;class Cve extends vve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Uz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Uz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,_ve.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,Sve.errorFor)("no value from alternation tree")}}z_.ExprAlternationTree=Cve;var up={};Object.defineProperty(up,"__esModule",{value:!0}),up.ExprAsymmetric=void 0;const bve=fl;class Tve extends bve.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}`}}}}up.ExprAsymmetric=Tve;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ExprAvg=void 0;const Rve=up;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Q_.ExprAvg=Ove;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ExprCast=void 0;const Nve=Tn,Dve=pt,Fve=fn;class wve extends Dve.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="unsupported";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:"unsupported":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,Fve.compressExpr)((0,Nve.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}G_.ExprCast=wve;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprCoalesce=void 0;const $L=Cu,jz=un,Lve=pt;class Ive extends Lve.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=jz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(jz.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,$L.maxExpressionType)(n.expressionType,r.expressionType),value:(0,$L.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,$L.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}W_.ExprCoalesce=Ive;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprCount=void 0;const $ve=fl;class Bve extends $ve.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}V_.ExprCount=Bve;var Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprCountDistinct=void 0;const X_=un,kve=fl;class Pve extends kve.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[X_.FT.numberT,X_.FT.stringT,X_.FT.dateT,X_.FT.timestampT]}}Y_.ExprCountDistinct=Pve;var K_={},k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.Limit=void 0;const Mve=Ve,Uve=bn;class jve extends Mve.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Uve.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}k0.Limit=jve;var ap={};Object.defineProperty(ap,"__esModule",{value:!0}),ap.PartitionBy=void 0;const qve=Ve;class Hve extends qve.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}ap.PartitionBy=Hve;var _1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.ExprFunc=void 0;const ro=ne,xl=fr,zve=ix,Qve=pt,qz=fn;class Gve extends Qve.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(N=>N.getExpression(e));if(this.isRaw){let N="scalar",L;const M=[`${this.name}(`];for(const W of a)N=(0,ro.maxExpressionType)(N,W.expressionType),L?M.push(","):L=W.dataType,M.push(...W.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:L)!==null&&i!==void 0?i:"number",expressionType:N,value:(0,qz.compressExpr)(M),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(W=>W.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,xl.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,xl.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 N=this.source.getField(e).found;if(N){const L=N.typeDesc();if((0,ro.isAtomicFieldType)(L.dataType))c={dataType:L.dataType,expressionType:L.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:L.evalSpace},f=this.source.path.slice(0,-1);else if(!(N instanceof zve.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${L.dataType}`;return this.log(M),(0,xl.errorFor)(M)}}else{const L=`Reference to undefined value ${this.source.refString}`;return this.log(L),(0,xl.errorFor)(L)}}const x=[...c?[c]:[],...a],h=Wve(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(N=>N.dataType).join(", ")})`),(0,xl.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const N of m){const L=N.argIndex-(c?1:0),M=(0,ro.expressionIsScalar)(N.maxExpressionType)?"scalar":"scalar or aggregate";this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must be ${M}, but received ${N.actualExpressionType}`)}for(const N of g){const L=N.argIndex-(c?1:0),M=N.maxEvalSpace==="literal"?"literal":N.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must be ${M}, but received ${N.actualEvalSpace}`)}for(const N of y){const L=N.argIndex-(c?1:0);this.args[L].log(`Parameter ${N.argIndex+1} ('${N.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(N=>N.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(N=>N.dataType).join(", ")}) with source`),(0,xl.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(N=>N.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const N=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(N||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||N){const L=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(q=>N?q.getAnalyticOrderBy(e):q.getAggregateOrderBy(e,L));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const N=[];for(const L of n.partitionBys)for(const M of L.partitionFields){const q=M.getField(e);q.found===void 0?M.log(`${M.refString} is not defined`):(0,ro.expressionIsAnalytic)(q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(q.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):N.push(M.nameString)}S.partitionBy=N}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return(0,xl.errorFor)(`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const N=x[0].value;if(N.length!==1||typeof N[0]=="string"||N[0].type!=="dialect"||N[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const L=N[0].literal,M=Vve(L),q=M.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(q.length>0){const W=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(W),(0,xl.errorFor)(`${W}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}v=[{type:"sql-string",e:M.map(W=>W.type==="string"?W.value:W.name==="TABLE"?{type:"source-reference"}:{type:"field",path:[W.name]})}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,xl.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(N=>N.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,qz.compressExpr)(v),evalSpace:R}}}_1.ExprFunc=Gve;function Wve(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 Vve(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(K_,"__esModule",{value:!0}),K_.ExprProps=void 0;const Yve=ne,Xve=fr,Kve=un,Jve=$0,Zve=k0,e_e=ap,t_e=pt,n_e=_1;class r_e extends t_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=Kve.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,Yve.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,Xve.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof e_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof Zve.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 Jve.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 n_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}K_.ExprProps=r_e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprLogicalOp=void 0;const i_e=ep,Hz=un;class s_e extends i_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Hz.FT.boolT,Hz.FT.aggregateBoolT]}}J_.ExprLogicalOp=s_e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprMax=void 0;const eC=un,o_e=fl;class u_e extends o_e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[eC.FT.numberT,eC.FT.stringT,eC.FT.dateT,eC.FT.timestampT]}returns(e){return e.dataType}}Z_.ExprMax=u_e;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.ExprMin=void 0;const nC=un,a_e=fl;class l_e extends a_e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[nC.FT.numberT,nC.FT.stringT,nC.FT.dateT,nC.FT.timestampT]}returns(e){return e.dataType}}tC.ExprMin=l_e;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.ExprMinus=void 0;const c_e=fr,zz=un,f_e=pt;class x_e extends f_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[zz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return zz.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,c_e.errorFor)("negate requires number")}}rC.ExprMinus=x_e;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.ExprMulDiv=void 0;const d_e=sp;class h_e extends d_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}iC.ExprMulDiv=h_e;var sC={},C1={};Object.defineProperty(C1,"__esModule",{value:!0}),C1.Unary=void 0;const p_e=pt;class g_e extends p_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}C1.Unary=g_e,Object.defineProperty(sC,"__esModule",{value:!0}),sC.ExprNot=void 0;const Qz=un,m_e=C1,y_e=fn;class E_e extends m_e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Qz.FT.boolT,Qz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,y_e.nullsafeNot)(n.value):["false"]}}}sC.ExprNot=E_e;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.ExprNow=void 0;const A_e=pt;class S_e extends A_e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}oC.ExprNow=S_e;var uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprNULL=void 0;const v_e=pt;class __e extends v_e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}uC.ExprNULL=__e;var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprNumber=void 0;const C_e=un,b_e=pt;class T_e extends b_e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...C_e.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}aC.ExprNumber=T_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprParens=void 0;const R_e=pt;class O_e extends R_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:["(",...n.value,")"]}}}lC.ExprParens=O_e;var cC={};Object.defineProperty(cC,"__esModule",{value:!0}),cC.ExprRegEx=void 0;const N_e=pt;class D_e extends N_e.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}cC.ExprRegEx=D_e;var fC={};Object.defineProperty(fC,"__esModule",{value:!0}),fC.ExprString=void 0;const F_e=pt,w_e=un;class L_e extends F_e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...w_e.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}fC.ExprString=L_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprSum=void 0;const I_e=up;class $_e extends I_e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}xC.ExprSum=$_e;var dC={};Object.defineProperty(dC,"__esModule",{value:!0}),dC.ExprTimeExtract=void 0;const ax=ne,P0=fr,BL=pt,B_e=I0;class b1 extends BL.ExpressionDef{static extractor(e){const n=b1.pluralMap[e];if(n)return n;if((0,ax.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=b1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,P0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof B_e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,ax.maxExpressionType)(i.expressionType,s.expressionType),u=(0,ax.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,P0.errorFor)("extract from error").value};if(!(0,ax.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,P0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,ax.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,P0.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,BL.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,BL.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,P0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,P0.errorFor)(`${n} civil extraction`)):(0,ax.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,P0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,ax.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,P0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}dC.ExprTimeExtract=b1,b1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var hC={},jo={},lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.FieldName=void 0;const k_e=Ve;class P_e extends k_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])}}lx.FieldName=P_e;var pC={};Object.defineProperty(pC,"__esModule",{value:!0}),pC.QueryInputSpace=void 0;const M_e=Zi,U_e=f1,j_e=Wh;class q_e extends j_e.RefinedSpace{constructor(e,n){const r=new U_e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof M_e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}pC.QueryInputSpace=q_e;var H_e=O&&O.__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]}),z_e=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Q_e=O&&O.__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)&&H_e(e,t,n);return z_e(e,t),e};Object.defineProperty(jo,"__esModule",{value:!0}),jo.ReduceFieldSpace=jo.QuerySpace=jo.QueryOperationSpace=void 0;const gC=Q_e(ne),kL=O0,G_e=lx,W_e=Wr,V_e=mt,Y_e=Wh,X_e=c1,K_e=Yr,J_e=pC;class Gz extends Y_e.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new J_e.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 K_e.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))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();gC.isAtomicFieldType(l.dataType)&&gC.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)}}jo.QueryOperationSpace=Gz;class Wz extends Gz{addRefineFromFields(e){var n;if(gC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new G_e.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 X_e.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof V_e.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof W_e.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)&&!eCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(gC.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,kL.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,kL.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,kL.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}}jo.QuerySpace=Wz;class Z_e extends Wz{constructor(){super(...arguments),this.segmentType="reduce"}}jo.ReduceFieldSpace=Z_e;function eCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(hC,"__esModule",{value:!0}),hC.ExprUngroup=void 0;const Vz=ne,PL=fr,tCe=jo,nCe=un,rCe=pt;class iCe extends rCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=nCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Vz.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,PL.errorFor)("ungrouped scalar");if((0,Vz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,PL.errorFor)("doubly-ungrouped aggregate");const r={type:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof tCe.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,PL.errorFor)("ungrouped type check")}}hC.ExprUngroup=iCe;var mC={};Object.defineProperty(mC,"__esModule",{value:!0}),mC.ForRange=void 0;const Yz=Cu,ML=fr,Xz=un,yC=Tn,sCe=pt,EC=ip,Kz=I0;class oCe extends sCe.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=[Xz.FT.timestampT,Xz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,ML.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,Yz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Yz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,ML.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,yC.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,yC.timeOffset)("date",i.value,"+",o.value,u),g=new EC.ExprTime("date",m);return new Kz.Range(p,g).apply(e,n,r)}const l=EC.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,yC.castDateToTimestamp)(f),c=new EC.ExprTime("timestamp",f,i.expressionType)}const x=(0,yC.timeOffset)("timestamp",f,"+",o.value,u),h=new EC.ExprTime("timestamp",x,i.expressionType);return new Kz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,ML.errorFor)("range has no value")}}mC.ForRange=oCe;var xr={},es={};Object.defineProperty(es,"__esModule",{value:!0});class cx extends Error{}class uCe extends cx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class aCe extends cx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class lCe extends cx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class T1 extends cx{}class Jz extends cx{constructor(e){super(`Invalid unit ${e}`)}}class io extends cx{}class M0 extends cx{constructor(){super("Zone is an abstract class")}}const ke="numeric",qo="short",Os="long",UL={year:ke,month:ke,day:ke},Zz={year:ke,month:qo,day:ke},cCe={year:ke,month:qo,day:ke,weekday:qo},eQ={year:ke,month:Os,day:ke},tQ={year:ke,month:Os,day:ke,weekday:Os},nQ={hour:ke,minute:ke},rQ={hour:ke,minute:ke,second:ke},iQ={hour:ke,minute:ke,second:ke,timeZoneName:qo},sQ={hour:ke,minute:ke,second:ke,timeZoneName:Os},oQ={hour:ke,minute:ke,hourCycle:"h23"},uQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},aQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:qo},lQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},cQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},fQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},xQ={year:ke,month:qo,day:ke,hour:ke,minute:ke},dQ={year:ke,month:qo,day:ke,hour:ke,minute:ke,second:ke},fCe={year:ke,month:qo,day:ke,weekday:qo,hour:ke,minute:ke},hQ={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:qo},pQ={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:qo},gQ={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},mQ={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function At(t){return typeof t>"u"}function fx(t){return typeof t=="number"}function AC(t){return typeof t=="number"&&t%1===0}function xCe(t){return typeof t=="string"}function dCe(t){return Object.prototype.toString.call(t)==="[object Date]"}function yQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function hCe(t){return Array.isArray(t)?t:[t]}function EQ(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 pCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function lp(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function dl(t,e,n){return AC(t)&&t>=e&&t<=n}function gCe(t,e){return t-e*Math.floor(t/e)}function jn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function U0(t){if(!(At(t)||t===null||t===""))return parseInt(t,10)}function xx(t){if(!(At(t)||t===null||t===""))return parseFloat(t)}function jL(t){if(!(At(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function qL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function R1(t){return t%4===0&&(t%100!==0||t%400===0)}function O1(t){return R1(t)?366:365}function SC(t,e){const n=gCe(e-1,12)+1,r=t+(e-n)/12;return n===2?R1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function HL(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 vC(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 zL(t){return t>99?t:t>60?1900+t:2e3+t}function AQ(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 _C(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 SQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function CC(t,e){const n={};for(const r in t)if(lp(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=SQ(i)}return n}function N1(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}${jn(n,2)}:${jn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${jn(n,2)}${jn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function bC(t){return pCe(t,["hour","minute","second","millisecond"])}const vQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,mCe=["January","February","March","April","May","June","July","August","September","October","November","December"],_Q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],yCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function CQ(t){switch(t){case"narrow":return[...yCe];case"short":return[..._Q];case"long":return[...mCe];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 bQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],TQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ECe=["M","T","W","T","F","S","S"];function RQ(t){switch(t){case"narrow":return[...ECe];case"short":return[...TQ];case"long":return[...bQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const OQ=["AM","PM"],ACe=["Before Christ","Anno Domini"],SCe=["BC","AD"],vCe=["B","A"];function NQ(t){switch(t){case"narrow":return[...vCe];case"short":return[...SCe];case"long":return[...ACe];default:return null}}function _Ce(t){return OQ[t.hour<12?0:1]}function CCe(t,e){return RQ(e)[t.weekday-1]}function bCe(t,e){return CQ(e)[t.month-1]}function TCe(t,e){return NQ(e)[t.year<0?0:1]}function RCe(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 DQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const OCe={D:UL,DD:Zz,DDD:eQ,DDDD:tQ,t:nQ,tt:rQ,ttt:iQ,tttt:sQ,T:oQ,TT:uQ,TTT:aQ,TTTT:lQ,f:cQ,ff:xQ,fff:hQ,ffff:gQ,F:fQ,FF:dQ,FFF:pQ,FFFF:mQ};class ts{static create(e,n={}){return new ts(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 OCe[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 jn(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?_Ce(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?bCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?CCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=ts.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?TCe(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 DQ(ts.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=ts.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 DQ(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 cp=class{get type(){throw new M0}get name(){throw new M0}get ianaName(){return this.name}get isUniversal(){throw new M0}offsetName(e,n){throw new M0}formatOffset(e,n){throw new M0}offset(e){throw new M0}equals(e){throw new M0}get isValid(){throw new M0}},QL=null;class TC extends cp{static get instance(){return QL===null&&(QL=new TC),QL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return AQ(e,n,r)}formatOffset(e,n){return N1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let RC={};function NCe(t){return RC[t]||(RC[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"})),RC[t]}const DCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function FCe(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 wCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=DCe[s];s==="era"?r[u]=o:At(u)||(r[u]=parseInt(o,10))}return r}let OC={};class Gu extends cp{static create(e){return OC[e]||(OC[e]=new Gu(e)),OC[e]}static resetCache(){OC={},RC={}}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=Gu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return AQ(e,n,r,this.name)}formatOffset(e,n){return N1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=NCe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?wCe(r,n):FCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=HL({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 GL=null;class Xr extends cp{static get utcInstance(){return GL===null&&(GL=new Xr(0)),GL}static instance(e){return e===0?Xr.utcInstance:new Xr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Xr(_C(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${N1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${N1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return N1(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 FQ extends cp{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 j0(t,e){if(At(t)||t===null)return e;if(t instanceof cp)return t;if(xCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Xr.utcInstance:Xr.parseSpecifier(n)||Gu.create(t)}else return fx(t)?Xr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new FQ(t)}let wQ=()=>Date.now(),LQ="system",IQ=null,$Q=null,BQ=null,kQ;class qn{static get now(){return wQ}static set now(e){wQ=e}static set defaultZone(e){LQ=e}static get defaultZone(){return j0(LQ,TC.instance)}static get defaultLocale(){return IQ}static set defaultLocale(e){IQ=e}static get defaultNumberingSystem(){return $Q}static set defaultNumberingSystem(e){$Q=e}static get defaultOutputCalendar(){return BQ}static set defaultOutputCalendar(e){BQ=e}static get throwOnInvalid(){return kQ}static set throwOnInvalid(e){kQ=e}static resetCaches(){xn.resetCache(),Gu.resetCache()}}let PQ={};function LCe(t,e={}){const n=JSON.stringify([t,e]);let r=PQ[n];return r||(r=new Intl.ListFormat(t,e),PQ[n]=r),r}let WL={};function VL(t,e={}){const n=JSON.stringify([t,e]);let r=WL[n];return r||(r=new Intl.DateTimeFormat(t,e),WL[n]=r),r}let YL={};function ICe(t,e={}){const n=JSON.stringify([t,e]);let r=YL[n];return r||(r=new Intl.NumberFormat(t,e),YL[n]=r),r}let XL={};function $Ce(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=XL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),XL[i]=s),s}let D1=null;function BCe(){return D1||(D1=new Intl.DateTimeFormat().resolvedOptions().locale,D1)}function kCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=VL(t).resolvedOptions()}catch{n=VL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function PCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function MCe(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function UCe(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function NC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function jCe(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 qCe{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=ICe(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):qL(e,3);return jn(n,this.padTo)}}}class HCe{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&&Gu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.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=VL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class zCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&yQ()&&(this.rtf=$Ce(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):RCe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||qn.defaultLocale,o=s||(i?"en-US":BCe()),u=n||qn.defaultNumberingSystem,a=r||qn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){D1=null,WL={},YL={},XL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=kCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=PCe(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=jCe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return NC(this,e,r,CQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=MCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return NC(this,e,r,RQ,()=>{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]=UCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return NC(this,void 0,e,()=>OQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return NC(this,e,n,NQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.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 qCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new HCe(e,this.intl,n)}relFormatter(e={}){return new zCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return LCe(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 fp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function xp(...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 dp(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 MQ(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=U0(e[n+i]);return[r,null,n+i]}}const UQ=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,QCe=`(?:${UQ.source}?(?:\\[(${vQ.source})\\])?)?`,KL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,jQ=RegExp(`${KL.source}${QCe}`),JL=RegExp(`(?:T${jQ.source})?`),GCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,WCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,VCe=/(\d{4})-?(\d{3})/,YCe=MQ("weekYear","weekNumber","weekDay"),XCe=MQ("year","ordinal"),KCe=/(\d{4})-(\d\d)-(\d\d)/,qQ=RegExp(`${KL.source} ?(?:${UQ.source}|(${vQ.source}))?`),JCe=RegExp(`(?: ${qQ.source})?`);function hp(t,e,n){const r=t[e];return At(r)?n:U0(r)}function ZCe(t,e){return[{year:hp(t,e),month:hp(t,e+1,1),day:hp(t,e+2,1)},null,e+3]}function pp(t,e){return[{hours:hp(t,e,0),minutes:hp(t,e+1,0),seconds:hp(t,e+2,0),milliseconds:jL(t[e+3])},null,e+4]}function F1(t,e){const n=!t[e]&&!t[e+1],r=_C(t[e+1],t[e+2]),i=n?null:Xr.instance(r);return[{},i,e+3]}function w1(t,e){const n=t[e]?Gu.create(t[e]):null;return[{},n,e+1]}const ebe=RegExp(`^T?${KL.source}$`),tbe=/^-?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 nbe(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(xx(n)),months:x(xx(r)),weeks:x(xx(i)),days:x(xx(s)),hours:x(xx(o)),minutes:x(xx(u)),seconds:x(xx(a),a==="-0"),milliseconds:x(jL(l),f)}]}const rbe={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 ZL(t,e,n,r,i,s,o){const u={year:e.length===2?zL(U0(e)):U0(e),month:_Q.indexOf(n)+1,day:U0(r),hour:U0(i),minute:U0(s)};return o&&(u.second=U0(o)),t&&(u.weekday=t.length>3?bQ.indexOf(t)+1:TQ.indexOf(t)+1),u}const ibe=/^(?:(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 sbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=ZL(e,i,r,n,s,o,u);let h;return a?h=rbe[a]:l?h=0:h=_C(c,f),[x,new Xr(h)]}function obe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const ube=/^(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$/,abe=/^(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$/,lbe=/^(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 HQ(t){const[,e,n,r,i,s,o,u]=t;return[ZL(e,i,r,n,s,o,u),Xr.utcInstance]}function cbe(t){const[,e,n,r,i,s,o,u]=t;return[ZL(e,u,n,r,i,s,o),Xr.utcInstance]}const fbe=fp(GCe,JL),xbe=fp(WCe,JL),dbe=fp(VCe,JL),hbe=fp(jQ),zQ=xp(ZCe,pp,F1,w1),pbe=xp(YCe,pp,F1,w1),gbe=xp(XCe,pp,F1,w1),mbe=xp(pp,F1,w1);function ybe(t){return dp(t,[fbe,zQ],[xbe,pbe],[dbe,gbe],[hbe,mbe])}function Ebe(t){return dp(obe(t),[ibe,sbe])}function Abe(t){return dp(t,[ube,HQ],[abe,HQ],[lbe,cbe])}function Sbe(t){return dp(t,[tbe,nbe])}const vbe=xp(pp);function _be(t){return dp(t,[ebe,vbe])}const Cbe=fp(KCe,JCe),bbe=fp(qQ),Tbe=xp(pp,F1,w1);function Rbe(t){return dp(t,[Cbe,zQ],[bbe,Tbe])}const Obe="Invalid Duration",QQ={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}},Nbe={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},...QQ},so=146097/400,gp=146097/4800,Dbe={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:gp/7,days:gp,hours:gp*24,minutes:gp*24*60,seconds:gp*24*60*60,milliseconds:gp*24*60*60*1e3},...QQ},dx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Fbe=dx.slice(0).reverse();function hx(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 St(r)}function wbe(t){return t<0?Math.floor(t):Math.ceil(t)}function GQ(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?wbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Lbe(t,e){Fbe.reduce((n,r)=>At(e[r])?n:(n&&GQ(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Dbe:Nbe,this.isLuxonDuration=!0}static fromMillis(e,n){return St.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 St({values:CC(e,St.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(fx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Sbe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=_be(e);return r?St.fromObject(r,n):St.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(qn.throwOnInvalid)throw new lCe(r);return new St({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 Jz(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?ts.create(this.loc,r).formatDurationFromString(this,e):Obe}toHuman(e={}){const n=dx.map(r=>{const i=this.values[r];return At(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+=qL(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=St.fromDurationLike(e),r={};for(const i of dx)(lp(n.values,i)||lp(this.values,i))&&(r[i]=n.get(i)+this.get(i));return hx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=SQ(e(this.values[r],r));return hx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...CC(e,St.normalizeUnit)};return hx(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),hx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Lbe(this.matrix,e),hx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of dx)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;fx(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)dx.indexOf(l)>dx.indexOf(o)&&GQ(this.matrix,i,l,n,o)}else fx(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 hx(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 hx(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 dx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const L1="Invalid Interval";function Ibe(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(qn.throwOnInvalid)throw new aCe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=k1(e),i=k1(n),s=Ibe(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=k1(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=k1(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(k1).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:L1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:L1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:L1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:L1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:L1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let I1=class{static hasDST(e=qn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Gu.isValidZone(e)}static normalizeZone(e){return j0(e,qn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:yQ()}}};function WQ(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function $be(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=WQ(u,a);return(l-l%7)/7}],["days",WQ]],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 Bbe(t,e,n,r){let[i,s,o,u]=$be(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const e4={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},VQ={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]},kbe=e4.hanidec.replace(/[\[|\]]/g,"").split("");function Pbe(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(e4.hanidec)!==-1)e+=kbe.indexOf(t[n]);else for(const i in VQ){const[s,o]=VQ[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function zo({numberingSystem:t},e=""){return new RegExp(`${e4[t||"latn"]}${e}`)}const Mbe="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(Pbe(n))}}const YQ="[ ]",XQ=new RegExp(YQ,"g");function Ube(t){return t.replace(/\./g,"\\.?").replace(XQ,YQ)}function KQ(t){return t.replace(/\./g,"").replace(XQ," ").toLowerCase()}function Qo(t,e){return t===null?null:{regex:RegExp(t.map(Ube).join("|")),deser:([n])=>t.findIndex(r=>KQ(n)===KQ(r))+e}}function JQ(t,e){return{regex:t,deser:([,n,r])=>_C(n,r),groups:e}}function t4(t){return{regex:t,deser:([e])=>e}}function jbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function qbe(t,e){const n=zo(e),r=zo(e,"{2}"),i=zo(e,"{3}"),s=zo(e,"{4}"),o=zo(e,"{6}"),u=zo(e,"{1,2}"),a=zo(e,"{1,3}"),l=zo(e,"{1,6}"),c=zo(e,"{1,9}"),f=zo(e,"{2,4}"),x=zo(e,"{4,6}"),h=g=>({regex:RegExp(jbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Qo(e.eras("short",!1),0);case"GG":return Qo(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,zL);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return Qo(e.months("short",!0,!1),1);case"MMMM":return Qo(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return Qo(e.months("short",!1,!1),1);case"LLLL":return Qo(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return t4(c);case"uu":return t4(u);case"uuu":return Ft(n);case"a":return Qo(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,zL);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return Qo(e.weekdays("short",!1,!1),1);case"EEEE":return Qo(e.weekdays("long",!1,!1),1);case"ccc":return Qo(e.weekdays("short",!0,!1),1);case"cccc":return Qo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return JQ(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return JQ(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return t4(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Mbe};return m.token=t,m}const Hbe={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 zbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Hbe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Qbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Gbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(lp(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 Wbe(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 At(t.z)||(n=Gu.create(t.z)),At(t.Z)||(n||(n=new Xr(t.Z)),r=t.Z),At(t.q)||(t.M=(t.q-1)*3+1),At(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),At(t.u)||(t.S=jL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let n4=null;function Vbe(){return n4||(n4=ot.fromMillis(1555555555555)),n4}function Ybe(t,e){if(t.literal)return t;const n=ts.macroTokenToFormatOpts(t.val);if(!n)return t;const s=ts.create(e,n).formatDateTimeParts(Vbe()).map(o=>zbe(o,e,n));return s.includes(void 0)?t:s}function Xbe(t,e){return Array.prototype.concat(...t.map(n=>Ybe(n,e)))}function ZQ(t,e,n){const r=Xbe(ts.parseFormat(n),t),i=r.map(o=>qbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Qbe(i),a=RegExp(o,"i"),[l,c]=Gbe(e,a,u),[f,x,h]=c?Wbe(c):[null,null,void 0];if(lp(c,"a")&&lp(c,"H"))throw new T1("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 Kbe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=ZQ(t,e,n);return[r,i,s,o]}const eG=[0,31,59,90,120,151,181,212,243,273,304,334],tG=[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 nG(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 rG(t,e,n){return n+(R1(t)?tG:eG)[e-1]}function iG(t,e){const n=R1(t)?tG:eG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function r4(t){const{year:e,month:n,day:r}=t,i=rG(e,n,r),s=nG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=vC(u)):o>vC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...bC(t)}}function sG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=nG(e,1,4),s=O1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=O1(u)):o>s?(u=e+1,o-=O1(e)):u=e;const{month:a,day:l}=iG(u,o);return{year:u,month:a,day:l,...bC(t)}}function i4(t){const{year:e,month:n,day:r}=t,i=rG(e,n,r);return{year:e,ordinal:i,...bC(t)}}function oG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=iG(e,n);return{year:e,month:r,day:i,...bC(t)}}function Jbe(t){const e=AC(t.weekYear),n=dl(t.weekNumber,1,vC(t.weekYear)),r=dl(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function Zbe(t){const e=AC(t.year),n=dl(t.ordinal,1,O1(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function uG(t){const e=AC(t.year),n=dl(t.month,1,12),r=dl(t.day,1,SC(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function aG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=dl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=dl(n,0,59),u=dl(r,0,59),a=dl(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const s4="Invalid DateTime",lG=864e13;function DC(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function o4(t){return t.weekData===null&&(t.weekData=r4(t.c)),t.weekData}function $1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function cG(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 fG(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 FC(t,e,n){return cG(HL(t),e,n)}function xG(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,SC(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.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=HL(s);let[a,l]=cG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function B1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function wC(t,e,n=!0){return t.isValid?ts.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function u4(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=jn(t.c.year,n?6:4),e?(r+="-",r+=jn(t.c.month),r+="-",r+=jn(t.c.day)):(r+=jn(t.c.month),r+=jn(t.c.day)),r}function dG(t,e,n,r,i,s){let o=jn(t.c.hour);return e?(o+=":",o+=jn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=jn(t.c.minute),(t.c.second!==0||!n)&&(o+=jn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=jn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=jn(Math.trunc(-t.o/60)),o+=":",o+=jn(Math.trunc(-t.o%60))):(o+="+",o+=jn(Math.trunc(t.o/60)),o+=":",o+=jn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const hG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},eTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},tTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},pG=["year","month","day","hour","minute","second","millisecond"],nTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],rTe=["year","ordinal","hour","minute","second","millisecond"];function gG(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 Jz(t);return e}function mG(t,e){const n=j0(e.zone,qn.defaultZone),r=xn.fromObject(e),i=qn.now();let s,o;if(At(t.year))s=i;else{for(const l of pG)At(t[l])&&(t[l]=hG[l]);const u=uG(t)||aG(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=FC(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function yG(t,e,n){const r=At(n.round)?!0:n.round,i=(o,u)=>(o=qL(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 EG(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 ot{constructor(e){const n=e.zone||qn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:DC(n));this.ts=At(e.ts)?qn.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=fG(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||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=EG(arguments),[r,i,s,o,u,a,l]=n;return mG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=EG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Xr.utcInstance,mG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=dCe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=j0(n.zone,qn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:xn.fromObject(n)}):ot.invalid(DC(i))}static fromMillis(e,n={}){if(fx(e))return e<-lG||e>lG?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:j0(n.zone,qn.defaultZone),loc:xn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(fx(e))return new ot({ts:e*1e3,zone:j0(n.zone,qn.defaultZone),loc:xn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=j0(n.zone,qn.defaultZone);if(!r.isValid)return ot.invalid(DC(r));const i=qn.now(),s=At(n.specificOffset)?r.offset(i):n.specificOffset,o=CC(e,gG),u=!At(o.ordinal),a=!At(o.year),l=!At(o.month)||!At(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new T1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=fG(i,s);h?(p=nTe,m=eTe,g=r4(g)):u?(p=rTe,m=tTe,g=i4(g)):(p=pG,m=hG);let y=!1;for(const b of p){const R=o[b];At(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?Jbe(o):u?Zbe(o):uG(o),A=E||aG(o);if(A)return ot.invalid(A);const S=h?sG(o):u?oG(o):o,[v,_]=FC(S,s,r),C=new ot({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.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]=ybe(e);return B1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=Ebe(e);return B1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Abe(e);return B1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(At(e)||At(n))throw new io("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=Kbe(o,e,n);return c?ot.invalid(c):B1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Rbe(e);return B1(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(qn.throwOnInvalid)throw new uCe(r);return new ot({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?o4(this).weekYear:NaN}get weekNumber(){return this.isValid?o4(this).weekNumber:NaN}get weekday(){return this.isValid?o4(this).weekday:NaN}get ordinal(){return this.isValid?i4(this.c).ordinal:NaN}get monthShort(){return this.isValid?I1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?I1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?I1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?I1.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 R1(this.year)}get daysInMonth(){return SC(this.year,this.month)}get daysInYear(){return this.isValid?O1(this.year):NaN}get weeksInWeekYear(){return this.isValid?vC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=ts.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Xr.instance(e),n)}toLocal(){return this.setZone(qn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=j0(e,qn.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]=FC(o,s,e)}return $1(this,{ts:i,zone:e})}else return ot.invalid(DC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return $1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=CC(e,gG),r=!At(n.weekYear)||!At(n.weekNumber)||!At(n.weekday),i=!At(n.ordinal),s=!At(n.year),o=!At(n.month)||!At(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new T1("Can't mix ordinal dates with month/day");let l;r?l=sG({...r4(this.c),...n}):At(n.ordinal)?(l={...this.toObject(),...n},At(n.day)&&(l.day=Math.min(SC(l.year,l.month),l.day))):l=oG({...i4(this.c),...n});const[c,f]=FC(l,this.o,this.zone);return $1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return $1(this,xG(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return $1(this,xG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?ts.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):s4}toLocaleString(e=UL,n={}){return this.isValid?ts.create(this.loc.clone(n),e).formatDateTime(this):s4}toLocaleParts(e={}){return this.isValid?ts.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=u4(this,o);return u+="T",u+=dG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?u4(this,e==="extended"):null}toISOWeekDate(){return wC(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":"")+dG(this,o==="extended",n,e,r,s):null}toRFC2822(){return wC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return wC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?u4(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")),wC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():s4}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=hCe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=Bbe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ot.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),yG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?yG(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new io("min requires all arguments be DateTimes");return EQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new io("max requires all arguments be DateTimes");return EQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return ZQ(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return UL}static get DATE_MED(){return Zz}static get DATE_MED_WITH_WEEKDAY(){return cCe}static get DATE_FULL(){return eQ}static get DATE_HUGE(){return tQ}static get TIME_SIMPLE(){return nQ}static get TIME_WITH_SECONDS(){return rQ}static get TIME_WITH_SHORT_OFFSET(){return iQ}static get TIME_WITH_LONG_OFFSET(){return sQ}static get TIME_24_SIMPLE(){return oQ}static get TIME_24_WITH_SECONDS(){return uQ}static get TIME_24_WITH_SHORT_OFFSET(){return aQ}static get TIME_24_WITH_LONG_OFFSET(){return lQ}static get DATETIME_SHORT(){return cQ}static get DATETIME_SHORT_WITH_SECONDS(){return fQ}static get DATETIME_MED(){return xQ}static get DATETIME_MED_WITH_SECONDS(){return dQ}static get DATETIME_MED_WITH_WEEKDAY(){return fCe}static get DATETIME_FULL(){return hQ}static get DATETIME_FULL_WITH_SECONDS(){return pQ}static get DATETIME_HUGE(){return gQ}static get DATETIME_HUGE_WITH_SECONDS(){return mQ}}function k1(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&fx(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const iTe="2.5.2";es.DateTime=ot,es.Duration=St,es.FixedOffsetZone=Xr,es.IANAZone=Gu,es.Info=I1,es.Interval=dn,es.InvalidZone=FQ,es.Settings=qn,es.SystemZone=TC,es.VERSION=iTe,es.Zone=cp,Object.defineProperty(xr,"__esModule",{value:!0}),xr.LiteralYear=xr.LiteralQuarter=xr.LiteralMonth=xr.LiteralWeek=xr.LiteralDay=xr.LiteralHour=xr.LiteralTimestamp=xr.TimeFormatError=void 0;const q0=es,sTe=ne,oTe=I0,AG=ip,a4=pt;class uTe extends Error{}xr.TimeFormatError=uTe;function px(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 SG="yyyy",vG=`${SG}-LL`,uo=`${vG}-dd`,_G=`${uo} HH`,CG=`${_G}:mm`,l4=`${CG}:ss`;class bG extends a4.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={type:"dialect",function:"timeLiteral",literal:e,literalType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=[r];return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class c4 extends bG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=px(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=q0.DateTime.fromFormat(e,l4);if(s.isValid)return new c4(r,n);if(s=q0.DateTime.fromFormat(e,CG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(l4);return new f4(r,n,"timestamp",o)}}}xr.LiteralTimestamp=c4;class f4 extends bG{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,a4.getMorphicValue)(i,"timestamp"),a=(0,a4.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,sTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new oTe.Range(new AG.ExprTime(u,i.value),new AG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class x4 extends f4{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,_G);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(l4),new x4(n,r)}}xr.LiteralHour=x4;class P1 extends f4{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 d4 extends P1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new d4(n,r)}}xr.LiteralDay=d4;class h4 extends P1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=px(e,!1);let r=n.text;const i=n.text.slice(0,10),s=q0.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 h4(n,r)}}}xr.LiteralWeek=h4;class p4 extends P1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,vG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new p4(n,r)}}}xr.LiteralMonth=p4;class g4 extends P1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=px(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=q0.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 g4(n,r)}}}xr.LiteralQuarter=g4;class m4 extends P1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=px(e,!1);let r=n.text;const i=q0.DateTime.fromFormat(n.text,SG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new m4(n,r)}}}xr.LiteralYear=m4;var LC={};Object.defineProperty(LC,"__esModule",{value:!0}),LC.PartialCompare=void 0;const aTe=fr,lTe=pt;class cTe extends lTe.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,aTe.errorFor)("no value for partial compare")}}LC.PartialCompare=cTe;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.PickWhen=mp.Pick=void 0;const Wu=ne,H0=fr,Go=un,fTe=pt,xTe=Ve,TG=fn;function IC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class dTe extends fTe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i=["CASE"];let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Wu.maxExpressionType)(o,(0,Wu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Wu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Go.FT.typeEq(s,x,!0)){const h=Go.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,H0.errorFor)("pick when type")}s=IC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=IC(s,l),!Go.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Go.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,H0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Wu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Wu.mergeEvalSpaces)(u,l.evalSpace),value:(0,TG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,H0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,H0.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,H0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Go.FT.typeEq(a.when,Go.FT.boolT))return this.log(`when expression must be boolean, not '${Go.FT.inspect(a.when)}`),(0,H0.errorFor)("pick when type");if(r&&!Go.FT.typeEq(r,a.pick,!0)){const l=Go.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,H0.errorFor)("pick value type")}r=IC(r,a.pick),s=(0,Wu.maxExpressionType)(s,(0,Wu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Wu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Wu.maxExpressionType)(s,u.expressionType),o=(0,Wu.mergeEvalSpaces)(o,u.evalSpace),r=IC(r,u),Go.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,TG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Go.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,H0.errorFor)("pick value type mismatch"))}}mp.Pick=dTe;class hTe extends xTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}mp.PickWhen=hTe;var $C={};Object.defineProperty($C,"__esModule",{value:!0}),$C.Timeframe=void 0;const pTe=ne,gTe=Ve;class mTe extends gTe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,pTe.isTimestampUnit)(n)?n:"second"}}$C.Timeframe=mTe;var BC={};Object.defineProperty(BC,"__esModule",{value:!0}),BC.TopBy=void 0;const yTe=ne,RG=pt,ETe=Ve,ATe=fn;class STe extends ETe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof RG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof RG.ExpressionDef){const n=this.by.getExpression(e);return(0,yTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,ATe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}BC.TopBy=STe;var z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.ImportStatement=z0.ImportSelect=z0.ImportSourceName=void 0;const y4=Ve;class vTe extends y4.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}z0.ImportSourceName=vTe;class _Te extends y4.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}z0.ImportSelect=_Te;class CTe extends y4.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}'`)}}}z0.ImportStatement=CTe;var M1={};Object.defineProperty(M1,"__esModule",{value:!0}),M1.ExtendBlock=void 0;const bTe=Ve,TTe=bn;class RTe extends bTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=TTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}M1.ExtendBlock=RTe;var kC={};Object.defineProperty(kC,"__esModule",{value:!0}),kC.AnonymousQuery=void 0;const OTe=Ve,NTe=Gr;class DTe extends OTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=NTe.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)}}kC.AnonymousQuery=DTe;var Q0={};Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.View=void 0;const FTe=Ve;let wTe=class extends FTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Q0.View=wTe;var PC={};Object.defineProperty(PC,"__esModule",{value:!0}),PC.ViewArrow=void 0;const LTe=Yr,ITe=Q0;class $Te extends ITe.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 LTe.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()}}PC.ViewArrow=$Te;var MC={},U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.refine=void 0;const E4=Cu,A4=O0;function BTe(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,E4.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,E4.isQuerySegment)(o)&&(0,E4.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,A4.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,A4.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(A4.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}U1.refine=BTe,Object.defineProperty(MC,"__esModule",{value:!0}),MC.ViewRefine=void 0;const kTe=Vr,PTe=Ts,MTe=U1,UTe=Q0;class jTe extends UTe.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,PTe.getFinalStruct)(this.refinement,e.structDef(),i):kTe.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,MTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}MC.ViewRefine=jTe;var UC={};Object.defineProperty(UC,"__esModule",{value:!0}),UC.ReferenceView=void 0;const OG=ne,NG=Vr,qTe=Ts,HTe=Wr,zTe=U1,QTe=Q0;class GTe extends QTe.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:NG.ErrorFactory.structDef,outputStruct:NG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof HTe.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,OG.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,OG.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,qTe.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,zTe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}UC.ReferenceView=GTe;var jC={},j1={},qC={},q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.Index=void 0;const WTe=Ve,VTe=bn;let YTe=class extends WTe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=VTe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};q1.Index=YTe;var H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.SampleProperty=void 0;const XTe=Ve,DG=bn;class KTe extends XTe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=DG.LegalRefinementStage.Tail,this.forceQueryClass=DG.QueryClass.Index}sampling(){return this.sample}}H1.SampleProperty=KTe;var HC={};Object.defineProperty(HC,"__esModule",{value:!0}),HC.IndexFieldSpace=void 0;const FG=ne,S4=mt,JTe=Wr,ZTe=jo,eRe=S1,tRe=Yr;class nRe extends ZTe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof S4.FieldReference?super.pushFields(n):n instanceof S4.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 JTe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof eRe.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 tRe.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))continue;const l=S4.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,FG.isAtomicFieldType)(c.dataType)&&(0,FG.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)}}HC.IndexFieldSpace=nRe,Object.defineProperty(qC,"__esModule",{value:!0}),qC.IndexBuilder=void 0;const v4=ne,rRe=Vr,iRe=Uo,sRe=q1,oRe=k0,uRe=H1,aRe=HC;class lRe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new aRe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof iRe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof oRe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof sRe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof uRe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,v4.isIndexSegment)(e)&&!(0,v4.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),rRe.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,v4.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}qC.IndexBuilder=lRe;var zC={},z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.GroupBy=void 0;const cRe=bs,wG=bn;class fRe extends cRe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=wG.LegalRefinementStage.Single,this.forceQueryClass=wG.QueryClass.Grouping}}z1.GroupBy=fRe;var QC={};Object.defineProperty(QC,"__esModule",{value:!0}),QC.ProjectFieldSpace=void 0;const _4=ne,xRe=jo;class dRe extends xRe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,_4.expressionIsAggregate)(e.expressionType)?!1:(0,_4.expressionInvolvesAggregate)(e.expressionType)&&(0,_4.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}QC.ProjectFieldSpace=dRe;var G0={},gx={};Object.defineProperty(gx,"__esModule",{value:!0}),gx.Ordering=gx.OrderBy=void 0;const hRe=ne,LG=lx,IG=Ve,pRe=bn;class gRe extends IG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof LG.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 LG.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,hRe.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}}gx.OrderBy=gRe;class mRe extends IG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=pRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}gx.Ordering=mRe;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Top=void 0;const $G=ne,yRe=fn,ERe=lx,ARe=Ve,SRe=bn;let vRe=class extends ARe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=SRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof ERe.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,$G.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,$G.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,yRe.compressExpr)(r.value)}}}};Q1.Top=vRe,Object.defineProperty(G0,"__esModule",{value:!0}),G0.ReduceBuilder=G0.QuerySegmentBuilder=void 0;const BG=ne,_Re=Vr,CRe=Uo,bRe=k0,kG=gx,PG=Q1,TRe=jo,RRe=bs;class MG{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof RRe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof CRe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof PG.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 bRe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof kG.Ordering&&(this.order?e.log("Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof PG.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof kG.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}G0.QuerySegmentBuilder=MG;class ORe extends MG{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new TRe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,BG.isReduceSegment)(e)||(0,BG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),_Re.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}G0.ReduceBuilder=ORe,Object.defineProperty(zC,"__esModule",{value:!0}),zC.ProjectBuilder=void 0;const UG=ne,NRe=Vr,DRe=z1,FRe=QC,wRe=G0;class LRe extends wRe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new FRe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof DRe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,UG.isProjectSegment)(e)||(0,UG.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),NRe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}zC.ProjectBuilder=LRe;var GC={};Object.defineProperty(GC,"__esModule",{value:!0}),GC.PartialBuilder=void 0;const IRe=Cu,$Re=G0;class BRe extends $Re.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,IRe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}GC.PartialBuilder=BRe,Object.defineProperty(j1,"__esModule",{value:!0}),j1.QOpDesc=void 0;const kRe=qC,PRe=zC,MRe=G0,URe=Ve,jRe=Ts,qRe=Yr,mx=bn,HRe=GC;class zRe extends URe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=mx.QueryClass.Grouping:this.refineThis.type==="project"?n=mx.QueryClass.Project:this.refineThis.type==="index"&&(n=mx.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=mx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case mx.QueryClass.Grouping:return new MRe.ReduceBuilder(e,this.refineThis,n,r);case mx.QueryClass.Project:return new PRe.ProjectBuilder(e,this.refineThis,n,r);case mx.QueryClass.Index:return new kRe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new HRe.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 qRe.StaticSpace((0,jRe.opOutputStruct)(this,e.structDef(),i))}}}j1.QOpDesc=zRe,Object.defineProperty(jC,"__esModule",{value:!0}),jC.QOpDescView=void 0;const QRe=ne,GRe=Yr,jG=j1,WRe=Ts,C4=bn,VRe=Q0;class YRe extends VRe.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,QRe.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 jG.QOpDesc([]),o=new jG.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case C4.LegalRefinementStage.Head:s.push(u);break;case C4.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case C4.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,WRe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new GRe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}jC.QOpDescView=YRe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const XRe=ne,KRe=fn,JRe=un,ZRe=np,eOe=Ve,yx=Yn,tOe=Gr,nOe=Wr;class W0 extends eOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=tOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new b4(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,KRe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,XRe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,ZRe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof b4&&e.foundCircle)&&r.dataType!=="error"){const a=JRe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new qG(e,this))}}hn.AtomicFieldDeclaration=W0;class rOe extends W0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=rOe;class iOe extends W0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=iOe;class sOe extends W0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=sOe;class oOe extends W0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=oOe;class uOe extends W0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=uOe;class aOe extends W0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=aOe;class lOe extends W0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,yx.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=lOe;class b4{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")}}hn.DefSpace=b4;class qG extends nOe.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)}}hn.FieldDefinitionValue=qG;var WC={};Object.defineProperty(WC,"__esModule",{value:!0}),WC.Aggregate=void 0;const cOe=bs,HG=bn;let fOe=class extends cOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=HG.LegalRefinementStage.Single,this.forceQueryClass=HG.QueryClass.Grouping}};WC.Aggregate=fOe;var VC={};Object.defineProperty(VC,"__esModule",{value:!0}),VC.Calculate=void 0;const xOe=bs,dOe=bn;class hOe extends xOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=dOe.LegalRefinementStage.Single}}VC.Calculate=hOe;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.Dimensions=void 0;const pOe=N0;class gOe extends pOe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}G1.Dimensions=gOe;var W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.Measures=void 0;const mOe=N0;class yOe extends mOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}W1.Measures=yOe;var YC={};Object.defineProperty(YC,"__esModule",{value:!0}),YC.Nests=void 0;const EOe=bs,zG=bn;class AOe extends EOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=zG.LegalRefinementStage.Single,this.forceQueryClass=zG.QueryClass.Grouping}}YC.Nests=AOe;var XC={};Object.defineProperty(XC,"__esModule",{value:!0}),XC.ProjectStatement=void 0;const SOe=bs,QG=bn;class vOe extends SOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=QG.QueryClass.Project,this.queryRefinementStage=QG.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}XC.ProjectStatement=vOe;var V0={},hl={};Object.defineProperty(hl,"__esModule",{value:!0}),hl.findReferences=hl.deprecatedParseTableURI=hl.constructTableKey=void 0;const _Oe=nx,T4=$n;function R4(t){const e=(0,T4.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,T4.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class COe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=GG(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,T4.getId)(e.connectionId()),r=R4(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=R4(e.tableURI()),{connectionName:r,tablePath:i}=WG(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=R4(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function GG(t,e){return t===void 0?e:`${t}:${e}`}hl.constructTableKey=GG;function WG(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}hl.deprecatedParseTableURI=WG;function bOe(t,e,n){const r=new COe(t,e),i=r;return _Oe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}hl.findReferences=bOe,Object.defineProperty(V0,"__esModule",{value:!0}),V0.TableFunctionSource=V0.TableMethodSource=V0.TableSource=void 0;const VG=hl,TOe=Mo,YG=Vr;class O4 extends TOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return YG.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,VG.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),YG.ErrorFactory.structDef}}V0.TableSource=O4;class ROe extends O4{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}}}V0.TableMethodSource=ROe;class OOe extends O4{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,VG.deprecatedParseTableURI)(this.tableURI)}}V0.TableFunctionSource=OOe;var KC={};Object.defineProperty(KC,"__esModule",{value:!0}),KC.SQLString=void 0;const NOe=Ve,XG=Qu;class DOe extends NOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(FOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof XG.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}}KC.SQLString=DOe;function FOe(t){return t instanceof XG.SourceQueryElement}var JC={};Object.defineProperty(JC,"__esModule",{value:!0}),JC.SourceDesc=void 0;const wOe=Ve;class LOe extends wOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}JC.SourceDesc=LOe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.isSourceProperty=void 0;const IOe=Uo,$Oe=Zi,BOe=N0,kOe=Vh,POe=F0,MOe=Yh,UOe=Xh,jOe=Kh,qOe=D0;function HOe(t){return t instanceof IOe.Filter||t instanceof $Oe.Joins||t instanceof BOe.DeclareFields||t instanceof kOe.FieldListEdit||t instanceof POe.Renames||t instanceof MOe.PrimaryKey||t instanceof qOe.ObjectAnnotation||t instanceof UOe.Views||t instanceof jOe.TimezoneStatement}ZC.isSourceProperty=HOe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.isFieldCollectionMember=void 0;const zOe=hn,KG=mt;function QOe(t){return t instanceof KG.FieldReference||t instanceof KG.WildcardFieldReference||t instanceof zOe.AtomicFieldDeclaration}eb.isFieldCollectionMember=QOe;var tb={};Object.defineProperty(tb,"__esModule",{value:!0}),tb.isQueryElement=void 0;const GOe=Jh,WOe=Zh,VOe=h1,YOe=p1;function XOe(t){return t instanceof GOe.QueryArrow||t instanceof WOe.QueryRefine||t instanceof VOe.QueryReference||t instanceof YOe.QueryRaw}tb.isQueryElement=XOe;var JG={};Object.defineProperty(JG,"__esModule",{value:!0});var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.isQueryProperty=void 0;function KOe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}nb.isQueryProperty=KOe;var rb={};Object.defineProperty(rb,"__esModule",{value:!0}),rb.isQueryExtendProperty=void 0;const JOe=G1,ZOe=Zi,eNe=W1;function tNe(t){return t instanceof JOe.Dimensions||t instanceof eNe.Measures||t instanceof ZOe.Joins}rb.isQueryExtendProperty=tNe;var ib={};Object.defineProperty(ib,"__esModule",{value:!0}),ib.isFieldPropStatement=void 0;const nNe=$0,rNe=Uo,iNe=k0,sNe=ap;function oNe(t){return t instanceof rNe.Filter||t instanceof iNe.Limit||t instanceof sNe.PartitionBy||t instanceof nNe.FunctionOrdering}ib.isFieldPropStatement=oNe,function(t){var e=O&&O.__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=O&&O.__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(e1,t),n(Qh,t),n(Gh,t),n(Mo,t),n(a1,t),n(Qu,t),n(D_,t),n(F_,t),n($_,t),n(d1,t),n(P_,t),n(Vh,t),n(Yh,t),n(F0,t),n(Xh,t),n(Kh,t),n(M_,t),n(sp,t),n(q_,t),n($0,t),n(H_,t),n(fl,t),n(z_,t),n(up,t),n(Q_,t),n(G_,t),n(W_,t),n(m1,t),n(V_,t),n(Y_,t),n(K_,t),n(_1,t),n(A1,t),n(op,t),n(J_,t),n(Z_,t),n(tC,t),n(rC,t),n(iC,t),n(sC,t),n(oC,t),n(uC,t),n(aC,t),n(lC,t),n(cC,t),n(fC,t),n(xC,t),n(dC,t),n(hC,t),n(mC,t),n(xr,t),n(LC,t),n(ap,t),n(mp,t),n(I0,t),n($C,t),n(BC,t),n(C1,t),n(fn,t),n(z0,t),n(M1,t),n(u1,t),n(kC,t),n(Zh,t),n(Jh,t),n(Q0,t),n(PC,t),n(MC,t),n(UC,t),n(jC,t),n(hn,t),n(mt,t),n(WC,t),n(VC,t),n(N0,t),n(G1,t),n(M1,t),n(Uo,t),n(z1,t),n(q1,t),n(Zi,t),n(t1,t),n(k0,t),n(W1,t),n(e1,t),n(YC,t),n(gx,t),n(XC,t),n(j1,t),n(H1,t),n(Q1,t),n(w0,t),n(sx,t),n(g1,t),n(V0,t),n(KC,t),n(D0,t),n(L0,t),n(JC,t),n(ZC,t),n(pt,t),n(eb,t),n(lx,t),n(Ve,t),n(tb,t),n(JG,t),n(nb,t),n(rb,t),n(ib,t)}(p_);var sb={},uNe=O&&O.__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]}),aNe=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),lNe=O&&O.__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)&&uNe(e,t,n);return aNe(e,t),e};Object.defineProperty(sb,"__esModule",{value:!0}),sb.MalloyToAST=void 0;const ZG=vS,cNe=n1,re=lNe(p_),fNe=lr,xNe=p_,Hn=$n,N4=ne,dNe=al;class eW extends re.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class D4 extends re.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const hNe=["##! m4warnings=error"];class pNe extends cNe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of hNe){const s=dNe.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 D4||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 re.FieldName((0,Hn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new re.ModelEntryReference((0,Hn.getId)(e)),e.id())}defaultResult(){return new re.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 fNe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new re.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 re.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 re.Filter([n])}getPlainString(e){const n=(0,Hn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,Hn.getStringParts)(i))s instanceof ZG.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,Hn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Hn.getStringParts)(e))r instanceof ZG.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 re.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=>re.isDocStatementOrDocStatementList(r)&&r,"statement");return new re.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new re.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=new re.DefineSource((0,Hn.getId)(e.sourceNameDef()),n instanceof re.SourceQueryElement?n:void 0,!0,[]),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,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=>re.isSourceProperty(s)&&s,"source property"),i=new re.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new re.TableFunctionSource(n),e);return this.m4advisory(e,"`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainString(e.tablePath());return this.astAt(new re.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new re.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Hn.getShortString)(o));const u=new re.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 re.Join&&(n.push(s),s instanceof re.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof re.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new re.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 re.Join&&(r.push(s),s instanceof re.ExpressionJoin&&(s.joinType="one"));const i=new re.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 re.Join&&(r.push(s),s instanceof re.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new re.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new re.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new re.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,N4.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new re.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,Hn.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(),re.DimensionFieldDeclaration),r=new re.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),re.MeasureFieldDeclaration),r=new re.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(re.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new re.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),re.DeclareFieldDeclaration),r=new re.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 re.RenameField((0,Hn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new re.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new re.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 re.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 re.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new re.AcceptExceptFieldReference([this.getFieldName(r)]));return new re.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new re.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new re.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=>re.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new re.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 re.FieldReference||i instanceof re.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new re.Aggregate(this.getQueryItems(e.queryFieldList(),re.AggregateFieldDeclaration,re.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new re.GroupBy(this.getQueryItems(e.queryFieldList(),re.GroupByFieldDeclaration,re.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new re.Calculate(this.getQueryItems(e.queryFieldList(),re.CalculateFieldDeclaration,re.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(),re.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new re.ExprGranularTime(new re.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new re.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,re.ProjectFieldDeclaration,re.ProjectFieldReference));return this.astAt(new re.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,re.ProjectFieldReference):void 0,s=this.astAt(new re.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,Hn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new re.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,re.IndexFieldReference);return r.STAR()?this.astAt(new re.WildcardFieldReference(s),e):this.astAt(s,e)});return new re.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new re.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 re.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 re.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 re.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new re.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new re.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 re.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 re.Top(r,u)}const o=n.fieldExpr();o&&(i=new re.Top(r,this.getFieldExpr(o)))}return i||(i=new re.Top(r,void 0)),this.astAt(i,e)}visitSourceID(e){return this.astAt(new re.NamedSource((0,Hn.getId)(e)),e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new re.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Hn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof re.SourceQueryElement){const s=new re.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 re.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 re.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 re.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof re.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Hn.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 re.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,Hn.getId)(e.exploreQueryNameDef()),r=new re.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 re.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new re.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 re.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new re.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new re.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new re.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new re.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(re.isComparison(i))return this.astAt(new re.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new re.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new re.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new re.ExprNow}visitExprNumber(e){return new re.ExprNumber(e.text)}visitExprFieldPath(e){const n=new re.ExprIdReference(this.getFieldPath(e.fieldPath(),re.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new re.ExprNULL}visitExprExpr(e){return new re.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new re.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 re.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new re.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(re.isComparison(n))return new re.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new re.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new re.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,re.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 re.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 re.ExprIdReference(r),n);return s==="min"?new re.ExprMin(a):new re.ExprMax(a)}else{if(s==="avg")return new re.ExprAvg(u,i);if(s==="sum")return new re.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new re.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 re.ExprCountDistinct(r):new re.ExprCount,e);if(s==="min"){if(r)return new re.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new re.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new re.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new re.ExprAvg(r,i,o);if(s==="sum")return new re.ExprSum(r,i,o)}return new re.ExprNULL}visitExprApply(e){return new re.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new re.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new re.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyOrSQLType(e){const n=e.malloyType();if(n){const i=n.text;if((0,N4.isCastType)(i))return i;throw this.internalError(e,`unknown type '${i}'`)}const r=e.string();if(r)return{raw:this.getPlainString({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new re.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new re.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new re.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new re.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Hn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,re.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return re.ExprTimeExtract.extractor(i)?this.astAt(new re.ExprTimeExtract(i,r),e):this.astAt(new re.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,N4.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Hn.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"),re.ExprTimeExtract.extractor(l)?this.astAt(new re.ExprTimeExtract(l,s),e):this.astAt(new re.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new re.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 re.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new re.Pick(n,this.getFieldExpr(e._pickElse)):new re.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>re.isFieldPropStatement(r)&&r,"field property statement");return new re.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new re.PartitionBy(e.id().map(n=>this.astAt(new re.PartitionByFieldReference([this.astAt(new re.FieldName((0,Hn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,re.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,re.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,re.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,re.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,re.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,re.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,re.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new re.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 re.ImportSourceName((0,Hn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new re.ImportSelect((0,Hn.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 re.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new re.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new re.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new re.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 D4(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new D4(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new re.ObjectAnnotation(n)}visitSQID(e){const n=this.getModelEntryName(e);return this.astAt(new re.SQReference(n),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof re.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new eW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new re.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 re.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof re.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new re.ReferenceView(this.getFieldPath(e.fieldPath(),re.ViewOrScalarFieldReference))}visitSegOps(e){return new re.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new re.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new re.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new re.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof xNe.TableSource){const r=new re.SQSource(n);return this.astAt(r,e)}return new eW}visitSQSQL(e){const n=new re.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new re.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}sb.MalloyToAST=pNe;var ob={};Object.defineProperty(ob,"__esModule",{value:!0}),ob.MessageLog=void 0;class gNe{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}}ob.MessageLog=gNe;var ub={};Object.defineProperty(ub,"__esModule",{value:!0}),ub.Zone=void 0;class mNe{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})}}ub.Zone=mNe;var ab={};Object.defineProperty(ab,"__esModule",{value:!0}),ab.walkForDocumentSymbols=void 0;const yNe=nx,ENe=$n;class ANe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,ENe.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 SNe(t,e,n){const r=new ANe(t,e,[],[]),i=r;return yNe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}ab.walkForDocumentSymbols=SNe;var lb={};Object.defineProperty(lb,"__esModule",{value:!0}),lb.walkForDocumentCompletions=void 0;const vNe=nx,_Ne=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],CNe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],bNe=["source","explore","query","sql"];class TNe{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 _Ne)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 CNe)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 bNe)this.completions.push({type:"model_property",text:`${r}: `})}}}function RNe(t,e,n){const r=new TNe(t,[],n),i=r;return vNe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}lb.walkForDocumentCompletions=RNe;var cb={};Object.defineProperty(cb,"__esModule",{value:!0}),cb.walkForDocumentHelpContext=void 0;const ONe=cL;class NNe extends ONe.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 DNe(t,e){return new NNe(e).visit(t)}cb.walkForDocumentHelpContext=DNe;var fb={},V1={};Object.defineProperty(V1,"__esModule",{value:!0}),V1.locationContainsPosition=void 0;function FNe(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)}V1.locationContainsPosition=FNe,Object.defineProperty(fb,"__esModule",{value:!0}),fb.ReferenceList=void 0;const wNe=V1;class LNe{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,wNe.locationContainsPosition)(r.location,e))return r}}fb.ReferenceList=LNe;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.isNeedResponse=void 0;function INe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}xb.isNeedResponse=INe;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.walkForModelAnnotation=void 0;const $Ne=nx;class BNe{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 kNe(t,e,n){const r=new BNe(t,e,n),i=r;return $Ne.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}db.walkForModelAnnotation=kNe;var PNe=O&&O.__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]}),MNe=O&&O.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UNe=O&&O.__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)&&PNe(e,t,n);return MNe(e,t),e};Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.MalloyParserErrorHandler=Tu.MalloyTranslator=Tu.MalloyChildTranslator=Tu.MalloyTranslation=void 0;const tW=vS,jNe=Fv,qNe=F,nW=UNe(p_),HNe=sb,zNe=ob,QNe=hl,F4=ub,GNe=ab,WNe=lb,VNe=cb,YNe=fb,hb=xb,XNe=V1,rW=al,KNe=db;class JNe extends jNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class ZNe{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===""?`
|
|
1285
1285
|
`: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=tW.CharStreams.fromString(e),i=new JNe(r),s=new tW.CommonTokenStream(i),o=new qNe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new sW(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 eDe{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,QNe.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,hb.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,hb.isNeedResponse)(u))return u}return null}}class tDe{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 HNe.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 nW.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,hb.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class nDe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,GNe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class rDe{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,WNe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class iDe{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,VNe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class sDe{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,KNe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class oDe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=rW.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,hb.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof nW.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 w4{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new rW.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new ZNe,this.modelAnnotationStep=new sDe(this.parseStep),this.metadataStep=new nDe(this.parseStep),this.completionsStep=new rDe(this.parseStep),this.helpContextStep=new iDe(this.parseStep),this.importsAndTablesStep=new eDe(this.parseStep),this.astStep=new tDe(this.importsAndTablesStep),this.translateStep=new oDe(this.astStep),this.references=new YNe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new iW(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}
|
|
1286
1286
|
| ${l}`,u>0&&(i=i+`
|
|
1287
1287
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|