@malloydata/malloy 0.0.24-dev230302224355 → 0.0.24-dev230305212748

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.
@@ -26,8 +26,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhereContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasureContext = exports.DefExploreDimensionContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = exports.SourceIDContext = exports.SourceNameDefContext = exports.SQLSourceNameContext = exports.QuerySourceContext = exports.TableSourceContext = exports.NamedSourceContext = exports.ExploreSourceContext = exports.ExploreContext = exports.SourceDefinitionContext = exports.SourcePropertyListContext = exports.QueryNameContext = exports.ExploreQueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ExploreTableContext = exports.PipeElementContext = exports.FirstSegmentContext = exports.PipelineFromNameContext = exports.ArrowQueryContext = exports.ExploreArrowQueryContext = exports.QueryContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.ImportURLContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.NamedQueries_stubContext = exports.DefineQueryContext = exports.ExploreKeywordContext = exports.DefineSourceStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
28
28
  exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.ProjectStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldDefContext = exports.QueryFieldRefContext = exports.QueryFieldEntryContext = exports.DimensionDefContext = exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FilterByWhereContext = exports.FilterByShortcutContext = exports.FilteredByContext = exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.JoinListContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.MeasureDefContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.MeasureDefListContext = exports.DimensionDefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefExploreQueryContext = void 0;
29
- exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCastContext = exports.ExprLogicalContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprLogicalTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprSafeCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprMinusContext = exports.ExprLiteralContext = exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableNameContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = void 0;
30
- exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.NewMemberContext = exports.WildMemberContext = exports.NameMemberContext = exports.CollectionMemberContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = void 0;
29
+ exports.ExprPickContext = exports.ExprFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCastContext = exports.ExprLogicalContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprLogicalTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprSafeCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprMinusContext = exports.ExprLiteralContext = exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableNameContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = void 0;
30
+ exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.NewMemberContext = exports.WildMemberContext = exports.NameMemberContext = exports.CollectionMemberContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = void 0;
31
31
  const ATN_1 = require("antlr4ts/atn/ATN");
32
32
  const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer");
33
33
  const FailedPredicateException_1 = require("antlr4ts/FailedPredicateException");
@@ -3606,6 +3606,7 @@ class MalloyParser extends Parser_1.Parser {
3606
3606
  }
3607
3607
  break;
3608
3608
  case MalloyParser.LITERAL_TIMESTAMP:
3609
+ case MalloyParser.LITERAL_HOUR:
3609
3610
  case MalloyParser.LITERAL_DAY:
3610
3611
  case MalloyParser.LITERAL_QUARTER:
3611
3612
  case MalloyParser.LITERAL_MONTH:
