1// File ignored in coverage tests via setting in .istanbul.yml
2/* Jison generated parser */
3var handlebars = (function(){
4var parser = {trace: function trace () { },
5yy: {},
6symbols_: {"error":2,"root":3,"program":4,"EOF":5,"program_repetition0":6,"statement":7,"mustache":8,"block":9,"rawBlock":10,"partial":11,"partialBlock":12,"content":13,"COMMENT":14,"CONTENT":15,"openRawBlock":16,"rawBlock_repetition0":17,"END_RAW_BLOCK":18,"OPEN_RAW_BLOCK":19,"helperName":20,"openRawBlock_repetition0":21,"openRawBlock_option0":22,"CLOSE_RAW_BLOCK":23,"openBlock":24,"block_option0":25,"closeBlock":26,"openInverse":27,"block_option1":28,"OPEN_BLOCK":29,"openBlock_repetition0":30,"openBlock_option0":31,"openBlock_option1":32,"CLOSE":33,"OPEN_INVERSE":34,"openInverse_repetition0":35,"openInverse_option0":36,"openInverse_option1":37,"openInverseChain":38,"OPEN_INVERSE_CHAIN":39,"openInverseChain_repetition0":40,"openInverseChain_option0":41,"openInverseChain_option1":42,"inverseAndProgram":43,"INVERSE":44,"inverseChain":45,"inverseChain_option0":46,"OPEN_ENDBLOCK":47,"OPEN":48,"mustache_repetition0":49,"mustache_option0":50,"OPEN_UNESCAPED":51,"mustache_repetition1":52,"mustache_option1":53,"CLOSE_UNESCAPED":54,"OPEN_PARTIAL":55,"partialName":56,"partial_repetition0":57,"partial_option0":58,"openPartialBlock":59,"OPEN_PARTIAL_BLOCK":60,"openPartialBlock_repetition0":61,"openPartialBlock_option0":62,"param":63,"sexpr":64,"OPEN_SEXPR":65,"sexpr_repetition0":66,"sexpr_option0":67,"CLOSE_SEXPR":68,"hash":69,"hash_repetition_plus0":70,"hashSegment":71,"ID":72,"EQUALS":73,"blockParams":74,"OPEN_BLOCK_PARAMS":75,"blockParams_repetition_plus0":76,"CLOSE_BLOCK_PARAMS":77,"path":78,"dataName":79,"STRING":80,"NUMBER":81,"BOOLEAN":82,"UNDEFINED":83,"NULL":84,"DATA":85,"pathSegments":86,"SEP":87,"$accept":0,"$end":1},
7terminals_: {2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},
8productions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],
9performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$
10) {
11
12var $0 = $$.length - 1;
13switch (yystate) {
14case 1: return $$[$0-1];
15break;
16case 2:this.$ = yy.prepareProgram($$[$0]);
17break;
18case 3:this.$ = $$[$0];
19break;
20case 4:this.$ = $$[$0];
21break;
22case 5:this.$ = $$[$0];
23break;
24case 6:this.$ = $$[$0];
25break;
26case 7:this.$ = $$[$0];
27break;
28case 8:this.$ = $$[$0];
29break;
30case 9:
31    this.$ = {
32      type: 'CommentStatement',
33      value: yy.stripComment($$[$0]),
34      strip: yy.stripFlags($$[$0], $$[$0]),
35      loc: yy.locInfo(this._$)
36    };
37
38break;
39case 10:
40    this.$ = {
41      type: 'ContentStatement',
42      original: $$[$0],
43      value: $$[$0],
44      loc: yy.locInfo(this._$)
45    };
46
47break;
48case 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);
49break;
50case 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };
51break;
52case 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);
53break;
54case 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);
55break;
56case 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };
57break;
58case 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };
59break;
60case 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };
61break;
62case 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };
63break;
64case 19:
65    var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),
66        program = yy.prepareProgram([inverse], $$[$0-1].loc);
67    program.chained = true;
68
69    this.$ = { strip: $$[$0-2].strip, program: program, chain: true };
70
71break;
72case 20:this.$ = $$[$0];
73break;
74case 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};
75break;
76case 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);
77break;
78case 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);
79break;
80case 24:
81    this.$ = {
82      type: 'PartialStatement',
83      name: $$[$0-3],
84      params: $$[$0-2],
85      hash: $$[$0-1],
86      indent: '',
87      strip: yy.stripFlags($$[$0-4], $$[$0]),
88      loc: yy.locInfo(this._$)
89    };
90
91break;
92case 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);
93break;
94case 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };
95break;
96case 27:this.$ = $$[$0];
97break;
98case 28:this.$ = $$[$0];
99break;
100case 29:
101    this.$ = {
102      type: 'SubExpression',
103      path: $$[$0-3],
104      params: $$[$0-2],
105      hash: $$[$0-1],
106      loc: yy.locInfo(this._$)
107    };
108
109break;
110case 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};
111break;
112case 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};
113break;
114case 32:this.$ = yy.id($$[$0-1]);
115break;
116case 33:this.$ = $$[$0];
117break;
118case 34:this.$ = $$[$0];
119break;
120case 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};
121break;
122case 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};
123break;
124case 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};
125break;
126case 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};
127break;
128case 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};
129break;
130case 40:this.$ = $$[$0];
131break;
132case 41:this.$ = $$[$0];
133break;
134case 42:this.$ = yy.preparePath(true, $$[$0], this._$);
135break;
136case 43:this.$ = yy.preparePath(false, $$[$0], this._$);
137break;
138case 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2];
139break;
140case 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];
141break;
142case 46:this.$ = [];
143break;
144case 47:$$[$0-1].push($$[$0]);
145break;
146case 48:this.$ = [];
147break;
148case 49:$$[$0-1].push($$[$0]);
149break;
150case 50:this.$ = [];
151break;
152case 51:$$[$0-1].push($$[$0]);
153break;
154case 58:this.$ = [];
155break;
156case 59:$$[$0-1].push($$[$0]);
157break;
158case 64:this.$ = [];
159break;
160case 65:$$[$0-1].push($$[$0]);
161break;
162case 70:this.$ = [];
163break;
164case 71:$$[$0-1].push($$[$0]);
165break;
166case 78:this.$ = [];
167break;
168case 79:$$[$0-1].push($$[$0]);
169break;
170case 82:this.$ = [];
171break;
172case 83:$$[$0-1].push($$[$0]);
173break;
174case 86:this.$ = [];
175break;
176case 87:$$[$0-1].push($$[$0]);
177break;
178case 90:this.$ = [];
179break;
180case 91:$$[$0-1].push($$[$0]);
181break;
182case 94:this.$ = [];
183break;
184case 95:$$[$0-1].push($$[$0]);
185break;
186case 98:this.$ = [$$[$0]];
187break;
188case 99:$$[$0-1].push($$[$0]);
189break;
190case 100:this.$ = [$$[$0]];
191break;
192case 101:$$[$0-1].push($$[$0]);
193break;
194}
195},
196table: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],
197defaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},
198parseError: function parseError (str, hash) {
199    throw new Error(str);
200},
201parse: function parse(input) {
202    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
203    this.lexer.setInput(input);
204    this.lexer.yy = this.yy;
205    this.yy.lexer = this.lexer;
206    this.yy.parser = this;
207    if (typeof this.lexer.yylloc == "undefined")
208        this.lexer.yylloc = {};
209    var yyloc = this.lexer.yylloc;
210    lstack.push(yyloc);
211    var ranges = this.lexer.options && this.lexer.options.ranges;
212    if (typeof this.yy.parseError === "function")
213        this.parseError = this.yy.parseError;
214    function popStack(n) {
215        stack.length = stack.length - 2 * n;
216        vstack.length = vstack.length - n;
217        lstack.length = lstack.length - n;
218    }
219    function lex() {
220        var token;
221        token = self.lexer.lex() || 1;
222        if (typeof token !== "number") {
223            token = self.symbols_[token] || token;
224        }
225        return token;
226    }
227    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
228    while (true) {
229        state = stack[stack.length - 1];
230        if (this.defaultActions[state]) {
231            action = this.defaultActions[state];
232        } else {
233            if (symbol === null || typeof symbol == "undefined") {
234                symbol = lex();
235            }
236            action = table[state] && table[state][symbol];
237        }
238        if (typeof action === "undefined" || !action.length || !action[0]) {
239            var errStr = "";
240            if (!recovering) {
241                expected = [];
242                for (p in table[state])
243                    if (this.terminals_[p] && p > 2) {
244                        expected.push("'" + this.terminals_[p] + "'");
245                    }
246                if (this.lexer.showPosition) {
247                    errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
248                } else {
249                    errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
250                }
251                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
252            }
253        }
254        if (action[0] instanceof Array && action.length > 1) {
255            throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
256        }
257        switch (action[0]) {
258        case 1:
259            stack.push(symbol);
260            vstack.push(this.lexer.yytext);
261            lstack.push(this.lexer.yylloc);
262            stack.push(action[1]);
263            symbol = null;
264            if (!preErrorSymbol) {
265                yyleng = this.lexer.yyleng;
266                yytext = this.lexer.yytext;
267                yylineno = this.lexer.yylineno;
268                yyloc = this.lexer.yylloc;
269                if (recovering > 0)
270                    recovering--;
271            } else {
272                symbol = preErrorSymbol;
273                preErrorSymbol = null;
274            }
275            break;
276        case 2:
277            len = this.productions_[action[1]][1];
278            yyval.$ = vstack[vstack.length - len];
279            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
280            if (ranges) {
281                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
282            }
283            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
284            if (typeof r !== "undefined") {
285                return r;
286            }
287            if (len) {
288                stack = stack.slice(0, -1 * len * 2);
289                vstack = vstack.slice(0, -1 * len);
290                lstack = lstack.slice(0, -1 * len);
291            }
292            stack.push(this.productions_[action[1]][0]);
293            vstack.push(yyval.$);
294            lstack.push(yyval._$);
295            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
296            stack.push(newState);
297            break;
298        case 3:
299            return true;
300        }
301    }
302    return true;
303}
304};
305/* Jison generated lexer */
306var lexer = (function(){
307var lexer = ({EOF:1,
308parseError:function parseError(str, hash) {
309        if (this.yy.parser) {
310            this.yy.parser.parseError(str, hash);
311        } else {
312            throw new Error(str);
313        }
314    },
315setInput:function (input) {
316        this._input = input;
317        this._more = this._less = this.done = false;
318        this.yylineno = this.yyleng = 0;
319        this.yytext = this.matched = this.match = '';
320        this.conditionStack = ['INITIAL'];
321        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
322        if (this.options.ranges) this.yylloc.range = [0,0];
323        this.offset = 0;
324        return this;
325    },
326input:function () {
327        var ch = this._input[0];
328        this.yytext += ch;
329        this.yyleng++;
330        this.offset++;
331        this.match += ch;
332        this.matched += ch;
333        var lines = ch.match(/(?:\r\n?|\n).*/g);
334        if (lines) {
335            this.yylineno++;
336            this.yylloc.last_line++;
337        } else {
338            this.yylloc.last_column++;
339        }
340        if (this.options.ranges) this.yylloc.range[1]++;
341
342        this._input = this._input.slice(1);
343        return ch;
344    },
345unput:function (ch) {
346        var len = ch.length;
347        var lines = ch.split(/(?:\r\n?|\n)/g);
348
349        this._input = ch + this._input;
350        this.yytext = this.yytext.substr(0, this.yytext.length-len-1);
351        //this.yyleng -= len;
352        this.offset -= len;
353        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
354        this.match = this.match.substr(0, this.match.length-1);
355        this.matched = this.matched.substr(0, this.matched.length-1);
356
357        if (lines.length-1) this.yylineno -= lines.length-1;
358        var r = this.yylloc.range;
359
360        this.yylloc = {first_line: this.yylloc.first_line,
361          last_line: this.yylineno+1,
362          first_column: this.yylloc.first_column,
363          last_column: lines ?
364              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:
365              this.yylloc.first_column - len
366          };
367
368        if (this.options.ranges) {
369            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
370        }
371        return this;
372    },
373more:function () {
374        this._more = true;
375        return this;
376    },
377less:function (n) {
378        this.unput(this.match.slice(n));
379    },
380pastInput:function () {
381        var past = this.matched.substr(0, this.matched.length - this.match.length);
382        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
383    },
384upcomingInput:function () {
385        var next = this.match;
386        if (next.length < 20) {
387            next += this._input.substr(0, 20-next.length);
388        }
389        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
390    },
391showPosition:function () {
392        var pre = this.pastInput();
393        var c = new Array(pre.length + 1).join("-");
394        return pre + this.upcomingInput() + "\n" + c+"^";
395    },
396next:function () {
397        if (this.done) {
398            return this.EOF;
399        }
400        if (!this._input) this.done = true;
401
402        var token,
403            match,
404            tempMatch,
405            index,
406            col,
407            lines;
408        if (!this._more) {
409            this.yytext = '';
410            this.match = '';
411        }
412        var rules = this._currentRules();
413        for (var i=0;i < rules.length; i++) {
414            tempMatch = this._input.match(this.rules[rules[i]]);
415            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
416                match = tempMatch;
417                index = i;
418                if (!this.options.flex) break;
419            }
420        }
421        if (match) {
422            lines = match[0].match(/(?:\r\n?|\n).*/g);
423            if (lines) this.yylineno += lines.length;
424            this.yylloc = {first_line: this.yylloc.last_line,
425                           last_line: this.yylineno+1,
426                           first_column: this.yylloc.last_column,
427                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length};
428            this.yytext += match[0];
429            this.match += match[0];
430            this.matches = match;
431            this.yyleng = this.yytext.length;
432            if (this.options.ranges) {
433                this.yylloc.range = [this.offset, this.offset += this.yyleng];
434            }
435            this._more = false;
436            this._input = this._input.slice(match[0].length);
437            this.matched += match[0];
438            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
439            if (this.done && this._input) this.done = false;
440            if (token) return token;
441            else return;
442        }
443        if (this._input === "") {
444            return this.EOF;
445        } else {
446            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
447                    {text: "", token: null, line: this.yylineno});
448        }
449    },
450lex:function lex () {
451        var r = this.next();
452        if (typeof r !== 'undefined') {
453            return r;
454        } else {
455            return this.lex();
456        }
457    },
458begin:function begin (condition) {
459        this.conditionStack.push(condition);
460    },
461popState:function popState () {
462        return this.conditionStack.pop();
463    },
464_currentRules:function _currentRules () {
465        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
466    },
467topState:function () {
468        return this.conditionStack[this.conditionStack.length-2];
469    },
470pushState:function begin (condition) {
471        this.begin(condition);
472    }});
473lexer.options = {};
474lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START
475) {
476
477
478function strip(start, end) {
479  return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);
480}
481
482
483var YYSTATE=YY_START
484switch($avoiding_name_collisions) {
485case 0:
486                                   if(yy_.yytext.slice(-2) === "\\\\") {
487                                     strip(0,1);
488                                     this.begin("mu");
489                                   } else if(yy_.yytext.slice(-1) === "\\") {
490                                     strip(0,1);
491                                     this.begin("emu");
492                                   } else {
493                                     this.begin("mu");
494                                   }
495                                   if(yy_.yytext) return 15;
496
497break;
498case 1:return 15;
499break;
500case 2:
501                                   this.popState();
502                                   return 15;
503
504break;
505case 3:this.begin('raw'); return 15;
506break;
507case 4:
508                                  this.popState();
509                                  // Should be using `this.topState()` below, but it currently
510                                  // returns the second top instead of the first top. Opened an
511                                  // issue about it at https://github.com/zaach/jison/issues/291
512                                  if (this.conditionStack[this.conditionStack.length-1] === 'raw') {
513                                    return 15;
514                                  } else {
515                                    strip(5, 9);
516                                    return 'END_RAW_BLOCK';
517                                  }
518
519break;
520case 5: return 15;
521break;
522case 6:
523  this.popState();
524  return 14;
525
526break;
527case 7:return 65;
528break;
529case 8:return 68;
530break;
531case 9: return 19;
532break;
533case 10:
534                                  this.popState();
535                                  this.begin('raw');
536                                  return 23;
537
538break;
539case 11:return 55;
540break;
541case 12:return 60;
542break;
543case 13:return 29;
544break;
545case 14:return 47;
546break;
547case 15:this.popState(); return 44;
548break;
549case 16:this.popState(); return 44;
550break;
551case 17:return 34;
552break;
553case 18:return 39;
554break;
555case 19:return 51;
556break;
557case 20:return 48;
558break;
559case 21:
560  this.unput(yy_.yytext);
561  this.popState();
562  this.begin('com');
563
564break;
565case 22:
566  this.popState();
567  return 14;
568
569break;
570case 23:return 48;
571break;
572case 24:return 73;
573break;
574case 25:return 72;
575break;
576case 26:return 72;
577break;
578case 27:return 87;
579break;
580case 28:// ignore whitespace
581break;
582case 29:this.popState(); return 54;
583break;
584case 30:this.popState(); return 33;
585break;
586case 31:yy_.yytext = strip(1,2).replace(/\\"/g,'"'); return 80;
587break;
588case 32:yy_.yytext = strip(1,2).replace(/\\'/g,"'"); return 80;
589break;
590case 33:return 85;
591break;
592case 34:return 82;
593break;
594case 35:return 82;
595break;
596case 36:return 83;
597break;
598case 37:return 84;
599break;
600case 38:return 81;
601break;
602case 39:return 75;
603break;
604case 40:return 77;
605break;
606case 41:return 72;
607break;
608case 42:yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g,'$1'); return 72;
609break;
610case 43:return 'INVALID';
611break;
612case 44:return 5;
613break;
614}
615};
616lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/];
617lexer.conditions = {"mu":{"rules":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"inclusive":false},"emu":{"rules":[2],"inclusive":false},"com":{"rules":[6],"inclusive":false},"raw":{"rules":[3,4,5],"inclusive":false},"INITIAL":{"rules":[0,1,44],"inclusive":true}};
618return lexer;})()
619parser.lexer = lexer;
620function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
621return new Parser;
622})();export default handlebars;
623