@@ -3685,7 +3686,7 @@ class MalloyParser extends Parser_1.Parser {
3685
3686
  let _localctx = new DateLiteralContext(this._ctx, this.state);
3686
3687
  this.enterRule(_localctx, 158, MalloyParser.RULE_dateLiteral);
3687
3688
  try {
3688
- this.state = 746;
3689
+ this.state = 747;
3689
3690
  this._errHandler.sync(this);
3690
3691
  switch (this._input.LA(1)) {
3691
3692
  case MalloyParser.LITERAL_TIMESTAMP:
@@ -3696,43 +3697,51 @@ class MalloyParser extends Parser_1.Parser {
3696
3697
  this.match(MalloyParser.LITERAL_TIMESTAMP);
3697
3698
  }
3698
3699
  break;
3699
- case MalloyParser.LITERAL_DAY:
3700
- _localctx = new LiteralDayContext(_localctx);
3700
+ case MalloyParser.LITERAL_HOUR:
3701
+ _localctx = new LiteralHourContext(_localctx);
3701
3702
  this.enterOuterAlt(_localctx, 2);
3702
3703
  {
3703
3704
  this.state = 741;
3705
+ this.match(MalloyParser.LITERAL_HOUR);
3706
+ }
3707
+ break;
3708
+ case MalloyParser.LITERAL_DAY:
3709
+ _localctx = new LiteralDayContext(_localctx);
3710
+ this.enterOuterAlt(_localctx, 3);
3711
+ {
3712
+ this.state = 742;
3704
3713
  this.match(MalloyParser.LITERAL_DAY);
3705
3714
  }
3706
3715
  break;
3707
3716
  case MalloyParser.LITERAL_WEEK:
3708
3717
  _localctx = new LiteralWeekContext(_localctx);
3709
- this.enterOuterAlt(_localctx, 3);
3718
+ this.enterOuterAlt(_localctx, 4);
3710
3719
  {
3711
- this.state = 742;
3720
+ this.state = 743;
3712
3721
  this.match(MalloyParser.LITERAL_WEEK);
3713
3722
  }
3714
3723
  break;
3715
3724
  case MalloyParser.LITERAL_MONTH:
3716
3725
  _localctx = new LiteralMonthContext(_localctx);
3717
- this.enterOuterAlt(_localctx, 4);
3726
+ this.enterOuterAlt(_localctx, 5);
3718
3727
  {
3719
- this.state = 743;
3728
+ this.state = 744;
3720
3729
  this.match(MalloyParser.LITERAL_MONTH);
3721
3730
  }
3722
3731
  break;
3723
3732
  case MalloyParser.LITERAL_QUARTER:
3724
3733
  _localctx = new LiteralQuarterContext(_localctx);
3725
- this.enterOuterAlt(_localctx, 5);
3734
+ this.enterOuterAlt(_localctx, 6);
3726
3735
  {
3727
- this.state = 744;
3736
+ this.state = 745;
3728
3737
  this.match(MalloyParser.LITERAL_QUARTER);
3729
3738
  }
3730
3739
  break;
3731
3740
  case MalloyParser.LITERAL_YEAR:
3732
3741
  _localctx = new LiteralYearContext(_localctx);
3733
- this.enterOuterAlt(_localctx, 6);
3742
+ this.enterOuterAlt(_localctx, 7);
3734
3743
  {
3735
- this.state = 745;
3744
+ this.state = 746;
3736
3745
  this.match(MalloyParser.LITERAL_YEAR);
3737
3746
  }
3738
3747
  break;
@@ -3762,7 +3771,7 @@ class MalloyParser extends Parser_1.Parser {
3762
3771
  try {
3763
3772
  this.enterOuterAlt(_localctx, 1);
3764
3773
  {
3765
- this.state = 748;
3774
+ this.state = 749;
3766
3775
  this.match(MalloyParser.STRING_LITERAL);
3767
3776
  }
3768
3777
  }
@@ -3789,7 +3798,7 @@ class MalloyParser extends Parser_1.Parser {
3789
3798
  try {
3790
3799
  this.enterOuterAlt(_localctx, 1);
3791
3800
  {
3792
- this.state = 750;
3801
+ this.state = 751;
3793
3802
  _la = this._input.LA(1);
3794
3803
  if (!(_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL)) {
3795
3804
  this._errHandler.recoverInline(this);
@@ -3826,7 +3835,7 @@ class MalloyParser extends Parser_1.Parser {
3826
3835
  try {
3827
3836
  this.enterOuterAlt(_localctx, 1);
3828
3837
  {
3829
- this.state = 752;
3838
+ this.state = 753;
3830
3839
  _la = this._input.LA(1);
3831
3840
  if (!(((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & ((1 << (MalloyParser.DAY - 42)) | (1 << (MalloyParser.HOUR - 42)) | (1 << (MalloyParser.MINUTE - 42)) | (1 << (MalloyParser.MONTH - 42)) | (1 << (MalloyParser.QUARTER - 42)) | (1 << (MalloyParser.SECOND - 42)))) !== 0) || _la === MalloyParser.WEEK || _la === MalloyParser.YEAR)) {
3832
3841
  this._errHandler.recoverInline(this);
@@ -3863,7 +3872,7 @@ class MalloyParser extends Parser_1.Parser {
3863
3872
  try {
3864
3873
  this.enterOuterAlt(_localctx, 1);
3865
3874
  {
3866
- this.state = 754;
3875
+ this.state = 755;
3867
3876
  _la = this._input.LA(1);
3868
3877
  if (!(_la === MalloyParser.ALL || _la === MalloyParser.EXCLUDE)) {
3869
3878
  this._errHandler.recoverInline(this);
@@ -3908,7 +3917,7 @@ class MalloyParser extends Parser_1.Parser {
3908
3917
  let _alt;
3909
3918
  this.enterOuterAlt(_localctx, 1);
3910
3919
  {
3911
- this.state = 816;
3920
+ this.state = 817;
3912
3921
  this._errHandler.sync(this);
3913
3922
  switch (this.interpreter.adaptivePredict(this._input, 89, this._ctx)) {
3914
3923
  case 1:
@@ -3916,7 +3925,7 @@ class MalloyParser extends Parser_1.Parser {
3916
3925
  _localctx = new ExprFieldPathContext(_localctx);
3917
3926
  this._ctx = _localctx;
3918
3927
  _prevctx = _localctx;
3919
- this.state = 757;
3928
+ this.state = 758;
3920
3929
  this.fieldPath();
3921
3930
  }
3922
3931
  break;
@@ -3925,7 +3934,7 @@ class MalloyParser extends Parser_1.Parser {
3925
3934
  _localctx = new ExprLiteralContext(_localctx);
3926
3935
  this._ctx = _localctx;
3927
3936
  _prevctx = _localctx;
3928
- this.state = 758;
3937
+ this.state = 759;
3929
3938
  this.literal();
3930
3939
  }
3931
3940
  break;
@@ -3934,9 +3943,9 @@ class MalloyParser extends Parser_1.Parser {
3934
3943
  _localctx = new ExprMinusContext(_localctx);
3935
3944
  this._ctx = _localctx;
3936
3945
  _prevctx = _localctx;
3937
- this.state = 759;
3938
- this.match(MalloyParser.MINUS);
3939
3946
  this.state = 760;
3947
+ this.match(MalloyParser.MINUS);
3948
+ this.state = 761;
3940
3949
  this.fieldExpr(20);
3941
3950
  }
3942
3951
  break;
@@ -3945,9 +3954,9 @@ class MalloyParser extends Parser_1.Parser {
3945
3954
  _localctx = new ExprNotContext(_localctx);
3946
3955
  this._ctx = _localctx;
3947
3956
  _prevctx = _localctx;
3948
- this.state = 761;
3949
- this.match(MalloyParser.NOT);
3950
3957
  this.state = 762;
3958
+ this.match(MalloyParser.NOT);
3959
+ this.state = 763;
3951
3960
  this.fieldExpr(9);
3952
3961
  }
3953
3962
  break;
@@ -3956,17 +3965,17 @@ class MalloyParser extends Parser_1.Parser {
3956
3965
  _localctx = new ExprCastContext(_localctx);
3957
3966
  this._ctx = _localctx;
3958
3967
  _prevctx = _localctx;
3959
- this.state = 763;
3960
- this.match(MalloyParser.CAST);
3961
3968
  this.state = 764;
3962
- this.match(MalloyParser.OPAREN);
3969
+ this.match(MalloyParser.CAST);
3963
3970
  this.state = 765;
3964
- this.fieldExpr(0);
3971
+ this.match(MalloyParser.OPAREN);
3965
3972
  this.state = 766;
3966
- this.match(MalloyParser.AS);
3973
+ this.fieldExpr(0);
3967
3974
  this.state = 767;
3968
- this.malloyType();
3975
+ this.match(MalloyParser.AS);
3969
3976
  this.state = 768;
3977
+ this.malloyType();
3978
+ this.state = 769;
3970
3979
  this.match(MalloyParser.CPAREN);
3971
3980
  }
3972
3981
  break;
@@ -3975,15 +3984,15 @@ class MalloyParser extends Parser_1.Parser {
3975
3984
  _localctx = new ExprCountDisinctContext(_localctx);
3976
3985
  this._ctx = _localctx;
3977
3986
  _prevctx = _localctx;
3978
- this.state = 770;
3979
- this.match(MalloyParser.COUNT);
3980
3987
  this.state = 771;
3981
- this.match(MalloyParser.OPAREN);
3988
+ this.match(MalloyParser.COUNT);
3982
3989
  this.state = 772;
3983
- this.match(MalloyParser.DISTINCT);
3990
+ this.match(MalloyParser.OPAREN);
3984
3991
  this.state = 773;
3985
- this.fieldExpr(0);
3992
+ this.match(MalloyParser.DISTINCT);
3986
3993
  this.state = 774;
3994
+ this.fieldExpr(0);
3995
+ this.state = 775;
3987
3996
  this.match(MalloyParser.CPAREN);
3988
3997
  }
3989
3998
  break;
@@ -3992,22 +4001,22 @@ class MalloyParser extends Parser_1.Parser {
3992
4001
  _localctx = new ExprAggregateContext(_localctx);
3993
4002
  this._ctx = _localctx;
3994
4003
  _prevctx = _localctx;
3995
- this.state = 779;
4004
+ this.state = 780;
3996
4005
  this._errHandler.sync(this);
3997
4006
  _la = this._input.LA(1);
3998
4007
  if (_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL) {
3999
4008
  {
4000
- this.state = 776;
4001
- this.fieldPath();
4002
4009
  this.state = 777;
4010
+ this.fieldPath();
4011
+ this.state = 778;
4003
4012
  this.match(MalloyParser.DOT);
4004
4013
  }
4005
4014
  }
4006
- this.state = 781;
4007
- this.aggregate();
4008
4015
  this.state = 782;
4016
+ this.aggregate();
4017
+ this.state = 783;
4009
4018
  this.match(MalloyParser.OPAREN);
4010
- this.state = 785;
4019
+ this.state = 786;
4011
4020
  this._errHandler.sync(this);
4012
4021
  switch (this._input.LA(1)) {
4013
4022
  case MalloyParser.ALL:
@@ -4037,6 +4046,7 @@ class MalloyParser extends Parser_1.Parser {
4037
4046
  case MalloyParser.OPAREN:
4038
4047
  case MalloyParser.MINUS:
4039
4048
  case MalloyParser.LITERAL_TIMESTAMP:
4049
+ case MalloyParser.LITERAL_HOUR:
4040
4050
  case MalloyParser.LITERAL_DAY:
4041
4051
  case MalloyParser.LITERAL_QUARTER:
4042
4052
  case MalloyParser.LITERAL_MONTH:
@@ -4047,13 +4057,13 @@ class MalloyParser extends Parser_1.Parser {
4047
4057
  case MalloyParser.NUMERIC_LITERAL:
4048
4058
  case MalloyParser.OBJECT_NAME_LITERAL:
4049
4059
  {
4050
- this.state = 783;
4060
+ this.state = 784;
4051
4061
  this.fieldExpr(0);
4052
4062
  }
4053
4063
  break;
4054
4064
  case MalloyParser.STAR:
4055
4065
  {
4056
- this.state = 784;
4066
+ this.state = 785;
4057
4067
  this.match(MalloyParser.STAR);
4058
4068
  }
4059
4069
  break;
@@ -4062,7 +4072,7 @@ class MalloyParser extends Parser_1.Parser {
4062
4072
  default:
4063
4073
  break;
4064
4074
  }
4065
- this.state = 787;
4075
+ this.state = 788;
4066
4076
  this.match(MalloyParser.CPAREN);
4067
4077
  }
4068
4078
  break;
@@ -4071,11 +4081,11 @@ class MalloyParser extends Parser_1.Parser {
4071
4081
  _localctx = new ExprExprContext(_localctx);
4072
4082
  this._ctx = _localctx;
4073
4083
  _prevctx = _localctx;
4074
- this.state = 789;
4075
- this.match(MalloyParser.OPAREN);
4076
4084
  this.state = 790;
4077
- this.partialAllowedFieldExpr();
4085
+ this.match(MalloyParser.OPAREN);
4078
4086
  this.state = 791;
4087
+ this.partialAllowedFieldExpr();
4088
+ this.state = 792;
4079
4089
  this.match(MalloyParser.CPAREN);
4080
4090
  }
4081
4091
  break;
@@ -4084,13 +4094,13 @@ class MalloyParser extends Parser_1.Parser {
4084
4094
  _localctx = new ExprFuncContext(_localctx);
4085
4095
  this._ctx = _localctx;
4086
4096
  _prevctx = _localctx;
4087
- this.state = 795;
4097
+ this.state = 796;
4088
4098
  this._errHandler.sync(this);
4089
4099
  switch (this._input.LA(1)) {
4090
4100
  case MalloyParser.IDENTIFIER:
4091
4101
  case MalloyParser.OBJECT_NAME_LITERAL:
4092
4102
  {
4093
- this.state = 793;
4103
+ this.state = 794;
4094
4104
  this.id();
4095
4105
  }
4096
4106
  break;
@@ -4103,27 +4113,27 @@ class MalloyParser extends Parser_1.Parser {
4103
4113
  case MalloyParser.WEEK:
4104
4114
  case MalloyParser.YEAR:
4105
4115
  {
4106
- this.state = 794;
4116
+ this.state = 795;
4107
4117
  this.timeframe();
4108
4118
  }
4109
4119
  break;
4110
4120
  default:
4111
4121
  throw new NoViableAltException_1.NoViableAltException(this);
4112
4122
  }
4113
- this.state = 797;
4123
+ this.state = 798;
4114
4124
  this.match(MalloyParser.OPAREN);
4115
4125
  {
4116
- this.state = 799;
4126
+ this.state = 800;
4117
4127
  this._errHandler.sync(this);
4118
4128
  _la = this._input.LA(1);
4119
- if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (MalloyParser.ALL - 30)) | (1 << (MalloyParser.AVG - 30)) | (1 << (MalloyParser.CAST - 30)) | (1 << (MalloyParser.COUNT - 30)) | (1 << (MalloyParser.DAY - 30)) | (1 << (MalloyParser.EXCLUDE - 30)) | (1 << (MalloyParser.FALSE - 30)) | (1 << (MalloyParser.HOUR - 30)) | (1 << (MalloyParser.MAX - 30)) | (1 << (MalloyParser.MIN - 30)) | (1 << (MalloyParser.MINUTE - 30)) | (1 << (MalloyParser.MONTH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (MalloyParser.NOT - 62)) | (1 << (MalloyParser.NOW - 62)) | (1 << (MalloyParser.NULL - 62)) | (1 << (MalloyParser.PICK - 62)) | (1 << (MalloyParser.QUARTER - 62)) | (1 << (MalloyParser.SECOND - 62)) | (1 << (MalloyParser.SUM - 62)) | (1 << (MalloyParser.TRUE - 62)) | (1 << (MalloyParser.WEEK - 62)) | (1 << (MalloyParser.YEAR - 62)) | (1 << (MalloyParser.HACKY_REGEX - 62)) | (1 << (MalloyParser.STRING_LITERAL - 62)) | (1 << (MalloyParser.OPAREN - 62)))) !== 0) || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.MINUS - 109)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 109)) | (1 << (MalloyParser.LITERAL_DAY - 109)) | (1 << (MalloyParser.LITERAL_QUARTER - 109)) | (1 << (MalloyParser.LITERAL_MONTH - 109)) | (1 << (MalloyParser.LITERAL_WEEK - 109)) | (1 << (MalloyParser.LITERAL_YEAR - 109)) | (1 << (MalloyParser.IDENTIFIER - 109)) | (1 << (MalloyParser.INTEGER_LITERAL - 109)) | (1 << (MalloyParser.NUMERIC_LITERAL - 109)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 109)))) !== 0)) {
4129
+ if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (MalloyParser.ALL - 30)) | (1 << (MalloyParser.AVG - 30)) | (1 << (MalloyParser.CAST - 30)) | (1 << (MalloyParser.COUNT - 30)) | (1 << (MalloyParser.DAY - 30)) | (1 << (MalloyParser.EXCLUDE - 30)) | (1 << (MalloyParser.FALSE - 30)) | (1 << (MalloyParser.HOUR - 30)) | (1 << (MalloyParser.MAX - 30)) | (1 << (MalloyParser.MIN - 30)) | (1 << (MalloyParser.MINUTE - 30)) | (1 << (MalloyParser.MONTH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (MalloyParser.NOT - 62)) | (1 << (MalloyParser.NOW - 62)) | (1 << (MalloyParser.NULL - 62)) | (1 << (MalloyParser.PICK - 62)) | (1 << (MalloyParser.QUARTER - 62)) | (1 << (MalloyParser.SECOND - 62)) | (1 << (MalloyParser.SUM - 62)) | (1 << (MalloyParser.TRUE - 62)) | (1 << (MalloyParser.WEEK - 62)) | (1 << (MalloyParser.YEAR - 62)) | (1 << (MalloyParser.HACKY_REGEX - 62)) | (1 << (MalloyParser.STRING_LITERAL - 62)) | (1 << (MalloyParser.OPAREN - 62)))) !== 0) || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.MINUS - 109)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 109)) | (1 << (MalloyParser.LITERAL_HOUR - 109)) | (1 << (MalloyParser.LITERAL_DAY - 109)) | (1 << (MalloyParser.LITERAL_QUARTER - 109)) | (1 << (MalloyParser.LITERAL_MONTH - 109)) | (1 << (MalloyParser.LITERAL_WEEK - 109)) | (1 << (MalloyParser.LITERAL_YEAR - 109)) | (1 << (MalloyParser.IDENTIFIER - 109)) | (1 << (MalloyParser.INTEGER_LITERAL - 109)) | (1 << (MalloyParser.NUMERIC_LITERAL - 109)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 109)))) !== 0)) {
4120
4130
  {
4121
- this.state = 798;
4131
+ this.state = 799;
4122
4132
  this.argumentList();
4123
4133
  }
4124
4134
  }
4125
4135
  }
4126
- this.state = 801;
4136
+ this.state = 802;
4127
4137
  this.match(MalloyParser.CPAREN);
4128
4138
  }
4129
4139
  break;
@@ -4132,7 +4142,7 @@ class MalloyParser extends Parser_1.Parser {
4132
4142
  _localctx = new ExprPickContext(_localctx);
4133
4143
  this._ctx = _localctx;
4134
4144
  _prevctx = _localctx;
4135
- this.state = 803;
4145
+ this.state = 804;
4136
4146
  this.pickStatement();
4137
4147
  }
4138
4148
  break;
@@ -4141,35 +4151,35 @@ class MalloyParser extends Parser_1.Parser {
4141
4151
  _localctx = new ExprUngroupContext(_localctx);
4142
4152
  this._ctx = _localctx;
4143
4153
  _prevctx = _localctx;
4144
- this.state = 804;
4145
- this.ungroup();
4146
4154
  this.state = 805;
4147
- this.match(MalloyParser.OPAREN);
4155
+ this.ungroup();
4148
4156
  this.state = 806;
4157
+ this.match(MalloyParser.OPAREN);
4158
+ this.state = 807;
4149
4159
  this.fieldExpr(0);
4150
- this.state = 811;
4160
+ this.state = 812;
4151
4161
  this._errHandler.sync(this);
4152
4162
  _la = this._input.LA(1);
4153
4163
  while (_la === MalloyParser.COMMA) {
4154
4164
  {
4155
4165
  {
4156
- this.state = 807;
4157
- this.match(MalloyParser.COMMA);
4158
4166
  this.state = 808;
4167
+ this.match(MalloyParser.COMMA);
4168
+ this.state = 809;
4159
4169
  this.fieldName();
4160
4170
  }
4161
4171
  }
4162
- this.state = 813;
4172
+ this.state = 814;
4163
4173
  this._errHandler.sync(this);
4164
4174
  _la = this._input.LA(1);
4165
4175
  }
4166
- this.state = 814;
4176
+ this.state = 815;
4167
4177
  this.match(MalloyParser.CPAREN);
4168
4178
  }
4169
4179
  break;
4170
4180
  }
4171
4181
  this._ctx._stop = this._input.tryLT(-1);
4172
- this.state = 860;
4182
+ this.state = 861;
4173
4183
  this._errHandler.sync(this);
4174
4184
  _alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
4175
4185
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
@@ -4179,18 +4189,18 @@ class MalloyParser extends Parser_1.Parser {
4179
4189
  }
4180
4190
  _prevctx = _localctx;
4181
4191
  {
4182
- this.state = 858;
4192
+ this.state = 859;
4183
4193
  this._errHandler.sync(this);
4184
4194
  switch (this.interpreter.adaptivePredict(this._input, 90, this._ctx)) {
4185
4195
  case 1:
4186
4196
  {
4187
4197
  _localctx = new ExprMulDivContext(new FieldExprContext(_parentctx, _parentState));
4188
4198
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4189
- this.state = 818;
4199
+ this.state = 819;
4190
4200
  if (!(this.precpred(this._ctx, 16))) {
4191
4201
  throw this.createFailedPredicateException("this.precpred(this._ctx, 16)");
4192
4202
  }
4193
- this.state = 819;
4203
+ this.state = 820;
4194
4204
  _la = this._input.LA(1);
4195
4205
  if (!(((((_la - 110)) & ~0x1F) === 0 && ((1 << (_la - 110)) & ((1 << (MalloyParser.STAR - 110)) | (1 << (MalloyParser.SLASH - 110)) | (1 << (MalloyParser.PERCENT - 110)))) !== 0))) {
4196
4206
  this._errHandler.recoverInline(this);
@@ -4202,7 +4212,7 @@ class MalloyParser extends Parser_1.Parser {
4202
4212
  this._errHandler.reportMatch(this);
4203
4213
  this.consume();
4204
4214
  }
4205
- this.state = 820;
4215
+ this.state = 821;
4206
4216
  this.fieldExpr(17);
4207
4217
  }
4208
4218
  break;
@@ -4210,11 +4220,11 @@ class MalloyParser extends Parser_1.Parser {
4210
4220
  {
4211
4221
  _localctx = new ExprAddSubContext(new FieldExprContext(_parentctx, _parentState));
4212
4222
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4213
- this.state = 821;
4223
+ this.state = 822;
4214
4224
  if (!(this.precpred(this._ctx, 15))) {
4215
4225
  throw this.createFailedPredicateException("this.precpred(this._ctx, 15)");
4216
4226
  }
4217
- this.state = 822;
4227
+ this.state = 823;
4218
4228
  _la = this._input.LA(1);
4219
4229
  if (!(_la === MalloyParser.PLUS || _la === MalloyParser.MINUS)) {
4220
4230
  this._errHandler.recoverInline(this);
@@ -4226,7 +4236,7 @@ class MalloyParser extends Parser_1.Parser {
4226
4236
  this._errHandler.reportMatch(this);
4227
4237
  this.consume();
4228
4238
  }
4229
- this.state = 823;
4239
+ this.state = 824;
4230
4240
  this.fieldExpr(16);
4231
4241
  }
4232
4242
  break;
@@ -4234,13 +4244,13 @@ class MalloyParser extends Parser_1.Parser {
4234
4244
  {
4235
4245
  _localctx = new ExprRangeContext(new FieldExprContext(_parentctx, _parentState));
4236
4246
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4237
- this.state = 824;
4247
+ this.state = 825;
4238
4248
  if (!(this.precpred(this._ctx, 14))) {
4239
4249
  throw this.createFailedPredicateException("this.precpred(this._ctx, 14)");
4240
4250
  }
4241
- this.state = 825;
4242
- this.match(MalloyParser.TO);
4243
4251
  this.state = 826;
4252
+ this.match(MalloyParser.TO);
4253
+ this.state = 827;
4244
4254
  this.fieldExpr(15);
4245
4255
  }
4246
4256
  break;
@@ -4248,13 +4258,13 @@ class MalloyParser extends Parser_1.Parser {
4248
4258
  {
4249
4259
  _localctx = new ExprCompareContext(new FieldExprContext(_parentctx, _parentState));
4250
4260
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4251
- this.state = 827;
4261
+ this.state = 828;
4252
4262
  if (!(this.precpred(this._ctx, 11))) {
4253
4263
  throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
4254
4264
  }
4255
- this.state = 828;
4256
- this.compareOp();
4257
4265
  this.state = 829;
4266
+ this.compareOp();
4267
+ this.state = 830;
4258
4268
  this.fieldExpr(12);
4259
4269
  }
4260
4270
  break;
@@ -4262,11 +4272,11 @@ class MalloyParser extends Parser_1.Parser {
4262
4272
  {
4263
4273
  _localctx = new ExprLogicalContext(new FieldExprContext(_parentctx, _parentState));
4264
4274
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4265
- this.state = 831;
4275
+ this.state = 832;
4266
4276
  if (!(this.precpred(this._ctx, 8))) {
4267
4277
  throw this.createFailedPredicateException("this.precpred(this._ctx, 8)");
4268
4278
  }
4269
- this.state = 832;
4279
+ this.state = 833;
4270
4280
  _la = this._input.LA(1);
4271
4281
  if (!(_la === MalloyParser.AND || _la === MalloyParser.OR)) {
4272
4282
  this._errHandler.recoverInline(this);
@@ -4278,7 +4288,7 @@ class MalloyParser extends Parser_1.Parser {
4278
4288
  this._errHandler.reportMatch(this);
4279
4289
  this.consume();
4280
4290
  }
4281
- this.state = 833;
4291
+ this.state = 834;
4282
4292
  this.fieldExpr(9);
4283
4293
  }
4284
4294
  break;
@@ -4286,15 +4296,15 @@ class MalloyParser extends Parser_1.Parser {
4286
4296
  {
4287
4297
  _localctx = new ExprFilterContext(new FieldExprContext(_parentctx, _parentState));
4288
4298
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4289
- this.state = 834;
4299
+ this.state = 835;
4290
4300
  if (!(this.precpred(this._ctx, 22))) {
4291
4301
  throw this.createFailedPredicateException("this.precpred(this._ctx, 22)");
4292
4302
  }
4293
- this.state = 835;
4294
- this.match(MalloyParser.OCURLY);
4295
4303
  this.state = 836;
4296
- this.filteredBy();
4304
+ this.match(MalloyParser.OCURLY);
4297
4305
  this.state = 837;
4306
+ this.filteredBy();
4307
+ this.state = 838;
4298
4308
  this.match(MalloyParser.CCURLY);
4299
4309
  }
4300
4310
  break;
@@ -4302,11 +4312,11 @@ class MalloyParser extends Parser_1.Parser {
4302
4312
  {
4303
4313
  _localctx = new ExprDurationContext(new FieldExprContext(_parentctx, _parentState));
4304
4314
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4305
- this.state = 839;
4315
+ this.state = 840;
4306
4316
  if (!(this.precpred(this._ctx, 19))) {
4307
4317
  throw this.createFailedPredicateException("this.precpred(this._ctx, 19)");
4308
4318
  }
4309
- this.state = 840;
4319
+ this.state = 841;
4310
4320
  this.timeframe();
4311
4321
  }
4312
4322
  break;
@@ -4314,13 +4324,13 @@ class MalloyParser extends Parser_1.Parser {
4314
4324
  {
4315
4325
  _localctx = new ExprTimeTruncContext(new FieldExprContext(_parentctx, _parentState));
4316
4326
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4317
- this.state = 841;
4327
+ this.state = 842;
4318
4328
  if (!(this.precpred(this._ctx, 18))) {
4319
4329
  throw this.createFailedPredicateException("this.precpred(this._ctx, 18)");
4320
4330
  }
4321
- this.state = 842;
4322
- this.match(MalloyParser.DOT);
4323
4331
  this.state = 843;
4332
+ this.match(MalloyParser.DOT);
4333
+ this.state = 844;
4324
4334
  this.timeframe();
4325
4335
  }
4326
4336
  break;
@@ -4328,13 +4338,13 @@ class MalloyParser extends Parser_1.Parser {
4328
4338
  {
4329
4339
  _localctx = new ExprSafeCastContext(new FieldExprContext(_parentctx, _parentState));
4330
4340
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4331
- this.state = 844;
4341
+ this.state = 845;
4332
4342
  if (!(this.precpred(this._ctx, 17))) {
4333
4343
  throw this.createFailedPredicateException("this.precpred(this._ctx, 17)");
4334
4344
  }
4335
- this.state = 845;
4336
- this.match(MalloyParser.DOUBLECOLON);
4337
4345
  this.state = 846;
4346
+ this.match(MalloyParser.DOUBLECOLON);
4347
+ this.state = 847;
4338
4348
  this.malloyType();
4339
4349
  }
4340
4350
  break;
@@ -4343,15 +4353,15 @@ class MalloyParser extends Parser_1.Parser {
4343
4353
  _localctx = new ExprForRangeContext(new FieldExprContext(_parentctx, _parentState));
4344
4354
  _localctx._startAt = _prevctx;
4345
4355
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4346
- this.state = 847;
4356
+ this.state = 848;
4347
4357
  if (!(this.precpred(this._ctx, 13))) {
4348
4358
  throw this.createFailedPredicateException("this.precpred(this._ctx, 13)");
4349
4359
  }
4350
- this.state = 848;
4351
- this.match(MalloyParser.FOR);
4352
4360
  this.state = 849;
4353
- _localctx._duration = this.fieldExpr(0);
4361
+ this.match(MalloyParser.FOR);
4354
4362
  this.state = 850;
4363
+ _localctx._duration = this.fieldExpr(0);
4364
+ this.state = 851;
4355
4365
  this.timeframe();
4356
4366
  }
4357
4367
  break;
@@ -4359,11 +4369,11 @@ class MalloyParser extends Parser_1.Parser {
4359
4369
  {
4360
4370
  _localctx = new ExprLogicalTreeContext(new FieldExprContext(_parentctx, _parentState));
4361
4371
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4362
- this.state = 852;
4372
+ this.state = 853;
4363
4373
  if (!(this.precpred(this._ctx, 12))) {
4364
4374
  throw this.createFailedPredicateException("this.precpred(this._ctx, 12)");
4365
4375
  }
4366
- this.state = 853;
4376
+ this.state = 854;
4367
4377
  _la = this._input.LA(1);
4368
4378
  if (!(_la === MalloyParser.AMPER || _la === MalloyParser.BAR)) {
4369
4379
  this._errHandler.recoverInline(this);
@@ -4375,7 +4385,7 @@ class MalloyParser extends Parser_1.Parser {
4375
4385
  this._errHandler.reportMatch(this);
4376
4386
  this.consume();
4377
4387
  }
4378
- this.state = 854;
4388
+ this.state = 855;
4379
4389
  this.partialAllowedFieldExpr();
4380
4390
  }
4381
4391
  break;
@@ -4383,11 +4393,11 @@ class MalloyParser extends Parser_1.Parser {
4383
4393
  {
4384
4394
  _localctx = new ExprApplyContext(new FieldExprContext(_parentctx, _parentState));
4385
4395
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
4386
- this.state = 855;
4396
+ this.state = 856;
4387
4397
  if (!(this.precpred(this._ctx, 10))) {
4388
4398
  throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
4389
4399
  }
4390
- this.state = 856;
4400
+ this.state = 857;
4391
4401
  _la = this._input.LA(1);
4392
4402
  if (!(_la === MalloyParser.QMARK || _la === MalloyParser.COLON)) {
4393
4403
  this._errHandler.recoverInline(this);
@@ -4399,14 +4409,14 @@ class MalloyParser extends Parser_1.Parser {
4399
4409
  this._errHandler.reportMatch(this);
4400
4410
  this.consume();
4401
4411
  }
4402
- this.state = 857;
4412
+ this.state = 858;
4403
4413
  this.partialAllowedFieldExpr();
4404
4414
  }
4405
4415
  break;
4406
4416
  }
4407
4417
  }
4408
4418
  }
4409
- this.state = 862;
4419
+ this.state = 863;
4410
4420
  this._errHandler.sync(this);
4411
4421
  _alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
4412
4422
  }
@@ -4435,16 +4445,16 @@ class MalloyParser extends Parser_1.Parser {
4435
4445
  try {
4436
4446
  this.enterOuterAlt(_localctx, 1);
4437
4447
  {
4438
- this.state = 864;
4448
+ this.state = 865;
4439
4449
  this._errHandler.sync(this);
4440
4450
  _la = this._input.LA(1);
4441
4451
  if (((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & ((1 << (MalloyParser.LT - 102)) | (1 << (MalloyParser.GT - 102)) | (1 << (MalloyParser.EQ - 102)) | (1 << (MalloyParser.NE - 102)) | (1 << (MalloyParser.LTE - 102)) | (1 << (MalloyParser.GTE - 102)) | (1 << (MalloyParser.NOT_MATCH - 102)) | (1 << (MalloyParser.MATCH - 102)))) !== 0)) {
4442
4452
  {
4443
- this.state = 863;
4453
+ this.state = 864;
4444
4454
  this.compareOp();
4445
4455
  }
4446
4456
  }
4447
- this.state = 866;
4457
+ this.state = 867;
4448
4458
  this.fieldExpr(0);
4449
4459
  }
4450
4460
  }
@@ -4471,7 +4481,7 @@ class MalloyParser extends Parser_1.Parser {
4471
4481
  let _alt;
4472
4482
  this.enterOuterAlt(_localctx, 1);
4473
4483
  {
4474
- this.state = 869;
4484
+ this.state = 870;
4475
4485
  this._errHandler.sync(this);
4476
4486
  _alt = 1;
4477
4487
  do {
@@ -4479,7 +4489,7 @@ class MalloyParser extends Parser_1.Parser {
4479
4489
  case 1:
4480
4490
  {
4481
4491
  {
4482
- this.state = 868;
4492
+ this.state = 869;
4483
4493
  this.pick();
4484
4494
  }
4485
4495
  }
@@ -4487,18 +4497,18 @@ class MalloyParser extends Parser_1.Parser {
4487
4497
  default:
4488
4498
  throw new NoViableAltException_1.NoViableAltException(this);
4489
4499
  }
4490
- this.state = 871;
4500
+ this.state = 872;
4491
4501
  this._errHandler.sync(this);
4492
4502
  _alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
4493
4503
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
4494
- this.state = 875;
4504
+ this.state = 876;
4495
4505
  this._errHandler.sync(this);
4496
4506
  switch (this.interpreter.adaptivePredict(this._input, 94, this._ctx)) {
4497
4507
  case 1:
4498
4508
  {
4499
- this.state = 873;
4500
- this.match(MalloyParser.ELSE);
4501
4509
  this.state = 874;
4510
+ this.match(MalloyParser.ELSE);
4511
+ this.state = 875;
4502
4512
  _localctx._pickElse = this.fieldExpr(0);
4503
4513
  }
4504
4514
  break;
@@ -4528,20 +4538,20 @@ class MalloyParser extends Parser_1.Parser {
4528
4538
  try {
4529
4539
  this.enterOuterAlt(_localctx, 1);
4530
4540
  {
4531
- this.state = 877;
4541
+ this.state = 878;
4532
4542
  this.match(MalloyParser.PICK);
4533
- this.state = 879;
4543
+ this.state = 880;
4534
4544
  this._errHandler.sync(this);
4535
4545
  _la = this._input.LA(1);
4536
- if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (MalloyParser.ALL - 30)) | (1 << (MalloyParser.AVG - 30)) | (1 << (MalloyParser.CAST - 30)) | (1 << (MalloyParser.COUNT - 30)) | (1 << (MalloyParser.DAY - 30)) | (1 << (MalloyParser.EXCLUDE - 30)) | (1 << (MalloyParser.FALSE - 30)) | (1 << (MalloyParser.HOUR - 30)) | (1 << (MalloyParser.MAX - 30)) | (1 << (MalloyParser.MIN - 30)) | (1 << (MalloyParser.MINUTE - 30)) | (1 << (MalloyParser.MONTH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (MalloyParser.NOT - 62)) | (1 << (MalloyParser.NOW - 62)) | (1 << (MalloyParser.NULL - 62)) | (1 << (MalloyParser.PICK - 62)) | (1 << (MalloyParser.QUARTER - 62)) | (1 << (MalloyParser.SECOND - 62)) | (1 << (MalloyParser.SUM - 62)) | (1 << (MalloyParser.TRUE - 62)) | (1 << (MalloyParser.WEEK - 62)) | (1 << (MalloyParser.YEAR - 62)) | (1 << (MalloyParser.HACKY_REGEX - 62)) | (1 << (MalloyParser.STRING_LITERAL - 62)) | (1 << (MalloyParser.OPAREN - 62)))) !== 0) || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.MINUS - 109)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 109)) | (1 << (MalloyParser.LITERAL_DAY - 109)) | (1 << (MalloyParser.LITERAL_QUARTER - 109)) | (1 << (MalloyParser.LITERAL_MONTH - 109)) | (1 << (MalloyParser.LITERAL_WEEK - 109)) | (1 << (MalloyParser.LITERAL_YEAR - 109)) | (1 << (MalloyParser.IDENTIFIER - 109)) | (1 << (MalloyParser.INTEGER_LITERAL - 109)) | (1 << (MalloyParser.NUMERIC_LITERAL - 109)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 109)))) !== 0)) {
4546
+ if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (MalloyParser.ALL - 30)) | (1 << (MalloyParser.AVG - 30)) | (1 << (MalloyParser.CAST - 30)) | (1 << (MalloyParser.COUNT - 30)) | (1 << (MalloyParser.DAY - 30)) | (1 << (MalloyParser.EXCLUDE - 30)) | (1 << (MalloyParser.FALSE - 30)) | (1 << (MalloyParser.HOUR - 30)) | (1 << (MalloyParser.MAX - 30)) | (1 << (MalloyParser.MIN - 30)) | (1 << (MalloyParser.MINUTE - 30)) | (1 << (MalloyParser.MONTH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (MalloyParser.NOT - 62)) | (1 << (MalloyParser.NOW - 62)) | (1 << (MalloyParser.NULL - 62)) | (1 << (MalloyParser.PICK - 62)) | (1 << (MalloyParser.QUARTER - 62)) | (1 << (MalloyParser.SECOND - 62)) | (1 << (MalloyParser.SUM - 62)) | (1 << (MalloyParser.TRUE - 62)) | (1 << (MalloyParser.WEEK - 62)) | (1 << (MalloyParser.YEAR - 62)) | (1 << (MalloyParser.HACKY_REGEX - 62)) | (1 << (MalloyParser.STRING_LITERAL - 62)) | (1 << (MalloyParser.OPAREN - 62)))) !== 0) || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.MINUS - 109)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 109)) | (1 << (MalloyParser.LITERAL_HOUR - 109)) | (1 << (MalloyParser.LITERAL_DAY - 109)) | (1 << (MalloyParser.LITERAL_QUARTER - 109)) | (1 << (MalloyParser.LITERAL_MONTH - 109)) | (1 << (MalloyParser.LITERAL_WEEK - 109)) | (1 << (MalloyParser.LITERAL_YEAR - 109)) | (1 << (MalloyParser.IDENTIFIER - 109)) | (1 << (MalloyParser.INTEGER_LITERAL - 109)) | (1 << (MalloyParser.NUMERIC_LITERAL - 109)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 109)))) !== 0)) {
4537
4547
  {
4538
- this.state = 878;
4548
+ this.state = 879;
4539
4549
  _localctx._pickValue = this.fieldExpr(0);
4540
4550
  }
4541
4551
  }
4542
- this.state = 881;
4543
- this.match(MalloyParser.WHEN);
4544
4552
  this.state = 882;
4553
+ this.match(MalloyParser.WHEN);
4554
+ this.state = 883;
4545
4555
  _localctx._pickWhen = this.partialAllowedFieldExpr();
4546
4556
  }
4547
4557
  }
@@ -4569,32 +4579,32 @@ class MalloyParser extends Parser_1.Parser {
4569
4579
  let _alt;
4570
4580
  this.enterOuterAlt(_localctx, 1);
4571
4581
  {
4572
- this.state = 884;
4582
+ this.state = 885;
4573
4583
  this.fieldExpr(0);
4574
- this.state = 889;
4584
+ this.state = 890;
4575
4585
  this._errHandler.sync(this);
4576
4586
  _alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
4577
4587
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4578
4588
  if (_alt === 1) {
4579
4589
  {
4580
4590
  {
4581
- this.state = 885;
4582
- this.match(MalloyParser.COMMA);
4583
4591
  this.state = 886;
4592
+ this.match(MalloyParser.COMMA);
4593
+ this.state = 887;
4584
4594
  this.fieldExpr(0);
4585
4595
  }
4586
4596
  }
4587
4597
  }
4588
- this.state = 891;
4598
+ this.state = 892;
4589
4599
  this._errHandler.sync(this);
4590
4600
  _alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
4591
4601
  }
4592
- this.state = 893;
4602
+ this.state = 894;
4593
4603
  this._errHandler.sync(this);
4594
4604
  _la = this._input.LA(1);
4595
4605
  if (_la === MalloyParser.COMMA) {
4596
4606
  {
4597
- this.state = 892;
4607
+ this.state = 893;
4598
4608
  this.match(MalloyParser.COMMA);
4599
4609
  }
4600
4610
  }
@@ -4623,28 +4633,28 @@ class MalloyParser extends Parser_1.Parser {
4623
4633
  try {
4624
4634
  this.enterOuterAlt(_localctx, 1);
4625
4635
  {
4626
- this.state = 895;
4636
+ this.state = 896;
4627
4637
  this.fieldName();
4628
- this.state = 902;
4638
+ this.state = 903;
4629
4639
  this._errHandler.sync(this);
4630
4640
  _la = this._input.LA(1);
4631
4641
  while (((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & ((1 << (MalloyParser.COMMA - 100)) | (1 << (MalloyParser.IDENTIFIER - 100)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 100)))) !== 0)) {
4632
4642
  {
4633
4643
  {
4634
- this.state = 897;
4644
+ this.state = 898;
4635
4645
  this._errHandler.sync(this);
4636
4646
  _la = this._input.LA(1);
4637
4647
  if (_la === MalloyParser.COMMA) {
4638
4648
  {
4639
- this.state = 896;
4649
+ this.state = 897;
4640
4650
  this.match(MalloyParser.COMMA);
4641
4651
  }
4642
4652
  }
4643
- this.state = 899;
4653
+ this.state = 900;
4644
4654
  this.fieldName();
4645
4655
  }
4646
4656
  }
4647
- this.state = 904;
4657
+ this.state = 905;
4648
4658
  this._errHandler.sync(this);
4649
4659
  _la = this._input.LA(1);
4650
4660
  }
@@ -4674,39 +4684,39 @@ class MalloyParser extends Parser_1.Parser {
4674
4684
  let _alt;
4675
4685
  this.enterOuterAlt(_localctx, 1);
4676
4686
  {
4677
- this.state = 905;
4687
+ this.state = 906;
4678
4688
  this.collectionMember();
4679
- this.state = 912;
4689
+ this.state = 913;
4680
4690
  this._errHandler.sync(this);
4681
4691
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
4682
4692
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4683
4693
  if (_alt === 1) {
4684
4694
  {
4685
4695
  {
4686
- this.state = 907;
4696
+ this.state = 908;
4687
4697
  this._errHandler.sync(this);
4688
4698
  _la = this._input.LA(1);
4689
4699
  if (_la === MalloyParser.COMMA) {
4690
4700
  {
4691
- this.state = 906;
4701
+ this.state = 907;
4692
4702
  this.match(MalloyParser.COMMA);
4693
4703
  }
4694
4704
  }
4695
- this.state = 909;
4705
+ this.state = 910;
4696
4706
  this.collectionMember();
4697
4707
  }
4698
4708
  }
4699
4709
  }
4700
- this.state = 914;
4710
+ this.state = 915;
4701
4711
  this._errHandler.sync(this);
4702
4712
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
4703
4713
  }
4704
- this.state = 916;
4714
+ this.state = 917;
4705
4715
  this._errHandler.sync(this);
4706
4716
  _la = this._input.LA(1);
4707
4717
  if (_la === MalloyParser.COMMA) {
4708
4718
  {
4709
- this.state = 915;
4719
+ this.state = 916;
4710
4720
  this.match(MalloyParser.COMMA);
4711
4721
  }
4712
4722
  }
@@ -4733,14 +4743,14 @@ class MalloyParser extends Parser_1.Parser {
4733
4743
  this.enterRule(_localctx, 182, MalloyParser.RULE_collectionMember);
4734
4744
  let _la;
4735
4745
  try {
4736
- this.state = 926;
4746
+ this.state = 927;
4737
4747
  this._errHandler.sync(this);
4738
4748
  switch (this.interpreter.adaptivePredict(this._input, 104, this._ctx)) {
4739
4749
  case 1:
4740
4750
  _localctx = new NameMemberContext(_localctx);
4741
4751
  this.enterOuterAlt(_localctx, 1);
4742
4752
  {
4743
- this.state = 918;
4753
+ this.state = 919;
4744
4754
  this.fieldPath();
4745
4755
  }
4746
4756
  break;
@@ -4748,18 +4758,18 @@ class MalloyParser extends Parser_1.Parser {
4748
4758
  _localctx = new WildMemberContext(_localctx);
4749
4759
  this.enterOuterAlt(_localctx, 2);
4750
4760
  {
4751
- this.state = 922;
4761
+ this.state = 923;
4752
4762
  this._errHandler.sync(this);
4753
4763
  _la = this._input.LA(1);
4754
4764
  if (_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL) {
4755
4765
  {
4756
- this.state = 919;
4757
- this.fieldPath();
4758
4766
  this.state = 920;
4767
+ this.fieldPath();
4768
+ this.state = 921;
4759
4769
  this.match(MalloyParser.DOT);
4760
4770
  }
4761
4771
  }
4762
- this.state = 924;
4772
+ this.state = 925;
4763
4773
  _la = this._input.LA(1);
4764
4774
  if (!(_la === MalloyParser.STAR || _la === MalloyParser.STARSTAR)) {
4765
4775
  this._errHandler.recoverInline(this);
@@ -4777,7 +4787,7 @@ class MalloyParser extends Parser_1.Parser {
4777
4787
  _localctx = new NewMemberContext(_localctx);
4778
4788
  this.enterOuterAlt(_localctx, 3);
4779
4789
  {
4780
- this.state = 925;
4790
+ this.state = 926;
4781
4791
  this.fieldDef();
4782
4792
  }
4783
4793
  break;
@@ -4806,23 +4816,23 @@ class MalloyParser extends Parser_1.Parser {
4806
4816
  let _alt;
4807
4817
  this.enterOuterAlt(_localctx, 1);
4808
4818
  {
4809
- this.state = 928;
4819
+ this.state = 929;
4810
4820
  this.fieldName();
4811
- this.state = 933;
4821
+ this.state = 934;
4812
4822
  this._errHandler.sync(this);
4813
4823
  _alt = this.interpreter.adaptivePredict(this._input, 105, this._ctx);
4814
4824
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4815
4825
  if (_alt === 1) {
4816
4826
  {
4817
4827
  {
4818
- this.state = 929;
4819
- this.match(MalloyParser.DOT);
4820
4828
  this.state = 930;
4829
+ this.match(MalloyParser.DOT);
4830
+ this.state = 931;
4821
4831
  this.fieldName();
4822
4832
  }
4823
4833
  }
4824
4834
  }
4825
- this.state = 935;
4835
+ this.state = 936;
4826
4836
  this._errHandler.sync(this);
4827
4837
  _alt = this.interpreter.adaptivePredict(this._input, 105, this._ctx);
4828
4838
  }
@@ -4850,7 +4860,7 @@ class MalloyParser extends Parser_1.Parser {
4850
4860
  try {
4851
4861
  this.enterOuterAlt(_localctx, 1);
4852
4862
  {
4853
- this.state = 936;
4863
+ this.state = 937;
4854
4864
  this.id();
4855
4865
  }
4856
4866
  }
@@ -4876,7 +4886,7 @@ class MalloyParser extends Parser_1.Parser {
4876
4886
  try {
4877
4887
  this.enterOuterAlt(_localctx, 1);
4878
4888
  {
4879
- this.state = 938;
4889
+ this.state = 939;
4880
4890
  this.id();
4881
4891
  }
4882
4892
  }
@@ -4902,9 +4912,9 @@ class MalloyParser extends Parser_1.Parser {
4902
4912
  try {
4903
4913
  this.enterOuterAlt(_localctx, 1);
4904
4914
  {
4905
- this.state = 940;
4906
- this.fieldExpr(0);
4907
4915
  this.state = 941;
4916
+ this.fieldExpr(0);
4917
+ this.state = 942;
4908
4918
  this.match(MalloyParser.EOF);
4909
4919
  }
4910
4920
  }
@@ -4930,7 +4940,7 @@ class MalloyParser extends Parser_1.Parser {
4930
4940
  try {
4931
4941
  this.enterOuterAlt(_localctx, 1);
4932
4942
  {
4933
- this.state = 943;
4943
+ this.state = 944;
4934
4944
  this.jsonValue();
4935
4945
  }
4936
4946
  }
@@ -4954,62 +4964,62 @@ class MalloyParser extends Parser_1.Parser {
4954
4964
  let _localctx = new JsonValueContext(this._ctx, this.state);
4955
4965
  this.enterRule(_localctx, 194, MalloyParser.RULE_jsonValue);
4956
4966
  try {
4957
- this.state = 953;
4967
+ this.state = 954;
4958
4968
  this._errHandler.sync(this);
4959
4969
  switch (this._input.LA(1)) {
4960
4970
  case MalloyParser.JSON_STRING:
4961
4971
  this.enterOuterAlt(_localctx, 1);
4962
4972
  {
4963
- this.state = 945;
4973
+ this.state = 946;
4964
4974
  this.match(MalloyParser.JSON_STRING);
4965
4975
  }
4966
4976
  break;
4967
4977
  case MalloyParser.INTEGER_LITERAL:
4968
4978
  this.enterOuterAlt(_localctx, 2);
4969
4979
  {
4970
- this.state = 946;
4980
+ this.state = 947;
4971
4981
  this.match(MalloyParser.INTEGER_LITERAL);
4972
4982
  }
4973
4983
  break;
4974
4984
  case MalloyParser.NUMERIC_LITERAL:
4975
4985
  this.enterOuterAlt(_localctx, 3);
4976
4986
  {
4977
- this.state = 947;
4987
+ this.state = 948;
4978
4988
  this.match(MalloyParser.NUMERIC_LITERAL);
4979
4989
  }
4980
4990
  break;
4981
4991
  case MalloyParser.OCURLY:
4982
4992
  this.enterOuterAlt(_localctx, 4);
4983
4993
  {
4984
- this.state = 948;
4994
+ this.state = 949;
4985
4995
  this.jsonObject();
4986
4996
  }
4987
4997
  break;
4988
4998
  case MalloyParser.OBRACK:
4989
4999
  this.enterOuterAlt(_localctx, 5);
4990
5000
  {
4991
- this.state = 949;
5001
+ this.state = 950;
4992
5002
  this.jsonArray();
4993
5003
  }
4994
5004
  break;
4995
5005
  case MalloyParser.TRUE:
4996
5006
  this.enterOuterAlt(_localctx, 6);
4997
5007
  {
4998
- this.state = 950;
5008
+ this.state = 951;
4999
5009
  this.match(MalloyParser.TRUE);
5000
5010
  }
5001
5011
  break;
5002
5012
  case MalloyParser.FALSE:
5003
5013
  this.enterOuterAlt(_localctx, 7);
5004
5014
  {
5005
- this.state = 951;
5015
+ this.state = 952;
5006
5016
  this.match(MalloyParser.FALSE);
5007
5017
  }
5008
5018
  break;
5009
5019
  case MalloyParser.NULL:
5010
5020
  this.enterOuterAlt(_localctx, 8);
5011
5021
  {
5012
- this.state = 952;
5022
+ this.state = 953;
5013
5023
  this.match(MalloyParser.NULL);
5014
5024
  }
5015
5025
  break;
@@ -5038,42 +5048,42 @@ class MalloyParser extends Parser_1.Parser {
5038
5048
  this.enterRule(_localctx, 196, MalloyParser.RULE_jsonObject);
5039
5049
  let _la;
5040
5050
  try {
5041
- this.state = 968;
5051
+ this.state = 969;
5042
5052
  this._errHandler.sync(this);
5043
5053
  switch (this.interpreter.adaptivePredict(this._input, 108, this._ctx)) {
5044
5054
  case 1:
5045
5055
  this.enterOuterAlt(_localctx, 1);
5046
5056
  {
5047
- this.state = 955;
5048
- this.match(MalloyParser.OCURLY);
5049
5057
  this.state = 956;
5058
+ this.match(MalloyParser.OCURLY);
5059
+ this.state = 957;
5050
5060
  this.jsonProperty();
5051
- this.state = 961;
5061
+ this.state = 962;
5052
5062
  this._errHandler.sync(this);
5053
5063
  _la = this._input.LA(1);
5054
5064
  while (_la === MalloyParser.COMMA) {
5055
5065
  {
5056
5066
  {
5057
- this.state = 957;
5058
- this.match(MalloyParser.COMMA);
5059
5067
  this.state = 958;
5068
+ this.match(MalloyParser.COMMA);
5069
+ this.state = 959;
5060
5070
  this.jsonProperty();
5061
5071
  }
5062
5072
  }
5063
- this.state = 963;
5073
+ this.state = 964;
5064
5074
  this._errHandler.sync(this);
5065
5075
  _la = this._input.LA(1);
5066
5076
  }
5067
- this.state = 964;
5077
+ this.state = 965;
5068
5078
  this.match(MalloyParser.CCURLY);
5069
5079
  }
5070
5080
  break;
5071
5081
  case 2:
5072
5082
  this.enterOuterAlt(_localctx, 2);
5073
5083
  {
5074
- this.state = 966;
5075
- this.match(MalloyParser.OCURLY);
5076
5084
  this.state = 967;
5085
+ this.match(MalloyParser.OCURLY);
5086
+ this.state = 968;
5077
5087
  this.match(MalloyParser.CCURLY);
5078
5088
  }
5079
5089
  break;
@@ -5101,11 +5111,11 @@ class MalloyParser extends Parser_1.Parser {
5101
5111
  try {
5102
5112
  this.enterOuterAlt(_localctx, 1);
5103
5113
  {
5104
- this.state = 970;
5105
- this.match(MalloyParser.JSON_STRING);
5106
5114
  this.state = 971;
5107
- this.match(MalloyParser.COLON);
5115
+ this.match(MalloyParser.JSON_STRING);
5108
5116
  this.state = 972;
5117
+ this.match(MalloyParser.COLON);
5118
+ this.state = 973;
5109
5119
  this.jsonValue();
5110
5120
  }
5111
5121
  }
@@ -5130,42 +5140,42 @@ class MalloyParser extends Parser_1.Parser {
5130
5140
  this.enterRule(_localctx, 200, MalloyParser.RULE_jsonArray);
5131
5141
  let _la;
5132
5142
  try {
5133
- this.state = 987;
5143
+ this.state = 988;
5134
5144
  this._errHandler.sync(this);
5135
5145
  switch (this.interpreter.adaptivePredict(this._input, 110, this._ctx)) {
5136
5146
  case 1:
5137
5147
  this.enterOuterAlt(_localctx, 1);
5138
5148
  {
5139
- this.state = 974;
5140
- this.match(MalloyParser.OBRACK);
5141
5149
  this.state = 975;
5150
+ this.match(MalloyParser.OBRACK);
5151
+ this.state = 976;
5142
5152
  this.jsonValue();
5143
- this.state = 980;
5153
+ this.state = 981;
5144
5154
  this._errHandler.sync(this);
5145
5155
  _la = this._input.LA(1);
5146
5156
  while (_la === MalloyParser.COMMA) {
5147
5157
  {
5148
5158
  {
5149
- this.state = 976;
5150
- this.match(MalloyParser.COMMA);
5151
5159
  this.state = 977;
5160
+ this.match(MalloyParser.COMMA);
5161
+ this.state = 978;
5152
5162
  this.jsonValue();
5153
5163
  }
5154
5164
  }
5155
- this.state = 982;
5165
+ this.state = 983;
5156
5166
  this._errHandler.sync(this);
5157
5167
  _la = this._input.LA(1);
5158
5168
  }
5159
- this.state = 983;
5169
+ this.state = 984;
5160
5170
  this.match(MalloyParser.CBRACK);
5161
5171
  }
5162
5172
  break;
5163
5173
  case 2:
5164
5174
  this.enterOuterAlt(_localctx, 2);
5165
5175
  {
5166
- this.state = 985;
5167
- this.match(MalloyParser.OBRACK);
5168
5176
  this.state = 986;
5177
+ this.match(MalloyParser.OBRACK);
5178
+ this.state = 987;
5169
5179
  this.match(MalloyParser.CBRACK);
5170
5180
  }
5171
5181
  break;
@@ -5193,7 +5203,7 @@ class MalloyParser extends Parser_1.Parser {
5193
5203
  try {
5194
5204
  this.enterOuterAlt(_localctx, 1);
5195
5205
  {
5196
- this.state = 989;
5206
+ this.state = 990;
5197
5207
  this.id();
5198
5208
  }
5199
5209
  }
@@ -5219,7 +5229,7 @@ class MalloyParser extends Parser_1.Parser {
5219
5229
  try {
5220
5230
  this.enterOuterAlt(_localctx, 1);
5221
5231
  {
5222
- this.state = 991;
5232
+ this.state = 992;
5223
5233
  this.id();
5224
5234
  }
5225
5235
  }
@@ -5245,7 +5255,7 @@ class MalloyParser extends Parser_1.Parser {
5245
5255
  try {
5246
5256
  this.enterOuterAlt(_localctx, 1);
5247
5257
  {
5248
- this.state = 993;
5258
+ this.state = 994;
5249
5259
  this.match(MalloyParser.JSON_STRING);
5250
5260
  }
5251
5261
  }
@@ -5426,25 +5436,26 @@ MalloyParser.NOT_MATCH = 115;
5426
5436
  MalloyParser.MATCH = 116;
5427
5437
  MalloyParser.PERCENT = 117;
5428
5438
  MalloyParser.LITERAL_TIMESTAMP = 118;
5429
- MalloyParser.LITERAL_DAY = 119;
5430
- MalloyParser.LITERAL_QUARTER = 120;
5431
- MalloyParser.LITERAL_MONTH = 121;
5432
- MalloyParser.LITERAL_WEEK = 122;
5433
- MalloyParser.LITERAL_YEAR = 123;
5434
- MalloyParser.IDENTIFIER = 124;
5435
- MalloyParser.PERCENT_LITERAL = 125;
5436
- MalloyParser.INTEGER_LITERAL = 126;
5437
- MalloyParser.NUMERIC_LITERAL = 127;
5438
- MalloyParser.OBJECT_NAME_LITERAL = 128;
5439
- MalloyParser.BLOCK_COMMENT = 129;
5440
- MalloyParser.COMMENT_TO_EOL = 130;
5441
- MalloyParser.WHITE_SPACE = 131;
5442
- MalloyParser.SQL_BEGIN = 132;
5443
- MalloyParser.CLOSE_CODE = 133;
5444
- MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 134;
5445
- MalloyParser.UNEXPECTED_CHAR = 135;
5446
- MalloyParser.OPEN_CODE = 136;
5447
- MalloyParser.SQL_END = 137;
5439
+ MalloyParser.LITERAL_HOUR = 119;
5440
+ MalloyParser.LITERAL_DAY = 120;
5441
+ MalloyParser.LITERAL_QUARTER = 121;
5442
+ MalloyParser.LITERAL_MONTH = 122;
5443
+ MalloyParser.LITERAL_WEEK = 123;
5444
+ MalloyParser.LITERAL_YEAR = 124;
5445
+ MalloyParser.IDENTIFIER = 125;
5446
+ MalloyParser.PERCENT_LITERAL = 126;
5447
+ MalloyParser.INTEGER_LITERAL = 127;
5448
+ MalloyParser.NUMERIC_LITERAL = 128;
5449
+ MalloyParser.OBJECT_NAME_LITERAL = 129;
5450
+ MalloyParser.BLOCK_COMMENT = 130;
5451
+ MalloyParser.COMMENT_TO_EOL = 131;
5452
+ MalloyParser.WHITE_SPACE = 132;
5453
+ MalloyParser.SQL_BEGIN = 133;
5454
+ MalloyParser.CLOSE_CODE = 134;
5455
+ MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 135;
5456
+ MalloyParser.UNEXPECTED_CHAR = 136;
5457
+ MalloyParser.OPEN_CODE = 137;
5458
+ MalloyParser.SQL_END = 138;
5448
5459
  MalloyParser.RULE_malloyDocument = 0;
5449
5460
  MalloyParser.RULE_malloyStatement = 1;
5450
5461
  MalloyParser.RULE_defineSourceStatement = 2;
@@ -5592,7 +5603,8 @@ MalloyParser._LITERAL_NAMES = [
5592
5603
  "'.'", "'<'", "'>'", "'='", "'!='", "'<='", "'>='", "'+'", "'-'", "'*'",
5593
5604
  "'**'", "'/'", "'|'", "';'", "'!~'", "'~'", "'%'", undefined, undefined,
5594
5605
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
5595
- undefined, undefined, undefined, undefined, undefined, "'\"\"\"'", "'}%'",
5606
+ undefined, undefined, undefined, undefined, undefined, undefined, "'\"\"\"'",
5607
+ "'}%'",
5596
5608
  ];
5597
5609
  MalloyParser._SYMBOLIC_NAMES = [
5598
5610
  undefined, "JSON_STRING", "ACCEPT", "AGGREGATE", "CONNECTION", "DECLARE",
@@ -5609,15 +5621,16 @@ MalloyParser._SYMBOLIC_NAMES = [
5609
5621
  "AMPER", "ARROW", "FAT_ARROW", "OPAREN", "CPAREN", "OBRACK", "CBRACK",
5610
5622
  "OCURLY", "CCURLY", "DOUBLECOLON", "COLON", "COMMA", "DOT", "LT", "GT",
5611
5623
  "EQ", "NE", "LTE", "GTE", "PLUS", "MINUS", "STAR", "STARSTAR", "SLASH",
5612
- "BAR", "SEMI", "NOT_MATCH", "MATCH", "PERCENT", "LITERAL_TIMESTAMP", "LITERAL_DAY",
5613
- "LITERAL_QUARTER", "LITERAL_MONTH", "LITERAL_WEEK", "LITERAL_YEAR", "IDENTIFIER",
5614
- "PERCENT_LITERAL", "INTEGER_LITERAL", "NUMERIC_LITERAL", "OBJECT_NAME_LITERAL",
5615
- "BLOCK_COMMENT", "COMMENT_TO_EOL", "WHITE_SPACE", "SQL_BEGIN", "CLOSE_CODE",
5616
- "UNWATED_CHARS_TRAILING_NUMBERS", "UNEXPECTED_CHAR", "OPEN_CODE", "SQL_END",
5624
+ "BAR", "SEMI", "NOT_MATCH", "MATCH", "PERCENT", "LITERAL_TIMESTAMP", "LITERAL_HOUR",
5625
+ "LITERAL_DAY", "LITERAL_QUARTER", "LITERAL_MONTH", "LITERAL_WEEK", "LITERAL_YEAR",
5626
+ "IDENTIFIER", "PERCENT_LITERAL", "INTEGER_LITERAL", "NUMERIC_LITERAL",
5627
+ "OBJECT_NAME_LITERAL", "BLOCK_COMMENT", "COMMENT_TO_EOL", "WHITE_SPACE",
5628
+ "SQL_BEGIN", "CLOSE_CODE", "UNWATED_CHARS_TRAILING_NUMBERS", "UNEXPECTED_CHAR",
5629
+ "OPEN_CODE", "SQL_END",
5617
5630
  ];
5618
5631
  MalloyParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(MalloyParser._LITERAL_NAMES, MalloyParser._SYMBOLIC_NAMES, []);
5619
5632
  MalloyParser._serializedATNSegments = 2;
5620
- MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x8B\u03E6\x04" +
5633
+ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x8C\u03E7\x04" +
5621
5634
  "\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
5622
5635
  "\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
5623
5636
  "\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
@@ -5682,26 +5695,26 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5682
5695
  "\nH\x03H\x03H\x05H\u02C1\nH\x03I\x03I\x05I\u02C5\nI\x03I\x07I\u02C8\n" +
5683
5696
  "I\fI\x0EI\u02CB\vI\x03J\x03J\x03J\x03J\x05J\u02D1\nJ\x03K\x03K\x03K\x03" +
5684
5697
  "L\x03L\x03M\x03M\x03N\x03N\x03O\x03O\x03P\x03P\x03P\x03P\x03P\x03P\x03" +
5685
- "P\x05P\u02E5\nP\x03Q\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\u02ED\nQ\x03R\x03R" +
5686
- "\x03S\x03S\x03T\x03T\x03U\x03U\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5698
+ "P\x05P\u02E5\nP\x03Q\x03Q\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\u02EE\nQ\x03R" +
5699
+ "\x03R\x03S\x03S\x03T\x03T\x03U\x03U\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5687
5700
  "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5688
- "V\x03V\x05V\u030E\nV\x03V\x03V\x03V\x03V\x05V\u0314\nV\x03V\x03V\x03V" +
5689
- "\x03V\x03V\x03V\x03V\x03V\x05V\u031E\nV\x03V\x03V\x05V\u0322\nV\x03V\x03" +
5690
- "V\x03V\x03V\x03V\x03V\x03V\x03V\x07V\u032C\nV\fV\x0EV\u032F\vV\x03V\x03" +
5691
- "V\x05V\u0333\nV\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5701
+ "V\x03V\x03V\x05V\u030F\nV\x03V\x03V\x03V\x03V\x05V\u0315\nV\x03V\x03V" +
5702
+ "\x03V\x03V\x03V\x03V\x03V\x03V\x05V\u031F\nV\x03V\x03V\x05V\u0323\nV\x03" +
5703
+ "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x07V\u032D\nV\fV\x0EV\u0330\vV\x03" +
5704
+ "V\x03V\x05V\u0334\nV\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5692
5705
  "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5693
5706
  "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5694
- "V\x03V\x07V\u035D\nV\fV\x0EV\u0360\vV\x03W\x05W\u0363\nW\x03W\x03W\x03" +
5695
- "X\x06X\u0368\nX\rX\x0EX\u0369\x03X\x03X\x05X\u036E\nX\x03Y\x03Y\x05Y\u0372" +
5696
- "\nY\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x07Z\u037A\nZ\fZ\x0EZ\u037D\vZ\x03Z" +
5697
- "\x05Z\u0380\nZ\x03[\x03[\x05[\u0384\n[\x03[\x07[\u0387\n[\f[\x0E[\u038A" +
5698
- "\v[\x03\\\x03\\\x05\\\u038E\n\\\x03\\\x07\\\u0391\n\\\f\\\x0E\\\u0394" +
5699
- "\v\\\x03\\\x05\\\u0397\n\\\x03]\x03]\x03]\x03]\x05]\u039D\n]\x03]\x03" +
5700
- "]\x05]\u03A1\n]\x03^\x03^\x03^\x07^\u03A6\n^\f^\x0E^\u03A9\v^\x03_\x03" +
5701
- "_\x03`\x03`\x03a\x03a\x03a\x03b\x03b\x03c\x03c\x03c\x03c\x03c\x03c\x03" +
5702
- "c\x03c\x05c\u03BC\nc\x03d\x03d\x03d\x03d\x07d\u03C2\nd\fd\x0Ed\u03C5\v" +
5703
- "d\x03d\x03d\x03d\x03d\x05d\u03CB\nd\x03e\x03e\x03e\x03e\x03f\x03f\x03" +
5704
- "f\x03f\x07f\u03D5\nf\ff\x0Ef\u03D8\vf\x03f\x03f\x03f\x03f\x05f\u03DE\n" +
5707
+ "V\x03V\x03V\x07V\u035E\nV\fV\x0EV\u0361\vV\x03W\x05W\u0364\nW\x03W\x03" +
5708
+ "W\x03X\x06X\u0369\nX\rX\x0EX\u036A\x03X\x03X\x05X\u036F\nX\x03Y\x03Y\x05" +
5709
+ "Y\u0373\nY\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x07Z\u037B\nZ\fZ\x0EZ\u037E\v" +
5710
+ "Z\x03Z\x05Z\u0381\nZ\x03[\x03[\x05[\u0385\n[\x03[\x07[\u0388\n[\f[\x0E" +
5711
+ "[\u038B\v[\x03\\\x03\\\x05\\\u038F\n\\\x03\\\x07\\\u0392\n\\\f\\\x0E\\" +
5712
+ "\u0395\v\\\x03\\\x05\\\u0398\n\\\x03]\x03]\x03]\x03]\x05]\u039E\n]\x03" +
5713
+ "]\x03]\x05]\u03A2\n]\x03^\x03^\x03^\x07^\u03A7\n^\f^\x0E^\u03AA\v^\x03" +
5714
+ "_\x03_\x03`\x03`\x03a\x03a\x03a\x03b\x03b\x03c\x03c\x03c\x03c\x03c\x03" +
5715
+ "c\x03c\x03c\x05c\u03BD\nc\x03d\x03d\x03d\x03d\x07d\u03C3\nd\fd\x0Ed\u03C6" +
5716
+ "\vd\x03d\x03d\x03d\x03d\x05d\u03CC\nd\x03e\x03e\x03e\x03e\x03f\x03f\x03" +
5717
+ "f\x03f\x07f\u03D6\nf\ff\x0Ef\u03D9\vf\x03f\x03f\x03f\x03f\x05f\u03DF\n" +
5705
5718
  "f\x03g\x03g\x03h\x03h\x03i\x03i\x03i\x02\x02\x03\xAAj\x02\x02\x04\x02" +
5706
5719
  "\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18" +
5707
5720
  "\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x02" +
@@ -5713,171 +5726,172 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5713
5726
  "\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6\x02\xB8" +
5714
5727
  "\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8\x02\xCA" +
5715
5728
  "\x02\xCC\x02\xCE\x02\xD0\x02\x02\x14\x04\x02\n\n\x1B\x1B\x04\x02\x04\x04" +
5716
- "\t\t\x04\x02##--\x05\x0222QQ\x7F\x80\x06\x02$$**<=KK\x07\x02%%++CCJJO" +
5717
- "O\x04\x02hmuv\x03\x02\x80\x81\x04\x0222QQ\x04\x02~~\x82\x82\b\x02,,77" +
5718
- ">?HISSVV\x04\x02 11\x05\x02pprrww\x03\x02no\x04\x02!!EE\x04\x02[[ss\x04" +
5719
- "\x02GGee\x03\x02pq\x02\u0428\x02\xD6\x03\x02\x02\x02\x04\xDF\x03\x02\x02" +
5720
- "\x02\x06\xE1\x03\x02\x02\x02\b\xE4\x03\x02\x02\x02\n\xEA\x03\x02\x02\x02" +
5721
- "\f\xEC\x03\x02\x02\x02\x0E\xEE\x03\x02\x02\x02\x10\xF6\x03\x02\x02\x02" +
5722
- "\x12\u0102\x03\x02\x02\x02\x14\u0104\x03\x02\x02\x02\x16\u010D\x03\x02" +
5723
- "\x02\x02\x18\u0111\x03\x02\x02\x02\x1A\u0114\x03\x02\x02\x02\x1C\u0116" +
5724
- "\x03\x02\x02\x02\x1E\u0123\x03\x02\x02\x02 \u0127\x03\x02\x02\x02\"\u013B" +
5725
- "\x03\x02\x02\x02$\u013D\x03\x02\x02\x02&\u014C\x03\x02\x02\x02(\u014E" +
5726
- "\x03\x02\x02\x02*\u0151\x03\x02\x02\x02,\u0160\x03\x02\x02\x02.\u0162" +
5727
- "\x03\x02\x02\x020\u0167\x03\x02\x02\x022\u0169\x03\x02\x02\x024\u016B" +
5728
- "\x03\x02\x02\x026\u0178\x03\x02\x02\x028\u017C\x03\x02\x02\x02:\u018F" +
5729
- "\x03\x02\x02\x02<\u0191\x03\x02\x02\x02>\u0193\x03\x02\x02\x02@\u019F" +
5730
- "\x03\x02\x02\x02B\u01B0\x03\x02\x02\x02D\u01B2\x03\x02\x02\x02F\u01BF" +
5731
- "\x03\x02\x02\x02H\u01C3\x03\x02\x02\x02J\u01D0\x03\x02\x02\x02L\u01DD" +
5732
- "\x03\x02\x02\x02N\u01E1\x03\x02\x02\x02P\u01E3\x03\x02\x02\x02R\u01E5" +
5733
- "\x03\x02\x02\x02T\u01E7\x03\x02\x02\x02V\u01FB\x03\x02\x02\x02X\u01FD" +
5734
- "\x03\x02\x02\x02Z\u021B\x03\x02\x02\x02\\\u021D\x03\x02\x02\x02^\u0221" +
5735
- "\x03\x02\x02\x02`\u0226\x03\x02\x02\x02b\u0228\x03\x02\x02\x02d\u0233" +
5736
- "\x03\x02\x02\x02f\u0236\x03\x02\x02\x02h\u0239\x03\x02\x02\x02j\u0246" +
5737
- "\x03\x02\x02\x02l\u0248\x03\x02\x02\x02n\u0259\x03\x02\x02\x02p\u025B" +
5738
- "\x03\x02\x02\x02r\u025E\x03\x02\x02\x02t\u026B\x03\x02\x02\x02v\u026F" +
5739
- "\x03\x02\x02\x02x\u0271\x03\x02\x02\x02z\u0274\x03\x02\x02\x02|\u028C" +
5740
- "\x03\x02\x02\x02~\u028E\x03\x02\x02\x02\x80\u0291\x03\x02\x02\x02\x82" +
5741
- "\u0294\x03\x02\x02\x02\x84\u0297\x03\x02\x02\x02\x86\u02A6\x03\x02\x02" +
5742
- "\x02\x88\u02AB\x03\x02\x02\x02\x8A\u02B2\x03\x02\x02\x02\x8C\u02B4\x03" +
5743
- "\x02\x02\x02\x8E\u02C0\x03\x02\x02\x02\x90\u02C2\x03\x02\x02\x02\x92\u02CC" +
5744
- "\x03\x02\x02\x02\x94\u02D2\x03\x02\x02\x02\x96\u02D5\x03\x02\x02\x02\x98" +
5745
- "\u02D7\x03\x02\x02\x02\x9A\u02D9\x03\x02\x02\x02\x9C\u02DB\x03\x02\x02" +
5746
- "\x02\x9E\u02E4\x03\x02\x02\x02\xA0\u02EC\x03\x02\x02\x02\xA2\u02EE\x03" +
5747
- "\x02\x02\x02\xA4\u02F0\x03\x02\x02\x02\xA6\u02F2\x03\x02\x02\x02\xA8\u02F4" +
5748
- "\x03\x02\x02\x02\xAA\u0332\x03\x02\x02\x02\xAC\u0362\x03\x02\x02\x02\xAE" +
5749
- "\u0367\x03\x02\x02\x02\xB0\u036F\x03\x02\x02\x02\xB2\u0376\x03\x02\x02" +
5750
- "\x02\xB4\u0381\x03\x02\x02\x02\xB6\u038B\x03\x02\x02\x02\xB8\u03A0\x03" +
5751
- "\x02\x02\x02\xBA\u03A2\x03\x02\x02\x02\xBC\u03AA\x03\x02\x02\x02\xBE\u03AC" +
5752
- "\x03\x02\x02\x02\xC0\u03AE\x03\x02\x02\x02\xC2\u03B1\x03\x02\x02\x02\xC4" +
5753
- "\u03BB\x03\x02\x02\x02\xC6\u03CA\x03\x02\x02\x02\xC8\u03CC\x03\x02\x02" +
5754
- "\x02\xCA\u03DD\x03\x02\x02\x02\xCC\u03DF\x03\x02\x02\x02\xCE\u03E1\x03" +
5755
- "\x02\x02\x02\xD0\u03E3\x03\x02\x02\x02\xD2\xD5\x05\x04\x03\x02\xD3\xD5" +
5756
- "\x07t\x02\x02\xD4\xD2\x03\x02\x02\x02\xD4\xD3\x03\x02\x02\x02\xD5\xD8" +
5757
- "\x03\x02\x02\x02\xD6\xD4\x03\x02\x02\x02\xD6\xD7\x03\x02\x02\x02\xD7\xD9" +
5758
- "\x03\x02\x02\x02\xD8\xD6\x03\x02\x02\x02\xD9\xDA\x07\x02\x02\x03\xDA\x03" +
5759
- "\x03\x02\x02\x02\xDB\xE0\x05\x06\x04\x02\xDC\xE0\x05\x0E\b\x02\xDD\xE0" +
5760
- "\x05\n\x06\x02\xDE\xE0\x05\x18\r\x02\xDF\xDB\x03\x02\x02\x02\xDF\xDC\x03" +
5761
- "\x02\x02\x02\xDF\xDD\x03\x02\x02\x02\xDF\xDE\x03\x02\x02\x02\xE0\x05\x03" +
5762
- "\x02\x02\x02\xE1\xE2\x05\b\x05\x02\xE2\xE3\x054\x1B\x02\xE3\x07\x03\x02" +
5763
- "\x02\x02\xE4\xE5\t\x02\x02\x02\xE5\t\x03\x02\x02\x02\xE6\xE7\x07\x17\x02" +
5764
- "\x02\xE7\xEB\x05\x1C\x0F\x02\xE8\xE9\x07\x17\x02\x02\xE9\xEB\x05\f\x07" +
5765
- "\x02\xEA\xE6\x03\x02\x02\x02\xEA\xE8\x03\x02\x02\x02\xEB\v\x03\x02\x02" +
5766
- "\x02\xEC\xED\x05\"\x12\x02\xED\r\x03\x02\x02\x02\xEE\xF2\x07\x1C\x02\x02" +
5767
- "\xEF\xF0\x05\xCEh\x02\xF0\xF1\x079\x02\x02\xF1\xF3\x03\x02\x02\x02\xF2" +
5768
- "\xEF\x03\x02\x02\x02\xF2\xF3\x03\x02\x02\x02\xF3\xF4\x03\x02\x02\x02\xF4" +
5769
- "\xF5\x05\x10\t\x02\xF5\x0F\x03\x02\x02\x02\xF6\xF8\x07b\x02\x02\xF7\xF9" +
5770
- "\x05\x12\n\x02\xF8\xF7\x03\x02\x02\x02\xF9\xFA\x03\x02\x02\x02\xFA\xF8" +
5771
- "\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\xFC\x03\x02\x02\x02\xFC\xFD" +
5772
- "\x07c\x02\x02\xFD\x11\x03\x02\x02\x02\xFE\xFF\x07\x06\x02\x02\xFF\u0103" +
5773
- "\x05\xD0i\x02\u0100\u0101\x07\x1A\x02\x02\u0101\u0103\x05\x14\v\x02\u0102" +
5774
- "\xFE\x03\x02\x02\x02\u0102\u0100\x03\x02\x02\x02\u0103\x13\x03\x02\x02" +
5775
- "\x02\u0104\u0108\x07\x86\x02\x02\u0105\u0107\x05\x16\f\x02\u0106\u0105" +
5776
- "\x03\x02\x02\x02\u0107\u010A\x03\x02\x02\x02\u0108\u0106\x03\x02\x02\x02" +
5777
- "\u0108\u0109\x03\x02\x02\x02\u0109\u010B\x03\x02\x02\x02\u010A\u0108\x03" +
5778
- "\x02\x02\x02\u010B\u010C\x07\x8B\x02\x02\u010C\x15\x03\x02\x02\x02\u010D" +
5779
- "\u010E\x07\x8A\x02\x02\u010E\u010F\x05\"\x12\x02\u010F\u0110\x07\x87\x02" +
5780
- "\x02\u0110\x17\x03\x02\x02\x02\u0111\u0112\x078\x02\x02\u0112\u0113\x05" +
5781
- "\x1A\x0E\x02\u0113\x19\x03\x02\x02\x02\u0114\u0115\x07\x03\x02\x02\u0115" +
5782
- "\x1B\x03\x02\x02\x02\u0116\u011D\x05\x1E\x10\x02\u0117\u0119\x07f\x02" +
5783
- "\x02\u0118\u0117\x03\x02\x02\x02\u0118\u0119\x03\x02\x02\x02\u0119\u011A" +
5784
- "\x03\x02\x02\x02\u011A\u011C\x05\x1E\x10\x02\u011B\u0118\x03\x02\x02\x02" +
5785
- "\u011C\u011F\x03\x02\x02\x02\u011D\u011B\x03\x02\x02\x02\u011D\u011E\x03" +
5786
- "\x02\x02\x02\u011E\u0121\x03\x02\x02\x02\u011F\u011D\x03\x02\x02\x02\u0120" +
5787
- "\u0122\x07f\x02\x02\u0121\u0120\x03\x02\x02\x02\u0121\u0122\x03\x02\x02" +
5788
- "\x02\u0122\x1D\x03\x02\x02\x02\u0123\u0124\x052\x1A\x02\u0124\u0125\x07" +
5789
- "9\x02\x02\u0125\u0126\x05\"\x12\x02\u0126\x1F\x03\x02\x02\x02\u0127\u0128" +
5790
- "\x07n\x02\x02\u0128!\x03\x02\x02\x02\u0129\u012A\x058\x1D\x02\u012A\u012B" +
5791
- "\x07\\\x02\x02\u012B\u012C\x05$\x13\x02\u012C\u013C\x03\x02\x02\x02\u012D" +
5792
- "\u012E\x07\\\x02\x02\u012E\u0133\x052\x1A\x02\u012F\u0131\x05 \x11\x02" +
5793
- "\u0130\u012F\x03\x02\x02\x02\u0130\u0131\x03\x02\x02\x02\u0131\u0132\x03" +
5794
- "\x02\x02\x02\u0132\u0134\x05,\x17\x02\u0133\u0130\x03\x02\x02\x02\u0133" +
5795
- "\u0134\x03\x02\x02\x02\u0134\u0138\x03\x02\x02\x02\u0135\u0137\x05(\x15" +
5796
- "\x02\u0136\u0135\x03\x02\x02\x02\u0137\u013A\x03\x02\x02\x02\u0138\u0136" +
5797
- "\x03\x02\x02\x02\u0138\u0139\x03\x02\x02\x02\u0139\u013C\x03\x02\x02\x02" +
5798
- "\u013A\u0138\x03\x02\x02\x02\u013B\u0129\x03\x02\x02\x02\u013B\u012D\x03" +
5799
- "\x02\x02\x02\u013C#\x03\x02\x02\x02\u013D\u0141\x05&\x14\x02\u013E\u0140" +
5800
- "\x05(\x15\x02\u013F\u013E\x03\x02\x02\x02\u0140\u0143\x03\x02\x02\x02" +
5801
- "\u0141\u013F\x03\x02\x02\x02\u0141\u0142\x03\x02\x02\x02\u0142%\x03\x02" +
5802
- "\x02\x02\u0143\u0141\x03\x02\x02\x02\u0144\u014D\x05,\x17\x02\u0145\u014A" +
5803
- "\x050\x19\x02\u0146\u0148\x05 \x11\x02\u0147\u0146\x03\x02\x02\x02\u0147" +
5804
- "\u0148\x03\x02\x02\x02\u0148\u0149\x03\x02\x02\x02\u0149\u014B\x05,\x17" +
5805
- "\x02\u014A\u0147\x03\x02\x02\x02\u014A\u014B\x03\x02\x02\x02\u014B\u014D" +
5806
- "\x03\x02\x02\x02\u014C\u0144\x03\x02\x02\x02\u014C\u0145\x03\x02\x02\x02" +
5807
- "\u014D\'\x03\x02\x02\x02\u014E\u014F\x07\\\x02\x02\u014F\u0150\x05,\x17" +
5808
- "\x02\u0150)\x03\x02\x02\x02\u0151\u0152\x07L\x02\x02\u0152\u0153\x07^" +
5809
- "\x02\x02\u0153\u0154\x05\xA2R\x02\u0154\u0155\x07_\x02\x02\u0155+\x03" +
5810
- "\x02\x02\x02\u0156\u0161\x05.\x18\x02\u0157\u015C\x07b\x02\x02\u0158\u015B" +
5811
- "\x05n8\x02\u0159\u015B\x07t\x02\x02\u015A\u0158\x03\x02\x02\x02\u015A" +
5812
- "\u0159\x03\x02\x02\x02\u015B\u015E\x03\x02\x02\x02\u015C\u015A\x03\x02" +
5813
- "\x02\x02\u015C\u015D\x03\x02\x02\x02\u015D\u015F\x03\x02\x02\x02\u015E" +
5814
- "\u015C\x03\x02\x02\x02\u015F\u0161\x07c\x02\x02\u0160\u0156\x03\x02\x02" +
5815
- "\x02\u0160\u0157\x03\x02\x02\x02\u0161-\x03\x02\x02\x02\u0162\u0163\x07" +
5816
- "b\x02\x02\u0163\u0164\x07G\x02\x02\u0164\u0165\x05\xAAV\x02\u0165\u0166" +
5817
- "\x07c\x02\x02\u0166/\x03\x02\x02\x02\u0167\u0168\x05\xA4S\x02\u01681\x03" +
5818
- "\x02\x02\x02\u0169\u016A\x05\xA4S\x02\u016A3\x03\x02\x02\x02\u016B\u0172" +
5819
- "\x056\x1C\x02\u016C\u016E\x07f\x02\x02\u016D\u016C\x03\x02\x02\x02\u016D" +
5820
- "\u016E\x03\x02\x02\x02\u016E\u016F\x03\x02\x02\x02\u016F\u0171\x056\x1C" +
5821
- "\x02\u0170\u016D\x03\x02\x02\x02\u0171\u0174\x03\x02\x02\x02\u0172\u0170" +
5822
- "\x03\x02\x02\x02\u0172\u0173\x03\x02\x02\x02\u0173\u0176\x03\x02\x02\x02" +
5823
- "\u0174\u0172\x03\x02\x02\x02\u0175\u0177\x07f\x02\x02\u0176\u0175\x03" +
5824
- "\x02\x02\x02\u0176\u0177\x03\x02\x02\x02\u01775\x03\x02\x02\x02\u0178" +
5825
- "\u0179\x05<\x1F\x02\u0179\u017A\x079\x02\x02\u017A\u017B\x058\x1D\x02" +
5826
- "\u017B7\x03\x02\x02\x02\u017C\u0181\x05:\x1E\x02\u017D\u017F\x05 \x11" +
5827
- "\x02\u017E\u017D\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02\u017F\u0180" +
5828
- "\x03\x02\x02\x02\u0180\u0182\x05@!\x02\u0181\u017E\x03\x02\x02\x02\u0181" +
5829
- "\u0182\x03\x02\x02\x02\u01829\x03\x02\x02\x02\u0183\u0190\x05> \x02\u0184" +
5830
- "\u0190\x05*\x16\x02\u0185\u0186\x074\x02\x02\u0186\u0187\x07^\x02\x02" +
5831
- "\u0187\u0188\x05\"\x12\x02\u0188\u0189\x07_\x02\x02\u0189\u0190\x03\x02" +
5832
- "\x02\x02\u018A\u018B\x075\x02\x02\u018B\u018C\x07^\x02\x02\u018C\u018D" +
5833
- "\x05\xCCg\x02\u018D\u018E\x07_\x02\x02\u018E\u0190\x03\x02\x02\x02\u018F" +
5834
- "\u0183\x03\x02\x02\x02\u018F\u0184\x03\x02\x02\x02\u018F\u0185\x03\x02" +
5835
- "\x02\x02\u018F\u018A\x03\x02\x02\x02\u0190;\x03\x02\x02\x02\u0191\u0192" +
5836
- "\x05\xA4S\x02\u0192=\x03\x02\x02\x02\u0193\u0194\x05\xA4S\x02\u0194?\x03" +
5837
- "\x02\x02\x02\u0195\u019A\x07b\x02\x02\u0196\u0199\x05B\"\x02\u0197\u0199" +
5838
- "\x07t\x02\x02\u0198\u0196\x03\x02\x02\x02\u0198\u0197\x03\x02\x02\x02" +
5839
- "\u0199\u019C\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02\u019A\u019B\x03" +
5840
- "\x02\x02\x02\u019B\u019D\x03\x02\x02\x02\u019C\u019A\x03\x02\x02\x02\u019D" +
5841
- "\u01A0\x07c\x02\x02\u019E\u01A0\x05.\x18\x02\u019F\u0195\x03\x02\x02\x02" +
5842
- "\u019F\u019E\x03\x02\x02\x02\u01A0A\x03\x02\x02\x02\u01A1\u01A2\x07\b" +
5843
- "\x02\x02\u01A2\u01B1\x05H%\x02\u01A3\u01A4\x07\x12\x02\x02\u01A4\u01B1" +
5844
- "\x05J&\x02\u01A5\u01B1\x05T+\x02\u01A6\u01B1\x05V,\x02\u01A7\u01B1\x05" +
5845
- "d3\x02\u01A8\u01A9\x07\x15\x02\x02\u01A9\u01B1\x05\xBE`\x02\u01AA\u01AB" +
5846
- "\x07\x18\x02\x02\u01AB\u01B1\x05D#\x02\u01AC\u01AD\t\x03\x02\x02\u01AD" +
5847
- "\u01B1\x05\xB4[\x02\u01AE\u01AF\x07\x17\x02\x02\u01AF\u01B1\x05h5\x02" +
5848
- "\u01B0\u01A1\x03\x02\x02\x02\u01B0\u01A3\x03\x02\x02\x02\u01B0\u01A5\x03" +
5849
- "\x02\x02\x02\u01B0\u01A6\x03\x02\x02\x02\u01B0\u01A7\x03\x02\x02\x02\u01B0" +
5850
- "\u01A8\x03\x02\x02\x02\u01B0\u01AA\x03\x02\x02\x02\u01B0\u01AC\x03\x02" +
5851
- "\x02\x02\u01B0\u01AE\x03\x02\x02\x02\u01B1C\x03\x02\x02\x02\u01B2\u01B9" +
5852
- "\x05F$\x02\u01B3\u01B5\x07f\x02\x02\u01B4\u01B3\x03\x02\x02\x02\u01B4" +
5853
- "\u01B5\x03\x02\x02\x02\u01B5\u01B6\x03\x02\x02\x02\u01B6\u01B8\x05F$\x02" +
5854
- "\u01B7\u01B4\x03\x02\x02\x02\u01B8\u01BB\x03\x02\x02\x02\u01B9\u01B7\x03" +
5855
- "\x02\x02\x02\u01B9\u01BA\x03\x02\x02\x02\u01BA\u01BD\x03\x02\x02\x02\u01BB" +
5856
- "\u01B9\x03\x02\x02\x02\u01BC\u01BE\x07f\x02\x02\u01BD\u01BC\x03\x02\x02" +
5857
- "\x02\u01BD\u01BE\x03\x02\x02\x02\u01BEE\x03\x02\x02\x02\u01BF\u01C0\x05" +
5858
- "\xBE`\x02\u01C0\u01C1\x079\x02\x02\u01C1\u01C2\x05\xBE`\x02\u01C2G\x03" +
5859
- "\x02\x02\x02\u01C3\u01CA\x05t;\x02\u01C4\u01C6\x07f\x02\x02\u01C5\u01C4" +
5860
- "\x03\x02\x02\x02\u01C5\u01C6\x03\x02\x02\x02\u01C6\u01C7\x03\x02\x02\x02" +
5861
- "\u01C7\u01C9\x05t;\x02\u01C8\u01C5\x03\x02\x02\x02\u01C9\u01CC\x03\x02" +
5862
- "\x02\x02\u01CA\u01C8\x03\x02\x02\x02\u01CA\u01CB\x03\x02\x02\x02\u01CB" +
5863
- "\u01CE\x03\x02\x02\x02\u01CC\u01CA\x03\x02\x02\x02\u01CD\u01CF\x07f\x02" +
5864
- "\x02\u01CE\u01CD\x03\x02\x02\x02\u01CE\u01CF\x03\x02\x02\x02\u01CFI\x03" +
5865
- "\x02\x02\x02\u01D0\u01D7\x05R*\x02\u01D1\u01D3\x07f\x02\x02\u01D2\u01D1" +
5866
- "\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02" +
5867
- "\u01D4\u01D6\x05R*\x02\u01D5\u01D2\x03\x02\x02\x02\u01D6\u01D9\x03\x02" +
5868
- "\x02\x02\u01D7\u01D5\x03\x02\x02\x02\u01D7\u01D8\x03\x02\x02\x02\u01D8" +
5869
- "\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01DA\u01DC\x07f\x02";
5870
- MalloyParser._serializedATNSegment1 = "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u01DC\x03\x02\x02\x02\u01DCK\x03" +
5871
- "\x02\x02\x02\u01DD\u01DE\x05N(\x02\u01DE\u01DF\x079\x02\x02\u01DF\u01E0" +
5872
- "\x05\xAAV\x02\u01E0M\x03\x02\x02\x02\u01E1\u01E2\x05\xA4S\x02\u01E2O\x03" +
5873
- "\x02\x02\x02\u01E3\u01E4\x05\xA4S\x02\u01E4Q\x03\x02\x02\x02\u01E5\u01E6" +
5874
- "\x05L\'\x02\u01E6S\x03\x02\x02\x02\u01E7\u01E8\x07\x07\x02\x02\u01E8\u01EF" +
5875
- "\x05L\'\x02\u01E9\u01EB\x07f\x02\x02\u01EA\u01E9\x03\x02\x02\x02\u01EA" +
5876
- "\u01EB\x03\x02\x02\x02\u01EB\u01EC\x03\x02\x02\x02\u01EC\u01EE\x05L\'" +
5877
- "\x02\u01ED\u01EA\x03\x02\x02\x02\u01EE\u01F1\x03\x02\x02\x02\u01EF\u01ED" +
5878
- "\x03\x02\x02\x02\u01EF\u01F0\x03\x02\x02\x02\u01F0\u01F3\x03\x02\x02\x02" +
5879
- "\u01F1\u01EF\x03\x02\x02\x02\u01F2\u01F4\x07f\x02\x02\u01F3\u01F2\x03" +
5880
- "\x02\x02\x02\u01F3\u01F4\x03\x02\x02\x02\u01F4U\x03\x02\x02\x02\u01F5" +
5729
+ "\t\t\x04\x02##--\x05\x0222QQ\x80\x81\x06\x02$$**<=KK\x07\x02%%++CCJJO" +
5730
+ "O\x04\x02hmuv\x03\x02\x81\x82\x04\x0222QQ\x04\x02\x7F\x7F\x83\x83\b\x02" +
5731
+ ",,77>?HISSVV\x04\x02 11\x05\x02pprrww\x03\x02no\x04\x02!!EE\x04\x02[" +
5732
+ "[ss\x04\x02GGee\x03\x02pq\x02\u042A\x02\xD6\x03\x02\x02\x02\x04\xDF\x03" +
5733
+ "\x02\x02\x02\x06\xE1\x03\x02\x02\x02\b\xE4\x03\x02\x02\x02\n\xEA\x03\x02" +
5734
+ "\x02\x02\f\xEC\x03\x02\x02\x02\x0E\xEE\x03\x02\x02\x02\x10\xF6\x03\x02" +
5735
+ "\x02\x02\x12\u0102\x03\x02\x02\x02\x14\u0104\x03\x02\x02\x02\x16\u010D" +
5736
+ "\x03\x02\x02\x02\x18\u0111\x03\x02\x02\x02\x1A\u0114\x03\x02\x02\x02\x1C" +
5737
+ "\u0116\x03\x02\x02\x02\x1E\u0123\x03\x02\x02\x02 \u0127\x03\x02\x02\x02" +
5738
+ "\"\u013B\x03\x02\x02\x02$\u013D\x03\x02\x02\x02&\u014C\x03\x02\x02\x02" +
5739
+ "(\u014E\x03\x02\x02\x02*\u0151\x03\x02\x02\x02,\u0160\x03\x02\x02\x02" +
5740
+ ".\u0162\x03\x02\x02\x020\u0167\x03\x02\x02\x022\u0169\x03\x02\x02\x02" +
5741
+ "4\u016B\x03\x02\x02\x026\u0178\x03\x02\x02\x028\u017C\x03\x02\x02\x02" +
5742
+ ":\u018F\x03\x02\x02\x02<\u0191\x03\x02\x02\x02>\u0193\x03\x02\x02\x02" +
5743
+ "@\u019F\x03\x02\x02\x02B\u01B0\x03\x02\x02\x02D\u01B2\x03\x02\x02\x02" +
5744
+ "F\u01BF\x03\x02\x02\x02H\u01C3\x03\x02\x02\x02J\u01D0\x03\x02\x02\x02" +
5745
+ "L\u01DD\x03\x02\x02\x02N\u01E1\x03\x02\x02\x02P\u01E3\x03\x02\x02\x02" +
5746
+ "R\u01E5\x03\x02\x02\x02T\u01E7\x03\x02\x02\x02V\u01FB\x03\x02\x02\x02" +
5747
+ "X\u01FD\x03\x02\x02\x02Z\u021B\x03\x02\x02\x02\\\u021D\x03\x02\x02\x02" +
5748
+ "^\u0221\x03\x02\x02\x02`\u0226\x03\x02\x02\x02b\u0228\x03\x02\x02\x02" +
5749
+ "d\u0233\x03\x02\x02\x02f\u0236\x03\x02\x02\x02h\u0239\x03\x02\x02\x02" +
5750
+ "j\u0246\x03\x02\x02\x02l\u0248\x03\x02\x02\x02n\u0259\x03\x02\x02\x02" +
5751
+ "p\u025B\x03\x02\x02\x02r\u025E\x03\x02\x02\x02t\u026B\x03\x02\x02\x02" +
5752
+ "v\u026F\x03\x02\x02\x02x\u0271\x03\x02\x02\x02z\u0274\x03\x02\x02\x02" +
5753
+ "|\u028C\x03\x02\x02\x02~\u028E\x03\x02\x02\x02\x80\u0291\x03\x02\x02\x02" +
5754
+ "\x82\u0294\x03\x02\x02\x02\x84\u0297\x03\x02\x02\x02\x86\u02A6\x03\x02" +
5755
+ "\x02\x02\x88\u02AB\x03\x02\x02\x02\x8A\u02B2\x03\x02\x02\x02\x8C\u02B4" +
5756
+ "\x03\x02\x02\x02\x8E\u02C0\x03\x02\x02\x02\x90\u02C2\x03\x02\x02\x02\x92" +
5757
+ "\u02CC\x03\x02\x02\x02\x94\u02D2\x03\x02\x02\x02\x96\u02D5\x03\x02\x02" +
5758
+ "\x02\x98\u02D7\x03\x02\x02\x02\x9A\u02D9\x03\x02\x02\x02\x9C\u02DB\x03" +
5759
+ "\x02\x02\x02\x9E\u02E4\x03\x02\x02\x02\xA0\u02ED\x03\x02\x02\x02\xA2\u02EF" +
5760
+ "\x03\x02\x02\x02\xA4\u02F1\x03\x02\x02\x02\xA6\u02F3\x03\x02\x02\x02\xA8" +
5761
+ "\u02F5\x03\x02\x02\x02\xAA\u0333\x03\x02\x02\x02\xAC\u0363\x03\x02\x02" +
5762
+ "\x02\xAE\u0368\x03\x02\x02\x02\xB0\u0370\x03\x02\x02\x02\xB2\u0377\x03" +
5763
+ "\x02\x02\x02\xB4\u0382\x03\x02\x02\x02\xB6\u038C\x03\x02\x02\x02\xB8\u03A1" +
5764
+ "\x03\x02\x02\x02\xBA\u03A3\x03\x02\x02\x02\xBC\u03AB\x03\x02\x02\x02\xBE" +
5765
+ "\u03AD\x03\x02\x02\x02\xC0\u03AF\x03\x02\x02\x02\xC2\u03B2\x03\x02\x02" +
5766
+ "\x02\xC4\u03BC\x03\x02\x02\x02\xC6\u03CB\x03\x02\x02\x02\xC8\u03CD\x03" +
5767
+ "\x02\x02\x02\xCA\u03DE\x03\x02\x02\x02\xCC\u03E0\x03\x02\x02\x02\xCE\u03E2" +
5768
+ "\x03\x02\x02\x02\xD0\u03E4\x03\x02\x02\x02\xD2\xD5\x05\x04\x03\x02\xD3" +
5769
+ "\xD5\x07t\x02\x02\xD4\xD2\x03\x02\x02\x02\xD4\xD3\x03\x02\x02\x02\xD5" +
5770
+ "\xD8\x03\x02\x02\x02\xD6\xD4\x03\x02\x02\x02\xD6\xD7\x03\x02\x02\x02\xD7" +
5771
+ "\xD9\x03\x02\x02\x02\xD8\xD6\x03\x02\x02\x02\xD9\xDA\x07\x02\x02\x03\xDA" +
5772
+ "\x03\x03\x02\x02\x02\xDB\xE0\x05\x06\x04\x02\xDC\xE0\x05\x0E\b\x02\xDD" +
5773
+ "\xE0\x05\n\x06\x02\xDE\xE0\x05\x18\r\x02\xDF\xDB\x03\x02\x02\x02\xDF\xDC" +
5774
+ "\x03\x02\x02\x02\xDF\xDD\x03\x02\x02\x02\xDF\xDE\x03\x02\x02\x02\xE0\x05" +
5775
+ "\x03\x02\x02\x02\xE1\xE2\x05\b\x05\x02\xE2\xE3\x054\x1B\x02\xE3\x07\x03" +
5776
+ "\x02\x02\x02\xE4\xE5\t\x02\x02\x02\xE5\t\x03\x02\x02\x02\xE6\xE7\x07\x17" +
5777
+ "\x02\x02\xE7\xEB\x05\x1C\x0F\x02\xE8\xE9\x07\x17\x02\x02\xE9\xEB\x05\f" +
5778
+ "\x07\x02\xEA\xE6\x03\x02\x02\x02\xEA\xE8\x03\x02\x02\x02\xEB\v\x03\x02" +
5779
+ "\x02\x02\xEC\xED\x05\"\x12\x02\xED\r\x03\x02\x02\x02\xEE\xF2\x07\x1C\x02" +
5780
+ "\x02\xEF\xF0\x05\xCEh\x02\xF0\xF1\x079\x02\x02\xF1\xF3\x03\x02\x02\x02" +
5781
+ "\xF2\xEF\x03\x02\x02\x02\xF2\xF3\x03\x02\x02\x02\xF3\xF4\x03\x02\x02\x02" +
5782
+ "\xF4\xF5\x05\x10\t\x02\xF5\x0F\x03\x02\x02\x02\xF6\xF8\x07b\x02\x02\xF7" +
5783
+ "\xF9\x05\x12\n\x02\xF8\xF7\x03\x02\x02\x02\xF9\xFA\x03\x02\x02\x02\xFA" +
5784
+ "\xF8\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\xFC\x03\x02\x02\x02\xFC" +
5785
+ "\xFD\x07c\x02\x02\xFD\x11\x03\x02\x02\x02\xFE\xFF\x07\x06\x02\x02\xFF" +
5786
+ "\u0103\x05\xD0i\x02\u0100\u0101\x07\x1A\x02\x02\u0101\u0103\x05\x14\v" +
5787
+ "\x02\u0102\xFE\x03\x02\x02\x02\u0102\u0100\x03\x02\x02\x02\u0103\x13\x03" +
5788
+ "\x02\x02\x02\u0104\u0108\x07\x87\x02\x02\u0105\u0107\x05\x16\f\x02\u0106" +
5789
+ "\u0105\x03\x02\x02\x02\u0107\u010A\x03\x02\x02\x02\u0108\u0106\x03\x02" +
5790
+ "\x02\x02\u0108\u0109\x03\x02\x02\x02\u0109\u010B\x03\x02\x02\x02\u010A" +
5791
+ "\u0108\x03\x02\x02\x02\u010B\u010C\x07\x8C\x02\x02\u010C\x15\x03\x02\x02" +
5792
+ "\x02\u010D\u010E\x07\x8B\x02\x02\u010E\u010F\x05\"\x12\x02\u010F\u0110" +
5793
+ "\x07\x88\x02\x02\u0110\x17\x03\x02\x02\x02\u0111\u0112\x078\x02\x02\u0112" +
5794
+ "\u0113\x05\x1A\x0E\x02\u0113\x19\x03\x02\x02\x02\u0114\u0115\x07\x03\x02" +
5795
+ "\x02\u0115\x1B\x03\x02\x02\x02\u0116\u011D\x05\x1E\x10\x02\u0117\u0119" +
5796
+ "\x07f\x02\x02\u0118\u0117\x03\x02\x02\x02\u0118\u0119\x03\x02\x02\x02" +
5797
+ "\u0119\u011A\x03\x02\x02\x02\u011A\u011C\x05\x1E\x10\x02\u011B\u0118\x03" +
5798
+ "\x02\x02\x02\u011C\u011F\x03\x02\x02\x02\u011D\u011B\x03\x02\x02\x02\u011D" +
5799
+ "\u011E\x03\x02\x02\x02\u011E\u0121\x03\x02\x02\x02\u011F\u011D\x03\x02" +
5800
+ "\x02\x02\u0120\u0122\x07f\x02\x02\u0121\u0120\x03\x02\x02\x02\u0121\u0122" +
5801
+ "\x03\x02\x02\x02\u0122\x1D\x03\x02\x02\x02\u0123\u0124\x052\x1A\x02\u0124" +
5802
+ "\u0125\x079\x02\x02\u0125\u0126\x05\"\x12\x02\u0126\x1F\x03\x02\x02\x02" +
5803
+ "\u0127\u0128\x07n\x02\x02\u0128!\x03\x02\x02\x02\u0129\u012A\x058\x1D" +
5804
+ "\x02\u012A\u012B\x07\\\x02\x02\u012B\u012C\x05$\x13\x02\u012C\u013C\x03" +
5805
+ "\x02\x02\x02\u012D\u012E\x07\\\x02\x02\u012E\u0133\x052\x1A\x02\u012F" +
5806
+ "\u0131\x05 \x11\x02\u0130\u012F\x03\x02\x02\x02\u0130\u0131\x03\x02\x02" +
5807
+ "\x02\u0131\u0132\x03\x02\x02\x02\u0132\u0134\x05,\x17\x02\u0133\u0130" +
5808
+ "\x03\x02\x02\x02\u0133\u0134\x03\x02\x02\x02\u0134\u0138\x03\x02\x02\x02" +
5809
+ "\u0135\u0137\x05(\x15\x02\u0136\u0135\x03\x02\x02\x02\u0137\u013A\x03" +
5810
+ "\x02\x02\x02\u0138\u0136\x03\x02\x02\x02\u0138\u0139\x03\x02\x02\x02\u0139" +
5811
+ "\u013C\x03\x02\x02\x02\u013A\u0138\x03\x02\x02\x02\u013B\u0129\x03\x02" +
5812
+ "\x02\x02\u013B\u012D\x03\x02\x02\x02\u013C#\x03\x02\x02\x02\u013D\u0141" +
5813
+ "\x05&\x14\x02\u013E\u0140\x05(\x15\x02\u013F\u013E\x03\x02\x02\x02\u0140" +
5814
+ "\u0143\x03\x02\x02\x02\u0141\u013F\x03\x02\x02\x02\u0141\u0142\x03\x02" +
5815
+ "\x02\x02\u0142%\x03\x02\x02\x02\u0143\u0141\x03\x02\x02\x02\u0144\u014D" +
5816
+ "\x05,\x17\x02\u0145\u014A\x050\x19\x02\u0146\u0148\x05 \x11\x02\u0147" +
5817
+ "\u0146\x03\x02\x02\x02\u0147\u0148\x03\x02\x02\x02\u0148\u0149\x03\x02" +
5818
+ "\x02\x02\u0149\u014B\x05,\x17\x02\u014A\u0147\x03\x02\x02\x02\u014A\u014B" +
5819
+ "\x03\x02\x02\x02\u014B\u014D\x03\x02\x02\x02\u014C\u0144\x03\x02\x02\x02" +
5820
+ "\u014C\u0145\x03\x02\x02\x02\u014D\'\x03\x02\x02\x02\u014E\u014F\x07\\" +
5821
+ "\x02\x02\u014F\u0150\x05,\x17\x02\u0150)\x03\x02\x02\x02\u0151\u0152\x07" +
5822
+ "L\x02\x02\u0152\u0153\x07^\x02\x02\u0153\u0154\x05\xA2R\x02\u0154\u0155" +
5823
+ "\x07_\x02\x02\u0155+\x03\x02\x02\x02\u0156\u0161\x05.\x18\x02\u0157\u015C" +
5824
+ "\x07b\x02\x02\u0158\u015B\x05n8\x02\u0159\u015B\x07t\x02\x02\u015A\u0158" +
5825
+ "\x03\x02\x02\x02\u015A\u0159\x03\x02\x02\x02\u015B\u015E\x03\x02\x02\x02" +
5826
+ "\u015C\u015A\x03\x02\x02\x02\u015C\u015D\x03\x02\x02\x02\u015D\u015F\x03" +
5827
+ "\x02\x02\x02\u015E\u015C\x03\x02\x02\x02\u015F\u0161\x07c\x02\x02\u0160" +
5828
+ "\u0156\x03\x02\x02\x02\u0160\u0157\x03\x02\x02\x02\u0161-\x03\x02\x02" +
5829
+ "\x02\u0162\u0163\x07b\x02\x02\u0163\u0164\x07G\x02\x02\u0164\u0165\x05" +
5830
+ "\xAAV\x02\u0165\u0166\x07c\x02\x02\u0166/\x03\x02\x02\x02\u0167\u0168" +
5831
+ "\x05\xA4S\x02\u01681\x03\x02\x02\x02\u0169\u016A\x05\xA4S\x02\u016A3\x03" +
5832
+ "\x02\x02\x02\u016B\u0172\x056\x1C\x02\u016C\u016E\x07f\x02\x02\u016D\u016C" +
5833
+ "\x03\x02\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E\u016F\x03\x02\x02\x02" +
5834
+ "\u016F\u0171\x056\x1C\x02\u0170\u016D\x03\x02\x02\x02\u0171\u0174\x03" +
5835
+ "\x02\x02\x02\u0172\u0170\x03\x02\x02\x02\u0172\u0173\x03\x02\x02\x02\u0173" +
5836
+ "\u0176\x03\x02\x02\x02\u0174\u0172\x03\x02\x02\x02\u0175\u0177\x07f\x02" +
5837
+ "\x02\u0176\u0175\x03\x02\x02\x02\u0176\u0177\x03\x02\x02\x02\u01775\x03" +
5838
+ "\x02\x02\x02\u0178\u0179\x05<\x1F\x02\u0179\u017A\x079\x02\x02\u017A\u017B" +
5839
+ "\x058\x1D\x02\u017B7\x03\x02\x02\x02\u017C\u0181\x05:\x1E\x02\u017D\u017F" +
5840
+ "\x05 \x11\x02\u017E\u017D\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02" +
5841
+ "\u017F\u0180\x03\x02\x02\x02\u0180\u0182\x05@!\x02\u0181\u017E\x03\x02" +
5842
+ "\x02\x02\u0181\u0182\x03\x02\x02\x02\u01829\x03\x02\x02\x02\u0183\u0190" +
5843
+ "\x05> \x02\u0184\u0190\x05*\x16\x02\u0185\u0186\x074\x02\x02\u0186\u0187" +
5844
+ "\x07^\x02\x02\u0187\u0188\x05\"\x12\x02\u0188\u0189\x07_\x02\x02\u0189" +
5845
+ "\u0190\x03\x02\x02\x02\u018A\u018B\x075\x02\x02\u018B\u018C\x07^\x02\x02" +
5846
+ "\u018C\u018D\x05\xCCg\x02\u018D\u018E\x07_\x02\x02\u018E\u0190\x03\x02" +
5847
+ "\x02\x02\u018F\u0183\x03\x02\x02\x02\u018F\u0184\x03\x02\x02\x02\u018F" +
5848
+ "\u0185\x03\x02\x02\x02\u018F\u018A\x03\x02\x02\x02\u0190;\x03\x02\x02" +
5849
+ "\x02\u0191\u0192\x05\xA4S\x02\u0192=\x03\x02\x02\x02\u0193\u0194\x05\xA4" +
5850
+ "S\x02\u0194?\x03\x02\x02\x02\u0195\u019A\x07b\x02\x02\u0196\u0199\x05" +
5851
+ "B\"\x02\u0197\u0199\x07t\x02\x02\u0198\u0196\x03\x02\x02\x02\u0198\u0197" +
5852
+ "\x03\x02\x02\x02\u0199\u019C\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02" +
5853
+ "\u019A\u019B\x03\x02\x02\x02\u019B\u019D\x03\x02\x02\x02\u019C\u019A\x03" +
5854
+ "\x02\x02\x02\u019D\u01A0\x07c\x02\x02\u019E\u01A0\x05.\x18\x02\u019F\u0195" +
5855
+ "\x03\x02\x02\x02\u019F\u019E\x03\x02\x02\x02\u01A0A\x03\x02\x02\x02\u01A1" +
5856
+ "\u01A2\x07\b\x02\x02\u01A2\u01B1\x05H%\x02\u01A3\u01A4\x07\x12\x02\x02" +
5857
+ "\u01A4\u01B1\x05J&\x02\u01A5\u01B1\x05T+\x02\u01A6\u01B1\x05V,\x02\u01A7" +
5858
+ "\u01B1\x05d3\x02\u01A8\u01A9\x07\x15\x02\x02\u01A9\u01B1\x05\xBE`\x02" +
5859
+ "\u01AA\u01AB\x07\x18\x02\x02\u01AB\u01B1\x05D#\x02\u01AC\u01AD\t\x03\x02" +
5860
+ "\x02\u01AD\u01B1\x05\xB4[\x02\u01AE\u01AF\x07\x17\x02\x02\u01AF\u01B1" +
5861
+ "\x05h5\x02\u01B0\u01A1\x03\x02\x02\x02\u01B0\u01A3\x03\x02\x02\x02\u01B0" +
5862
+ "\u01A5\x03\x02\x02\x02\u01B0\u01A6\x03\x02\x02\x02\u01B0\u01A7\x03\x02" +
5863
+ "\x02\x02\u01B0\u01A8\x03\x02\x02\x02\u01B0\u01AA\x03\x02\x02\x02\u01B0" +
5864
+ "\u01AC\x03\x02\x02\x02\u01B0\u01AE\x03\x02\x02\x02\u01B1C\x03\x02\x02" +
5865
+ "\x02\u01B2\u01B9\x05F$\x02\u01B3\u01B5\x07f\x02\x02\u01B4\u01B3\x03\x02" +
5866
+ "\x02\x02\u01B4\u01B5\x03\x02\x02\x02\u01B5\u01B6\x03\x02\x02\x02\u01B6" +
5867
+ "\u01B8\x05F$\x02\u01B7\u01B4\x03\x02\x02\x02\u01B8\u01BB\x03\x02\x02\x02" +
5868
+ "\u01B9\u01B7\x03\x02\x02\x02\u01B9\u01BA\x03\x02\x02\x02\u01BA\u01BD\x03" +
5869
+ "\x02\x02\x02\u01BB\u01B9\x03\x02\x02\x02\u01BC\u01BE\x07f\x02\x02\u01BD" +
5870
+ "\u01BC\x03\x02\x02\x02\u01BD\u01BE\x03\x02\x02\x02\u01BEE\x03\x02\x02" +
5871
+ "\x02\u01BF\u01C0\x05\xBE`\x02\u01C0\u01C1\x079\x02\x02\u01C1\u01C2\x05" +
5872
+ "\xBE`\x02\u01C2G\x03\x02\x02\x02\u01C3\u01CA\x05t;\x02\u01C4\u01C6\x07" +
5873
+ "f\x02\x02\u01C5\u01C4\x03\x02\x02\x02\u01C5\u01C6\x03\x02\x02\x02\u01C6" +
5874
+ "\u01C7\x03\x02\x02\x02\u01C7\u01C9\x05t;\x02\u01C8\u01C5\x03\x02\x02\x02" +
5875
+ "\u01C9\u01CC\x03\x02\x02\x02\u01CA\u01C8\x03\x02\x02\x02\u01CA\u01CB\x03" +
5876
+ "\x02\x02\x02\u01CB\u01CE\x03\x02\x02\x02\u01CC\u01CA\x03\x02\x02\x02\u01CD" +
5877
+ "\u01CF\x07f\x02\x02\u01CE\u01CD\x03\x02\x02\x02\u01CE\u01CF\x03\x02\x02" +
5878
+ "\x02\u01CFI\x03\x02\x02\x02\u01D0\u01D7\x05R*\x02\u01D1\u01D3\x07f\x02" +
5879
+ "\x02\u01D2\u01D1\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D4" +
5880
+ "\x03\x02\x02\x02\u01D4\u01D6\x05R*\x02\u01D5\u01D2\x03\x02\x02\x02\u01D6" +
5881
+ "\u01D9\x03\x02\x02\x02\u01D7\u01D5\x03\x02\x02\x02\u01D7\u01D8\x03\x02" +
5882
+ "\x02\x02\u01D8\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01DA" +
5883
+ "\u01DC\x07";
5884
+ MalloyParser._serializedATNSegment1 = "f\x02\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u01DC\x03\x02\x02\x02\u01DC" +
5885
+ "K\x03\x02\x02\x02\u01DD\u01DE\x05N(\x02\u01DE\u01DF\x079\x02\x02\u01DF" +
5886
+ "\u01E0\x05\xAAV\x02\u01E0M\x03\x02\x02\x02\u01E1\u01E2\x05\xA4S\x02\u01E2" +
5887
+ "O\x03\x02\x02\x02\u01E3\u01E4\x05\xA4S\x02\u01E4Q\x03\x02\x02\x02\u01E5" +
5888
+ "\u01E6\x05L\'\x02\u01E6S\x03\x02\x02\x02\u01E7\u01E8\x07\x07\x02\x02\u01E8" +
5889
+ "\u01EF\x05L\'\x02\u01E9\u01EB\x07f\x02\x02\u01EA\u01E9\x03\x02\x02\x02" +
5890
+ "\u01EA\u01EB\x03\x02\x02\x02\u01EB\u01EC\x03\x02\x02\x02\u01EC\u01EE\x05" +
5891
+ "L\'\x02\u01ED\u01EA\x03\x02\x02\x02\u01EE\u01F1\x03\x02\x02\x02\u01EF" +
5892
+ "\u01ED\x03\x02\x02\x02\u01EF\u01F0\x03\x02\x02\x02\u01F0\u01F3\x03\x02" +
5893
+ "\x02\x02\u01F1\u01EF\x03\x02\x02\x02\u01F2\u01F4\x07f\x02\x02\u01F3\u01F2" +
5894
+ "\x03\x02\x02\x02\u01F3\u01F4\x03\x02\x02\x02\u01F4U\x03\x02\x02\x02\u01F5" +
5881
5895
  "\u01F6\x07\x0F\x02\x02\u01F6\u01FC\x05X-\x02\u01F7\u01F8\x07\x10\x02\x02" +
5882
5896
  "\u01F8\u01FC\x05X-\x02\u01F9\u01FA\x07\x0E\x02\x02\u01FA\u01FC\x05X-\x02" +
5883
5897
  "\u01FB\u01F5\x03\x02\x02\x02\u01FB\u01F7\x03\x02\x02\x02\u01FB\u01F9\x03" +
@@ -5957,14 +5971,14 @@ MalloyParser._serializedATNSegment1 = "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u0
5957
5971
  "\x03\x02\x02\x02\u029E\u029F\x03\x02\x02\x02\u029F\u02A2\x03\x02\x02\x02" +
5958
5972
  "\u02A0\u029E\x03\x02\x02\x02\u02A1\u02A3\x07f\x02\x02\u02A2\u02A1\x03" +
5959
5973
  "\x02\x02\x02\u02A2\u02A3\x03\x02\x02\x02\u02A3\x85\x03\x02\x02\x02\u02A4" +
5960
- "\u02A7\x07\x80\x02\x02\u02A5\u02A7\x05\xBE`\x02\u02A6\u02A4\x03\x02\x02" +
5974
+ "\u02A7\x07\x81\x02\x02\u02A5\u02A7\x05\xBE`\x02\u02A6\u02A4\x03\x02\x02" +
5961
5975
  "\x02\u02A6\u02A5\x03\x02\x02\x02\u02A7\u02A9\x03\x02\x02\x02\u02A8\u02AA" +
5962
5976
  "\t\x04\x02\x02\u02A9\u02A8\x03\x02\x02\x02\u02A9\u02AA\x03\x02\x02\x02" +
5963
5977
  "\u02AA\x87\x03\x02\x02\x02\u02AB\u02AC\x07\x11\x02\x02\u02AC\u02AD\x07" +
5964
- "\x80\x02\x02\u02AD\x89\x03\x02\x02\x02\u02AE\u02AF\x07&\x02\x02\u02AF" +
5978
+ "\x81\x02\x02\u02AD\x89\x03\x02\x02\x02\u02AE\u02AF\x07&\x02\x02\u02AF" +
5965
5979
  "\u02B3\x05\xBE`\x02\u02B0\u02B1\x07&\x02\x02\u02B1\u02B3\x05\xAAV\x02" +
5966
5980
  "\u02B2\u02AE\x03\x02\x02\x02\u02B2\u02B0\x03\x02\x02\x02\u02B3\x8B\x03" +
5967
- "\x02\x02\x02\u02B4\u02B5\x07\x1E\x02\x02\u02B5\u02B7\x07\x80\x02\x02\u02B6" +
5981
+ "\x02\x02\x02\u02B4\u02B5\x07\x1E\x02\x02\u02B5\u02B7\x07\x81\x02\x02\u02B6" +
5968
5982
  "\u02B8\x05\x8AF\x02\u02B7\u02B6\x03\x02\x02\x02\u02B7\u02B8\x03\x02\x02" +
5969
5983
  "\x02\u02B8\x8D\x03\x02\x02\x02\u02B9\u02BC\x05\xBA^\x02\u02BA\u02BB\x07" +
5970
5984
  "g\x02\x02\u02BB\u02BD\x07p\x02\x02\u02BC\u02BA\x03\x02\x02\x02\u02BC\u02BD" +
@@ -5987,133 +6001,134 @@ MalloyParser._serializedATNSegment1 = "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u0
5987
6001
  "\x07Y\x02\x02\u02E3\u02E5\x07A\x02\x02\u02E4\u02DD\x03\x02\x02\x02\u02E4" +
5988
6002
  "\u02DE\x03\x02\x02\x02\u02E4\u02DF\x03\x02\x02\x02\u02E4\u02E0\x03\x02" +
5989
6003
  "\x02\x02\u02E4\u02E1\x03\x02\x02\x02\u02E4\u02E2\x03\x02\x02\x02\u02E4" +
5990
- "\u02E3\x03\x02\x02\x02\u02E5\x9F\x03\x02\x02\x02\u02E6\u02ED\x07x\x02" +
5991
- "\x02\u02E7\u02ED\x07y\x02\x02\u02E8\u02ED\x07|\x02\x02\u02E9\u02ED\x07" +
5992
- "{\x02\x02\u02EA\u02ED\x07z\x02\x02\u02EB\u02ED\x07}\x02\x02\u02EC\u02E6" +
5993
- "\x03\x02\x02\x02\u02EC\u02E7\x03\x02\x02\x02\u02EC\u02E8\x03\x02\x02\x02" +
5994
- "\u02EC\u02E9\x03\x02\x02\x02\u02EC\u02EA\x03\x02\x02\x02\u02EC\u02EB\x03" +
5995
- "\x02\x02\x02\u02ED\xA1\x03\x02\x02\x02\u02EE\u02EF\x07Z\x02\x02\u02EF" +
5996
- "\xA3\x03\x02\x02\x02\u02F0\u02F1\t\v\x02\x02\u02F1\xA5\x03\x02\x02\x02" +
5997
- "\u02F2\u02F3\t\f\x02\x02\u02F3\xA7\x03\x02\x02\x02\u02F4\u02F5\t\r\x02" +
5998
- "\x02\u02F5\xA9\x03\x02\x02\x02\u02F6\u02F7\bV\x01\x02\u02F7\u0333\x05" +
5999
- "\xBA^\x02\u02F8\u0333\x05\x9EP\x02\u02F9\u02FA\x07o\x02\x02\u02FA\u0333" +
6000
- "\x05\xAAV\x16\u02FB\u02FC\x07@\x02\x02\u02FC\u0333\x05\xAAV\v\u02FD\u02FE" +
6001
- "\x07(\x02\x02\u02FE\u02FF\x07^\x02\x02\u02FF\u0300\x05\xAAV\x02\u0300" +
6002
- "\u0301\x07\"\x02\x02\u0301\u0302\x05\x9AN\x02\u0302\u0303\x07_\x02\x02" +
6003
- "\u0303\u0333\x03\x02\x02\x02\u0304\u0305\x07*\x02\x02\u0305\u0306\x07" +
6004
- "^\x02\x02\u0306\u0307\x07.\x02\x02\u0307\u0308\x05\xAAV\x02\u0308\u0309" +
6005
- "\x07_\x02\x02\u0309\u0333\x03\x02\x02\x02\u030A\u030B\x05\xBA^\x02\u030B" +
6006
- "\u030C\x07g\x02\x02\u030C\u030E\x03\x02\x02\x02\u030D\u030A\x03\x02\x02" +
6007
- "\x02\u030D\u030E\x03\x02\x02\x02\u030E\u030F\x03\x02\x02\x02\u030F\u0310" +
6008
- "\x05\x98M\x02\u0310\u0313\x07^\x02\x02\u0311\u0314\x05\xAAV\x02\u0312" +
6009
- "\u0314\x07p\x02\x02\u0313\u0311\x03\x02\x02\x02\u0313\u0312\x03\x02\x02" +
6010
- "\x02\u0313\u0314\x03\x02\x02\x02\u0314\u0315\x03\x02\x02\x02\u0315\u0316" +
6011
- "\x07_\x02\x02\u0316\u0333\x03\x02\x02\x02\u0317\u0318\x07^\x02\x02\u0318" +
6012
- "\u0319\x05\xACW\x02\u0319\u031A\x07_\x02\x02\u031A\u0333\x03\x02\x02\x02" +
6013
- "\u031B\u031E\x05\xA4S\x02\u031C\u031E\x05\xA6T\x02\u031D\u031B\x03\x02" +
6014
- "\x02\x02\u031D\u031C\x03\x02\x02\x02\u031E\u031F\x03\x02\x02\x02\u031F" +
6015
- "\u0321\x07^\x02\x02\u0320\u0322\x05\xB2Z\x02\u0321\u0320\x03\x02\x02\x02" +
6016
- "\u0321\u0322\x03\x02\x02\x02\u0322\u0323\x03\x02\x02\x02\u0323\u0324\x07" +
6017
- "_\x02\x02\u0324\u0333\x03\x02\x02\x02\u0325\u0333\x05\xAEX\x02\u0326\u0327" +
6018
- "\x05\xA8U\x02\u0327\u0328\x07^\x02\x02\u0328\u032D\x05\xAAV\x02\u0329" +
6019
- "\u032A\x07f\x02\x02\u032A\u032C\x05\xBE`\x02\u032B\u0329\x03\x02\x02\x02" +
6020
- "\u032C\u032F\x03\x02\x02\x02\u032D\u032B\x03\x02\x02\x02\u032D\u032E\x03" +
6021
- "\x02\x02\x02\u032E\u0330\x03\x02\x02\x02\u032F\u032D\x03\x02\x02\x02\u0330" +
6022
- "\u0331\x07_\x02\x02\u0331\u0333\x03\x02\x02\x02\u0332\u02F6\x03\x02\x02" +
6023
- "\x02\u0332\u02F8\x03\x02\x02\x02\u0332\u02F9\x03\x02\x02\x02\u0332\u02FB" +
6024
- "\x03\x02\x02\x02\u0332\u02FD\x03\x02\x02\x02\u0332\u0304\x03\x02\x02\x02" +
6025
- "\u0332\u030D\x03\x02\x02\x02\u0332\u0317\x03\x02\x02\x02\u0332\u031D\x03" +
6026
- "\x02\x02\x02\u0332\u0325\x03\x02\x02\x02\u0332\u0326\x03\x02\x02\x02\u0333" +
6027
- "\u035E\x03\x02\x02\x02\u0334\u0335\f\x12\x02\x02\u0335\u0336\t\x0E\x02" +
6028
- "\x02\u0336\u035D\x05\xAAV\x13\u0337\u0338\f\x11\x02\x02\u0338\u0339\t" +
6029
- "\x0F\x02\x02\u0339\u035D\x05\xAAV\x12\u033A\u033B\f\x10\x02\x02\u033B" +
6030
- "\u033C\x07P\x02\x02\u033C\u035D\x05\xAAV\x11\u033D\u033E\f\r\x02\x02\u033E" +
6031
- "\u033F\x05\x9CO\x02\u033F\u0340\x05\xAAV\x0E\u0340\u035D\x03\x02\x02\x02" +
6032
- "\u0341\u0342\f\n\x02\x02\u0342\u0343\t\x10\x02\x02\u0343\u035D\x05\xAA" +
6033
- "V\v\u0344\u0345\f\x18\x02\x02\u0345\u0346\x07b\x02\x02\u0346\u0347\x05" +
6034
- "`1\x02\u0347\u0348\x07c\x02\x02\u0348\u035D\x03\x02\x02\x02\u0349\u034A" +
6035
- "\f\x15\x02\x02\u034A\u035D\x05\xA6T\x02\u034B\u034C\f\x14\x02\x02\u034C" +
6036
- "\u034D\x07g\x02\x02\u034D\u035D\x05\xA6T\x02\u034E\u034F\f\x13\x02\x02" +
6037
- "\u034F\u0350\x07d\x02\x02\u0350\u035D\x05\x9AN\x02\u0351\u0352\f\x0F\x02" +
6038
- "\x02\u0352\u0353\x073\x02\x02\u0353\u0354\x05\xAAV\x02\u0354\u0355\x05" +
6039
- "\xA6T\x02\u0355\u035D\x03\x02\x02\x02\u0356\u0357\f\x0E\x02\x02\u0357" +
6040
- "\u0358\t\x11\x02\x02\u0358\u035D\x05\xACW\x02\u0359\u035A\f\f\x02\x02" +
6041
- "\u035A\u035B\t\x12\x02\x02\u035B\u035D\x05\xACW\x02\u035C\u0334\x03\x02" +
6042
- "\x02\x02\u035C\u0337\x03\x02\x02\x02\u035C\u033A\x03\x02\x02\x02\u035C" +
6043
- "\u033D\x03\x02\x02\x02\u035C\u0341\x03\x02\x02\x02\u035C\u0344\x03\x02" +
6044
- "\x02\x02\u035C\u0349\x03\x02\x02\x02\u035C\u034B\x03\x02\x02\x02\u035C" +
6045
- "\u034E\x03\x02\x02\x02\u035C\u0351\x03\x02\x02\x02\u035C\u0356\x03\x02" +
6046
- "\x02\x02\u035C\u0359\x03\x02\x02\x02\u035D\u0360\x03\x02\x02\x02\u035E" +
6047
- "\u035C\x03\x02\x02\x02\u035E\u035F\x03\x02\x02\x02\u035F\xAB\x03\x02\x02" +
6048
- "\x02\u0360\u035E\x03\x02\x02\x02\u0361\u0363\x05\x9CO\x02\u0362\u0361" +
6049
- "\x03\x02\x02\x02\u0362\u0363\x03\x02\x02\x02\u0363\u0364\x03\x02\x02\x02" +
6050
- "\u0364\u0365\x05\xAAV\x02\u0365\xAD\x03\x02\x02\x02\u0366\u0368\x05\xB0" +
6051
- "Y\x02\u0367\u0366\x03\x02\x02\x02\u0368\u0369\x03\x02\x02\x02\u0369\u0367" +
6052
- "\x03\x02\x02\x02\u0369\u036A\x03\x02\x02\x02\u036A\u036D\x03\x02\x02\x02" +
6053
- "\u036B\u036C\x07/\x02\x02\u036C\u036E\x05\xAAV\x02\u036D\u036B\x03\x02" +
6054
- "\x02\x02\u036D\u036E\x03\x02\x02\x02\u036E\xAF\x03\x02\x02\x02\u036F\u0371" +
6055
- "\x07F\x02\x02\u0370\u0372\x05\xAAV\x02\u0371\u0370\x03\x02\x02\x02\u0371" +
6056
- "\u0372\x03\x02\x02\x02\u0372\u0373\x03\x02\x02\x02\u0373\u0374\x07T\x02" +
6057
- "\x02\u0374\u0375\x05\xACW\x02\u0375\xB1\x03\x02\x02\x02\u0376\u037B\x05" +
6058
- "\xAAV\x02\u0377\u0378\x07f\x02\x02\u0378\u037A\x05\xAAV\x02\u0379\u0377" +
6059
- "\x03\x02\x02\x02\u037A\u037D\x03\x02\x02\x02\u037B\u0379\x03\x02\x02\x02" +
6060
- "\u037B\u037C\x03\x02\x02\x02\u037C\u037F\x03\x02\x02\x02\u037D\u037B\x03" +
6061
- "\x02\x02\x02\u037E\u0380\x07f\x02\x02\u037F\u037E\x03\x02\x02\x02\u037F" +
6062
- "\u0380\x03\x02\x02\x02\u0380\xB3\x03\x02\x02\x02\u0381\u0388\x05\xBE`" +
6063
- "\x02\u0382\u0384\x07f\x02\x02\u0383\u0382\x03\x02\x02\x02\u0383\u0384" +
6064
- "\x03\x02\x02\x02\u0384\u0385\x03\x02\x02\x02\u0385\u0387\x05\xBE`\x02" +
6065
- "\u0386\u0383\x03\x02\x02\x02\u0387\u038A\x03\x02\x02\x02\u0388\u0386\x03" +
6066
- "\x02\x02\x02\u0388\u0389\x03\x02\x02\x02\u0389\xB5\x03\x02\x02\x02\u038A" +
6067
- "\u0388\x03\x02\x02\x02\u038B\u0392\x05\xB8]\x02\u038C\u038E\x07f\x02\x02" +
6068
- "\u038D\u038C\x03\x02\x02\x02\u038D\u038E\x03\x02\x02\x02\u038E\u038F\x03" +
6069
- "\x02\x02\x02\u038F\u0391\x05\xB8]\x02\u0390\u038D\x03\x02\x02\x02\u0391" +
6070
- "\u0394\x03\x02\x02\x02\u0392\u0390\x03\x02\x02\x02\u0392\u0393\x03\x02" +
6071
- "\x02\x02\u0393\u0396\x03\x02\x02\x02\u0394\u0392\x03\x02\x02\x02\u0395" +
6072
- "\u0397\x07f\x02\x02\u0396\u0395\x03\x02\x02\x02\u0396\u0397\x03\x02\x02" +
6073
- "\x02\u0397\xB7\x03\x02\x02\x02\u0398\u03A1\x05\xBA^\x02\u0399\u039A\x05" +
6074
- "\xBA^\x02\u039A\u039B\x07g\x02\x02\u039B\u039D\x03\x02\x02\x02\u039C\u0399" +
6075
- "\x03\x02\x02\x02\u039C\u039D\x03\x02\x02\x02\u039D\u039E\x03\x02\x02\x02" +
6076
- "\u039E\u03A1\t\x13\x02\x02\u039F\u03A1\x05L\'\x02\u03A0\u0398\x03\x02" +
6077
- "\x02\x02\u03A0\u039C\x03\x02\x02\x02\u03A0\u039F\x03\x02\x02\x02\u03A1" +
6078
- "\xB9\x03\x02\x02\x02\u03A2\u03A7\x05\xBE`\x02\u03A3\u03A4\x07g\x02\x02" +
6079
- "\u03A4\u03A6\x05\xBE`\x02\u03A5\u03A3\x03\x02\x02\x02\u03A6\u03A9\x03" +
6080
- "\x02\x02\x02\u03A7\u03A5\x03\x02\x02\x02\u03A7\u03A8\x03\x02\x02\x02\u03A8" +
6081
- "\xBB\x03\x02\x02\x02\u03A9\u03A7\x03\x02\x02\x02\u03AA\u03AB\x05\xA4S" +
6082
- "\x02\u03AB\xBD\x03\x02\x02\x02\u03AC\u03AD\x05\xA4S\x02\u03AD\xBF\x03" +
6083
- "\x02\x02\x02\u03AE\u03AF\x05\xAAV\x02\u03AF\u03B0\x07\x02\x02\x03\u03B0" +
6084
- "\xC1\x03\x02\x02\x02\u03B1\u03B2\x05\xC4c\x02\u03B2\xC3\x03\x02\x02\x02" +
6085
- "\u03B3\u03BC\x07\x03\x02\x02\u03B4\u03BC\x07\x80\x02\x02\u03B5\u03BC\x07" +
6086
- "\x81\x02\x02\u03B6\u03BC\x05\xC6d\x02\u03B7\u03BC\x05\xCAf\x02\u03B8\u03BC" +
6087
- "\x07Q\x02\x02\u03B9\u03BC\x072\x02\x02\u03BA\u03BC\x07B\x02\x02\u03BB" +
6088
- "\u03B3\x03\x02\x02\x02\u03BB\u03B4\x03\x02\x02\x02\u03BB\u03B5\x03\x02" +
6089
- "\x02\x02\u03BB\u03B6\x03\x02\x02\x02\u03BB\u03B7\x03\x02\x02\x02\u03BB" +
6090
- "\u03B8\x03\x02\x02\x02\u03BB\u03B9\x03\x02\x02\x02\u03BB\u03BA\x03\x02" +
6091
- "\x02\x02\u03BC\xC5\x03\x02\x02\x02\u03BD\u03BE\x07b\x02\x02\u03BE\u03C3" +
6092
- "\x05\xC8e\x02\u03BF\u03C0\x07f\x02\x02\u03C0\u03C2\x05\xC8e\x02\u03C1" +
6093
- "\u03BF\x03\x02\x02\x02\u03C2\u03C5\x03\x02\x02\x02\u03C3\u03C1\x03\x02" +
6094
- "\x02\x02\u03C3\u03C4\x03\x02\x02\x02\u03C4\u03C6\x03\x02\x02\x02\u03C5" +
6095
- "\u03C3\x03\x02\x02\x02\u03C6\u03C7\x07c\x02\x02\u03C7\u03CB\x03\x02\x02" +
6096
- "\x02\u03C8\u03C9\x07b\x02\x02\u03C9\u03CB\x07c\x02\x02\u03CA\u03BD\x03" +
6097
- "\x02\x02\x02\u03CA\u03C8\x03\x02\x02\x02\u03CB\xC7\x03\x02\x02\x02\u03CC" +
6098
- "\u03CD\x07\x03\x02\x02\u03CD\u03CE\x07e\x02\x02\u03CE\u03CF\x05\xC4c\x02" +
6099
- "\u03CF\xC9\x03\x02\x02\x02\u03D0\u03D1\x07`\x02\x02\u03D1\u03D6\x05\xC4" +
6100
- "c\x02\u03D2\u03D3\x07f\x02\x02\u03D3\u03D5\x05\xC4c\x02\u03D4\u03D2\x03" +
6101
- "\x02\x02\x02\u03D5\u03D8\x03\x02\x02\x02\u03D6\u03D4\x03\x02\x02\x02\u03D6" +
6102
- "\u03D7\x03\x02\x02\x02\u03D7\u03D9\x03\x02\x02\x02\u03D8\u03D6\x03\x02" +
6103
- "\x02\x02\u03D9\u03DA\x07a\x02\x02\u03DA\u03DE\x03\x02\x02\x02\u03DB\u03DC" +
6104
- "\x07`\x02\x02\u03DC\u03DE\x07a\x02\x02\u03DD\u03D0\x03\x02\x02\x02\u03DD" +
6105
- "\u03DB\x03\x02\x02\x02\u03DE\xCB\x03\x02\x02\x02\u03DF\u03E0\x05\xA4S" +
6106
- "\x02\u03E0\xCD\x03\x02\x02\x02\u03E1\u03E2\x05\xA4S\x02\u03E2\xCF\x03" +
6107
- "\x02\x02\x02\u03E3\u03E4\x07\x03\x02\x02\u03E4\xD1\x03\x02\x02\x02q\xD4" +
6108
- "\xD6\xDF\xEA\xF2\xFA\u0102\u0108\u0118\u011D\u0121\u0130\u0133\u0138\u013B" +
6109
- "\u0141\u0147\u014A\u014C\u015A\u015C\u0160\u016D\u0172\u0176\u017E\u0181" +
6110
- "\u018F\u0198\u019A\u019F\u01B0\u01B4\u01B9\u01BD\u01C5\u01CA\u01CE\u01D2" +
6111
- "\u01D7\u01DB\u01EA\u01EF\u01F3\u01FB\u01FF\u0204\u0208\u020D\u0215\u0219" +
6112
- "\u021B\u0221\u0226\u022D\u0231\u023B\u0240\u0244\u0259\u0260\u0265\u0269" +
6113
- "\u026F\u0276\u027B\u027F\u0283\u0286\u028C\u0299\u029E\u02A2\u02A6\u02A9" +
6114
- "\u02B2\u02B7\u02BC\u02C0\u02C4\u02C9\u02D0\u02E4\u02EC\u030D\u0313\u031D" +
6115
- "\u0321\u032D\u0332\u035C\u035E\u0362\u0369\u036D\u0371\u037B\u037F\u0383" +
6116
- "\u0388\u038D\u0392\u0396\u039C\u03A0\u03A7\u03BB\u03C3\u03CA\u03D6\u03DD";
6004
+ "\u02E3\x03\x02\x02\x02\u02E5\x9F\x03\x02\x02\x02\u02E6\u02EE\x07x\x02" +
6005
+ "\x02\u02E7\u02EE\x07y\x02\x02\u02E8\u02EE\x07z\x02\x02\u02E9\u02EE\x07" +
6006
+ "}\x02\x02\u02EA\u02EE\x07|\x02\x02\u02EB\u02EE\x07{\x02\x02\u02EC\u02EE" +
6007
+ "\x07~\x02\x02\u02ED\u02E6\x03\x02\x02\x02\u02ED\u02E7\x03\x02\x02\x02" +
6008
+ "\u02ED\u02E8\x03\x02\x02\x02\u02ED\u02E9\x03\x02\x02\x02\u02ED\u02EA\x03" +
6009
+ "\x02\x02\x02\u02ED\u02EB\x03\x02\x02\x02\u02ED\u02EC\x03\x02\x02\x02\u02EE" +
6010
+ "\xA1\x03\x02\x02\x02\u02EF\u02F0\x07Z\x02\x02\u02F0\xA3\x03\x02\x02\x02" +
6011
+ "\u02F1\u02F2\t\v\x02\x02\u02F2\xA5\x03\x02\x02\x02\u02F3\u02F4\t\f\x02" +
6012
+ "\x02\u02F4\xA7\x03\x02\x02\x02\u02F5\u02F6\t\r\x02\x02\u02F6\xA9\x03\x02" +
6013
+ "\x02\x02\u02F7\u02F8\bV\x01\x02\u02F8\u0334\x05\xBA^\x02\u02F9\u0334\x05" +
6014
+ "\x9EP\x02\u02FA\u02FB\x07o\x02\x02\u02FB\u0334\x05\xAAV\x16\u02FC\u02FD" +
6015
+ "\x07@\x02\x02\u02FD\u0334\x05\xAAV\v\u02FE\u02FF\x07(\x02\x02\u02FF\u0300" +
6016
+ "\x07^\x02\x02\u0300\u0301\x05\xAAV\x02\u0301\u0302\x07\"\x02\x02\u0302" +
6017
+ "\u0303\x05\x9AN\x02\u0303\u0304\x07_\x02\x02\u0304\u0334\x03\x02\x02\x02" +
6018
+ "\u0305\u0306\x07*\x02\x02\u0306\u0307\x07^\x02\x02\u0307\u0308\x07.\x02" +
6019
+ "\x02\u0308\u0309\x05\xAAV\x02\u0309\u030A\x07_\x02\x02\u030A\u0334\x03" +
6020
+ "\x02\x02\x02\u030B\u030C\x05\xBA^\x02\u030C\u030D\x07g\x02\x02\u030D\u030F" +
6021
+ "\x03\x02\x02\x02\u030E\u030B\x03\x02\x02\x02\u030E\u030F\x03\x02\x02\x02" +
6022
+ "\u030F\u0310\x03\x02\x02\x02\u0310\u0311\x05\x98M\x02\u0311\u0314\x07" +
6023
+ "^\x02\x02\u0312\u0315\x05\xAAV\x02\u0313\u0315\x07p\x02\x02\u0314\u0312" +
6024
+ "\x03\x02\x02\x02\u0314\u0313\x03\x02\x02\x02\u0314\u0315\x03\x02\x02\x02" +
6025
+ "\u0315\u0316\x03\x02\x02\x02\u0316\u0317\x07_\x02\x02\u0317\u0334\x03" +
6026
+ "\x02\x02\x02\u0318\u0319\x07^\x02\x02\u0319\u031A\x05\xACW\x02\u031A\u031B" +
6027
+ "\x07_\x02\x02\u031B\u0334\x03\x02\x02\x02\u031C\u031F\x05\xA4S\x02\u031D" +
6028
+ "\u031F\x05\xA6T\x02\u031E\u031C\x03\x02\x02\x02\u031E\u031D\x03\x02\x02" +
6029
+ "\x02\u031F\u0320\x03\x02\x02\x02\u0320\u0322\x07^\x02\x02\u0321\u0323" +
6030
+ "\x05\xB2Z\x02\u0322\u0321\x03\x02\x02\x02\u0322\u0323\x03\x02\x02\x02" +
6031
+ "\u0323\u0324\x03\x02\x02\x02\u0324\u0325\x07_\x02\x02\u0325\u0334\x03" +
6032
+ "\x02\x02\x02\u0326\u0334\x05\xAEX\x02\u0327\u0328\x05\xA8U\x02\u0328\u0329" +
6033
+ "\x07^\x02\x02\u0329\u032E\x05\xAAV\x02\u032A\u032B\x07f\x02\x02\u032B" +
6034
+ "\u032D\x05\xBE`\x02\u032C\u032A\x03\x02\x02\x02\u032D\u0330\x03\x02\x02" +
6035
+ "\x02\u032E\u032C\x03\x02\x02\x02\u032E\u032F\x03\x02\x02\x02\u032F\u0331" +
6036
+ "\x03\x02\x02\x02\u0330\u032E\x03\x02\x02\x02\u0331\u0332\x07_\x02\x02" +
6037
+ "\u0332\u0334\x03\x02\x02\x02\u0333\u02F7\x03\x02\x02\x02\u0333\u02F9\x03" +
6038
+ "\x02\x02\x02\u0333\u02FA\x03\x02\x02\x02\u0333\u02FC\x03\x02\x02\x02\u0333" +
6039
+ "\u02FE\x03\x02\x02\x02\u0333\u0305\x03\x02\x02\x02\u0333\u030E\x03\x02" +
6040
+ "\x02\x02\u0333\u0318\x03\x02\x02\x02\u0333\u031E\x03\x02\x02\x02\u0333" +
6041
+ "\u0326\x03\x02\x02\x02\u0333\u0327\x03\x02\x02\x02\u0334\u035F\x03\x02" +
6042
+ "\x02\x02\u0335\u0336\f\x12\x02\x02\u0336\u0337\t\x0E\x02\x02\u0337\u035E" +
6043
+ "\x05\xAAV\x13\u0338\u0339\f\x11\x02\x02\u0339\u033A\t\x0F\x02\x02\u033A" +
6044
+ "\u035E\x05\xAAV\x12\u033B\u033C\f\x10\x02\x02\u033C\u033D\x07P\x02\x02" +
6045
+ "\u033D\u035E\x05\xAAV\x11\u033E\u033F\f\r\x02\x02\u033F\u0340\x05\x9C" +
6046
+ "O\x02\u0340\u0341\x05\xAAV\x0E\u0341\u035E\x03\x02\x02\x02\u0342\u0343" +
6047
+ "\f\n\x02\x02\u0343\u0344\t\x10\x02\x02\u0344\u035E\x05\xAAV\v\u0345\u0346" +
6048
+ "\f\x18\x02\x02\u0346\u0347\x07b\x02\x02\u0347\u0348\x05`1\x02\u0348\u0349" +
6049
+ "\x07c\x02\x02\u0349\u035E\x03\x02\x02\x02\u034A\u034B\f\x15\x02\x02\u034B" +
6050
+ "\u035E\x05\xA6T\x02\u034C\u034D\f\x14\x02\x02\u034D\u034E\x07g\x02\x02" +
6051
+ "\u034E\u035E\x05\xA6T\x02\u034F\u0350\f\x13\x02\x02\u0350\u0351\x07d\x02" +
6052
+ "\x02\u0351\u035E\x05\x9AN\x02\u0352\u0353\f\x0F\x02\x02\u0353\u0354\x07" +
6053
+ "3\x02\x02\u0354\u0355\x05\xAAV\x02\u0355\u0356\x05\xA6T\x02\u0356\u035E" +
6054
+ "\x03\x02\x02\x02\u0357\u0358\f\x0E\x02\x02\u0358\u0359\t\x11\x02\x02\u0359" +
6055
+ "\u035E\x05\xACW\x02\u035A\u035B\f\f\x02\x02\u035B\u035C\t\x12\x02\x02" +
6056
+ "\u035C\u035E\x05\xACW\x02\u035D\u0335\x03\x02\x02\x02\u035D\u0338\x03" +
6057
+ "\x02\x02\x02\u035D\u033B\x03\x02\x02\x02\u035D\u033E\x03\x02\x02\x02\u035D" +
6058
+ "\u0342\x03\x02\x02\x02\u035D\u0345\x03\x02\x02\x02\u035D\u034A\x03\x02" +
6059
+ "\x02\x02\u035D\u034C\x03\x02\x02\x02\u035D\u034F\x03\x02\x02\x02\u035D" +
6060
+ "\u0352\x03\x02\x02\x02\u035D\u0357\x03\x02\x02\x02\u035D\u035A\x03\x02" +
6061
+ "\x02\x02\u035E\u0361\x03\x02\x02\x02\u035F\u035D\x03\x02\x02\x02\u035F" +
6062
+ "\u0360\x03\x02\x02\x02\u0360\xAB\x03\x02\x02\x02\u0361\u035F\x03\x02\x02" +
6063
+ "\x02\u0362\u0364\x05\x9CO\x02\u0363\u0362\x03\x02\x02\x02\u0363\u0364" +
6064
+ "\x03\x02\x02\x02\u0364\u0365\x03\x02\x02\x02\u0365\u0366\x05\xAAV\x02" +
6065
+ "\u0366\xAD\x03\x02\x02\x02\u0367\u0369\x05\xB0Y\x02\u0368\u0367\x03\x02" +
6066
+ "\x02\x02\u0369\u036A\x03\x02\x02\x02\u036A\u0368\x03\x02\x02\x02\u036A" +
6067
+ "\u036B\x03\x02\x02\x02\u036B\u036E\x03\x02\x02\x02\u036C\u036D\x07/\x02" +
6068
+ "\x02\u036D\u036F\x05\xAAV\x02\u036E\u036C\x03\x02\x02\x02\u036E\u036F" +
6069
+ "\x03\x02\x02\x02\u036F\xAF\x03\x02\x02\x02\u0370\u0372\x07F\x02\x02\u0371" +
6070
+ "\u0373\x05\xAAV\x02\u0372\u0371\x03\x02\x02\x02\u0372\u0373\x03\x02\x02" +
6071
+ "\x02\u0373\u0374\x03\x02\x02\x02\u0374\u0375\x07T\x02\x02\u0375\u0376" +
6072
+ "\x05\xACW\x02\u0376\xB1\x03\x02\x02\x02\u0377\u037C\x05\xAAV\x02\u0378" +
6073
+ "\u0379\x07f\x02\x02\u0379\u037B\x05\xAAV\x02\u037A\u0378\x03\x02\x02\x02" +
6074
+ "\u037B\u037E\x03\x02\x02\x02\u037C\u037A\x03\x02\x02\x02\u037C\u037D\x03" +
6075
+ "\x02\x02\x02\u037D\u0380\x03\x02\x02\x02\u037E\u037C\x03\x02\x02\x02\u037F" +
6076
+ "\u0381\x07f\x02\x02\u0380\u037F\x03\x02\x02\x02\u0380\u0381\x03\x02\x02" +
6077
+ "\x02\u0381\xB3\x03\x02\x02\x02\u0382\u0389\x05\xBE`\x02\u0383\u0385\x07" +
6078
+ "f\x02\x02\u0384\u0383\x03\x02\x02\x02\u0384\u0385\x03\x02\x02\x02\u0385" +
6079
+ "\u0386\x03\x02\x02\x02\u0386\u0388\x05\xBE`\x02\u0387\u0384\x03\x02\x02" +
6080
+ "\x02\u0388\u038B\x03\x02\x02\x02\u0389\u0387\x03\x02\x02\x02\u0389\u038A" +
6081
+ "\x03\x02\x02\x02\u038A\xB5\x03\x02\x02\x02\u038B\u0389\x03\x02\x02\x02" +
6082
+ "\u038C\u0393\x05\xB8]\x02\u038D\u038F\x07f\x02\x02\u038E\u038D\x03\x02" +
6083
+ "\x02\x02\u038E\u038F\x03\x02\x02\x02\u038F\u0390\x03\x02\x02\x02\u0390" +
6084
+ "\u0392\x05\xB8]\x02\u0391\u038E\x03\x02\x02\x02\u0392\u0395\x03\x02\x02" +
6085
+ "\x02\u0393\u0391\x03\x02\x02\x02\u0393\u0394\x03\x02\x02\x02\u0394\u0397" +
6086
+ "\x03\x02\x02\x02\u0395\u0393\x03\x02\x02\x02\u0396\u0398\x07f\x02\x02" +
6087
+ "\u0397\u0396\x03\x02\x02\x02\u0397\u0398\x03\x02\x02\x02\u0398\xB7\x03" +
6088
+ "\x02\x02\x02\u0399\u03A2\x05\xBA^\x02\u039A\u039B\x05\xBA^\x02\u039B\u039C" +
6089
+ "\x07g\x02\x02\u039C\u039E\x03\x02\x02\x02\u039D\u039A\x03\x02\x02\x02" +
6090
+ "\u039D\u039E\x03\x02\x02\x02\u039E\u039F\x03\x02\x02\x02\u039F\u03A2\t" +
6091
+ "\x13\x02\x02\u03A0\u03A2\x05L\'\x02\u03A1\u0399\x03\x02\x02\x02\u03A1" +
6092
+ "\u039D\x03\x02\x02\x02\u03A1\u03A0\x03\x02\x02\x02\u03A2\xB9\x03\x02\x02" +
6093
+ "\x02\u03A3\u03A8\x05\xBE`\x02\u03A4\u03A5\x07g\x02\x02\u03A5\u03A7\x05" +
6094
+ "\xBE`\x02\u03A6\u03A4\x03\x02\x02\x02\u03A7\u03AA\x03\x02\x02\x02\u03A8" +
6095
+ "\u03A6\x03\x02\x02\x02\u03A8\u03A9\x03\x02\x02\x02\u03A9\xBB\x03\x02\x02" +
6096
+ "\x02\u03AA\u03A8\x03\x02\x02\x02\u03AB\u03AC\x05\xA4S\x02\u03AC\xBD\x03" +
6097
+ "\x02\x02\x02\u03AD\u03AE\x05\xA4S\x02\u03AE\xBF\x03\x02\x02\x02\u03AF" +
6098
+ "\u03B0\x05\xAAV\x02\u03B0\u03B1\x07\x02\x02\x03\u03B1\xC1\x03\x02\x02" +
6099
+ "\x02\u03B2\u03B3\x05\xC4c\x02\u03B3\xC3\x03\x02\x02\x02\u03B4\u03BD\x07" +
6100
+ "\x03\x02\x02\u03B5\u03BD\x07\x81\x02\x02\u03B6\u03BD\x07\x82\x02\x02\u03B7" +
6101
+ "\u03BD\x05\xC6d\x02\u03B8\u03BD\x05\xCAf\x02\u03B9\u03BD\x07Q\x02\x02" +
6102
+ "\u03BA\u03BD\x072\x02\x02\u03BB\u03BD\x07B\x02\x02\u03BC\u03B4\x03\x02" +
6103
+ "\x02\x02\u03BC\u03B5\x03\x02\x02\x02\u03BC\u03B6\x03\x02\x02\x02\u03BC" +
6104
+ "\u03B7\x03\x02\x02\x02\u03BC\u03B8\x03\x02\x02\x02\u03BC\u03B9\x03\x02" +
6105
+ "\x02\x02\u03BC\u03BA\x03\x02\x02\x02\u03BC\u03BB\x03\x02\x02\x02\u03BD" +
6106
+ "\xC5\x03\x02\x02\x02\u03BE\u03BF\x07b\x02\x02\u03BF\u03C4\x05\xC8e\x02" +
6107
+ "\u03C0\u03C1\x07f\x02\x02\u03C1\u03C3\x05\xC8e\x02\u03C2\u03C0\x03\x02" +
6108
+ "\x02\x02\u03C3\u03C6\x03\x02\x02\x02\u03C4\u03C2\x03\x02\x02\x02\u03C4" +
6109
+ "\u03C5\x03\x02\x02\x02\u03C5\u03C7\x03\x02\x02\x02\u03C6\u03C4\x03\x02" +
6110
+ "\x02\x02\u03C7\u03C8\x07c\x02\x02\u03C8\u03CC\x03\x02\x02\x02\u03C9\u03CA" +
6111
+ "\x07b\x02\x02\u03CA\u03CC\x07c\x02\x02\u03CB\u03BE\x03\x02\x02\x02\u03CB" +
6112
+ "\u03C9\x03\x02\x02\x02\u03CC\xC7\x03\x02\x02\x02\u03CD\u03CE\x07\x03\x02" +
6113
+ "\x02\u03CE\u03CF\x07e\x02\x02\u03CF\u03D0\x05\xC4c\x02\u03D0\xC9\x03\x02" +
6114
+ "\x02\x02\u03D1\u03D2\x07`\x02\x02\u03D2\u03D7\x05\xC4c\x02\u03D3\u03D4" +
6115
+ "\x07f\x02\x02\u03D4\u03D6\x05\xC4c\x02\u03D5\u03D3\x03\x02\x02\x02\u03D6" +
6116
+ "\u03D9\x03\x02\x02\x02\u03D7\u03D5\x03\x02\x02\x02\u03D7\u03D8\x03\x02" +
6117
+ "\x02\x02\u03D8\u03DA\x03\x02\x02\x02\u03D9\u03D7\x03\x02\x02\x02\u03DA" +
6118
+ "\u03DB\x07a\x02\x02\u03DB\u03DF\x03\x02\x02\x02\u03DC\u03DD\x07`\x02\x02" +
6119
+ "\u03DD\u03DF\x07a\x02\x02\u03DE\u03D1\x03\x02\x02\x02\u03DE\u03DC\x03" +
6120
+ "\x02\x02\x02\u03DF\xCB\x03\x02\x02\x02\u03E0\u03E1\x05\xA4S\x02\u03E1" +
6121
+ "\xCD\x03\x02\x02\x02\u03E2\u03E3\x05\xA4S\x02\u03E3\xCF\x03\x02\x02\x02" +
6122
+ "\u03E4\u03E5\x07\x03\x02\x02\u03E5\xD1\x03\x02\x02\x02q\xD4\xD6\xDF\xEA" +
6123
+ "\xF2\xFA\u0102\u0108\u0118\u011D\u0121\u0130\u0133\u0138\u013B\u0141\u0147" +
6124
+ "\u014A\u014C\u015A\u015C\u0160\u016D\u0172\u0176\u017E\u0181\u018F\u0198" +
6125
+ "\u019A\u019F\u01B0\u01B4\u01B9\u01BD\u01C5\u01CA\u01CE\u01D2\u01D7\u01DB" +
6126
+ "\u01EA\u01EF\u01F3\u01FB\u01FF\u0204\u0208\u020D\u0215\u0219\u021B\u0221" +
6127
+ "\u0226\u022D\u0231\u023B\u0240\u0244\u0259\u0260\u0265\u0269\u026F\u0276" +
6128
+ "\u027B\u027F\u0283\u0286\u028C\u0299\u029E\u02A2\u02A6\u02A9\u02B2\u02B7" +
6129
+ "\u02BC\u02C0\u02C4\u02C9\u02D0\u02E4\u02ED\u030E\u0314\u031E\u0322\u032E" +
6130
+ "\u0333\u035D\u035F\u0363\u036A\u036E\u0372\u037C\u0380\u0384\u0389\u038E" +
6131
+ "\u0393\u0397\u039D\u03A1\u03A8\u03BC\u03C4\u03CB\u03D7\u03DE";
6117
6132
  MalloyParser._serializedATN = Utils.join([
6118
6133
  MalloyParser._serializedATNSegment0,
6119
6134
  MalloyParser._serializedATNSegment1,
@@ -9991,6 +10006,35 @@ class LiteralTimestampContext extends DateLiteralContext {
9991
10006
  }
9992
10007
  }
9993
10008
  exports.LiteralTimestampContext = LiteralTimestampContext;
10009
+ class LiteralHourContext extends DateLiteralContext {
10010
+ LITERAL_HOUR() { return this.getToken(MalloyParser.LITERAL_HOUR, 0); }
10011
+ constructor(ctx) {
10012
+ super(ctx.parent, ctx.invokingState);
10013
+ this.copyFrom(ctx);
10014
+ }
10015
+ // @Override
10016
+ enterRule(listener) {
10017
+ if (listener.enterLiteralHour) {
10018
+ listener.enterLiteralHour(this);
10019
+ }
10020
+ }
10021
+ // @Override
10022
+ exitRule(listener) {
10023
+ if (listener.exitLiteralHour) {
10024
+ listener.exitLiteralHour(this);
10025
+ }
10026
+ }
10027
+ // @Override
10028
+ accept(visitor) {
10029
+ if (visitor.visitLiteralHour) {
10030
+ return visitor.visitLiteralHour(this);
10031
+ }
10032
+ else {
10033
+ return visitor.visitChildren(this);
10034
+ }
10035
+ }
10036
+ }
10037
+ exports.LiteralHourContext = LiteralHourContext;
9994
10038
  class LiteralDayContext extends DateLiteralContext {
9995
10039
  LITERAL_DAY() { return this.getToken(MalloyParser.LITERAL_DAY, 0); }
9996
10040
  constructor(ctx) {