@jay-framework/compiler-jay-html 0.22.1 → 0.23.0

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.
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { JayImportedType, isObjectType as isObjectType$1, isImportedType, isRecursiveType, JayUnknown, RenderFragment, Imports, Import, WithValidations, isArrayType as isArrayType$1, isAtomicType, isPromiseType, isEnumType, hasRefs, GenerateTarget, JayTypeAlias, JayUnionType, mkRefsTree, JayComponentType, JayHTMLType, mkRef, equalJayTypes, getModeFileExtension, isHtmlStringType, RuntimeMode, nestRefs, mergeRefsTrees, SourceFileFormat, JayEnumType, JayObjectType, JayArrayType, JayPromiseType, resolvePrimitiveType, JayRecursiveType, JAY_CONTRACT_EXTENSION as JAY_CONTRACT_EXTENSION$1, ImportsFor, JAY_FULLSTACK_COMPONENTS, JayErrorType, JayOptionalType, JayRecordType, isOptionalType, isRecordType, resolvePluginComponent, resolvePluginManifest } from "@jay-framework/compiler-shared";
1
+ import { camelCase as camelCase$1, JayImportedType, JayString, isObjectType as isObjectType$1, isImportedType, isRecursiveType, JayUnknown, RenderFragment, Imports, Import, WithValidations, isArrayType as isArrayType$1, isAtomicType, isPromiseType, isEnumType, hasRefs, GenerateTarget, JayTypeAlias, JayUnionType, mkRefsTree, JayComponentType, JayHTMLType, mkRef, equalJayTypes, getModeFileExtension, isHtmlStringType, RuntimeMode, nestRefs, mergeRefsTrees, SourceFileFormat, JayEnumType, JayObjectType, JayArrayType, JayPromiseType, resolvePrimitiveType, JayRecursiveType, JAY_CONTRACT_EXTENSION as JAY_CONTRACT_EXTENSION$1, ImportsFor, JAY_FULLSTACK_COMPONENTS, JayErrorType, JayOptionalType, JayRecordType, isOptionalType, isRecordType, resolvePluginComponent, resolvePluginManifest } from "@jay-framework/compiler-shared";
2
2
  import path from "path";
3
3
  import { getLogger } from "@jay-framework/logger";
4
- import fs from "fs/promises";
5
- import fs$1 from "fs";
4
+ import fs$1 from "fs/promises";
5
+ import fs from "fs";
6
6
  import { analyzeExportedTypes } from "@jay-framework/compiler-analyze-exported-types";
7
7
  import { createRequire } from "module";
8
8
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
@@ -6139,7 +6139,7 @@ function camelCaseTransform(input, index) {
6139
6139
  return input.toLowerCase();
6140
6140
  return pascalCaseTransform(input, index);
6141
6141
  }
6142
- function camelCase$1(input, options) {
6142
+ function camelCase(input, options) {
6143
6143
  if (options === void 0) {
6144
6144
  options = {};
6145
6145
  }
@@ -6157,22 +6157,6 @@ function capitalCase(input, options) {
6157
6157
  }
6158
6158
  return noCase(input, __assign({ delimiter: " ", transform: capitalCaseTransform }, options));
6159
6159
  }
6160
- function camelCase(str2) {
6161
- let leadingUnderscores = 0;
6162
- for (const char of str2) {
6163
- if (char === "_") {
6164
- leadingUnderscores++;
6165
- } else {
6166
- break;
6167
- }
6168
- }
6169
- if (leadingUnderscores === 0) {
6170
- return camelCase$1(str2);
6171
- }
6172
- const withoutLeadingUnderscores = str2.slice(leadingUnderscores);
6173
- const camelCased = camelCase$1(withoutLeadingUnderscores);
6174
- return "_".repeat(leadingUnderscores) + camelCased;
6175
- }
6176
6160
  function shouldIncludeInPhase(propertyPhase, targetPhase) {
6177
6161
  if (targetPhase === "slow") {
6178
6162
  return propertyPhase === "slow";
@@ -6192,7 +6176,7 @@ function extractPropertyPathsAndArrays(tags, targetPhase, parentPath = [], paren
6192
6176
  continue;
6193
6177
  }
6194
6178
  const effectivePhase = getEffectivePhase(tag, parentPhase);
6195
- const propertyName = camelCase(tag.tag);
6179
+ const propertyName = camelCase$1(tag.tag);
6196
6180
  const currentPath = [...parentPath, propertyName];
6197
6181
  const isArray = tag.repeated || false;
6198
6182
  const isAsync = tag.async || false;
@@ -6244,7 +6228,7 @@ function extractPropertyPathsAndArrays(tags, targetPhase, parentPath = [], paren
6244
6228
  trackByForChildren,
6245
6229
  childLinkedContext
6246
6230
  );
6247
- const hasOnlyTrackBy = isArray && trackByForChildren && result.paths.length === 1 && result.paths[0].propertyName === camelCase(trackByForChildren);
6231
+ const hasOnlyTrackBy = isArray && trackByForChildren && result.paths.length === 1 && result.paths[0].propertyName === camelCase$1(trackByForChildren);
6248
6232
  if (result.paths.length > 0 && !hasOnlyTrackBy) {
6249
6233
  paths.push(...result.paths);
6250
6234
  arrays.push(...result.arrays);
@@ -6287,7 +6271,7 @@ function countTotalProperties(tags, targetPath, currentPath = [], linkedContext)
6287
6271
  if (tag.type.includes(ContractTagType.interactive) && !tag.dataType) {
6288
6272
  continue;
6289
6273
  }
6290
- const propertyName = camelCase(tag.tag);
6274
+ const propertyName = camelCase$1(tag.tag);
6291
6275
  const newPath = [...currentPath, propertyName];
6292
6276
  const pathKey = newPath.join(".");
6293
6277
  const targetKey = targetPath.join(".");
@@ -6804,7 +6788,9 @@ function peg$parse(input, options) {
6804
6788
  if (tail.length === 0)
6805
6789
  return head;
6806
6790
  return tail.reduce((acc, curr) => combineAnd(acc, curr[3]), head);
6807
- }, peg$c100 = function(left, op, right) {
6791
+ }, peg$c100 = "^=", peg$c101 = peg$literalExpectation("^=", false), peg$c102 = function(left, right) {
6792
+ return applyStartsWith(left, right);
6793
+ }, peg$c103 = function(left, op, right) {
6808
6794
  if (left.type === "resolved" && left.propertyPath && right.type === "code" && right.isSimpleIdentifier) {
6809
6795
  const phaseInfo = getPhaseInfo(left.propertyPath);
6810
6796
  if (phaseInfo && phaseInfo.enumValues) {
@@ -6815,19 +6801,33 @@ function peg$parse(input, options) {
6815
6801
  }
6816
6802
  }
6817
6803
  return applyComparison(left, op, right);
6818
- }, peg$c101 = "!", peg$c102 = peg$literalExpectation("!", false), peg$c103 = function(operand) {
6804
+ }, peg$c104 = "!", peg$c105 = peg$literalExpectation("!", false), peg$c106 = function(operand) {
6819
6805
  return applyNot(operand);
6820
- }, peg$c104 = function(cond) {
6806
+ }, peg$c107 = function(cond) {
6821
6807
  return cond;
6822
- }, peg$c105 = "-", peg$c106 = peg$literalExpectation("-", false), peg$c107 = /^[0-9]/, peg$c108 = peg$classExpectation([["0", "9"]], false, false), peg$c109 = ".", peg$c110 = peg$literalExpectation(".", false), peg$c111 = function(val) {
6808
+ }, peg$c108 = function(chars) {
6809
+ return { type: "resolved", value: chars.join("") };
6810
+ }, peg$c109 = "-", peg$c110 = peg$literalExpectation("-", false), peg$c111 = /^[0-9]/, peg$c112 = peg$classExpectation([["0", "9"]], false, false), peg$c113 = ".", peg$c114 = peg$literalExpectation(".", false), peg$c115 = function(val) {
6823
6811
  return { type: "resolved", value: parseFloat(text2()) };
6824
- }, peg$c112 = "true", peg$c113 = peg$literalExpectation("true", false), peg$c114 = function() {
6812
+ }, peg$c116 = "true", peg$c117 = peg$literalExpectation("true", false), peg$c118 = function() {
6825
6813
  return { type: "resolved", value: true };
6826
- }, peg$c115 = "false", peg$c116 = peg$literalExpectation("false", false), peg$c117 = function() {
6814
+ }, peg$c119 = "false", peg$c120 = peg$literalExpectation("false", false), peg$c121 = function() {
6827
6815
  return { type: "resolved", value: false };
6828
- }, peg$c118 = function(head, tail) {
6816
+ }, peg$c122 = function(head, tail) {
6829
6817
  const path2 = [head, ...tail.map((t) => t[3])].join(".");
6830
6818
  const isSimple = tail.length === 0;
6819
+ if (head === "jay") {
6820
+ const jayTerms = ["__jay", ...tail.map((t) => t[3])];
6821
+ if (vars) {
6822
+ const accessor = vars.resolveAccessor(["jay", ...tail.map((t) => t[3])]);
6823
+ const fragment = accessor.render();
6824
+ return { type: "code", fragment, expr: path2, propertyPath: path2, isSimpleIdentifier: false };
6825
+ } else {
6826
+ const code = `vs.${jayTerms.join("?.")}`;
6827
+ const fragment = new RenderFragment2(code, none);
6828
+ return { type: "code", fragment, expr: path2, propertyPath: path2, isSimpleIdentifier: false };
6829
+ }
6830
+ }
6831
6831
  if (isSlowPhase2(path2)) {
6832
6832
  const value = getSlowValue(path2);
6833
6833
  return { type: "resolved", value, propertyPath: path2 };
@@ -6841,7 +6841,7 @@ function peg$parse(input, options) {
6841
6841
  const fragment = new RenderFragment2(code, none);
6842
6842
  return { type: "code", fragment, expr: path2, propertyPath: path2, isSimpleIdentifier: isSimple };
6843
6843
  }
6844
- }, peg$c119 = "===", peg$c120 = peg$literalExpectation("===", false), peg$c121 = "!==", peg$c122 = peg$literalExpectation("!==", false), peg$c123 = "==", peg$c124 = peg$literalExpectation("==", false), peg$c125 = "!=", peg$c126 = peg$literalExpectation("!=", false), peg$c127 = "<=", peg$c128 = peg$literalExpectation("<=", false), peg$c129 = ">=", peg$c130 = peg$literalExpectation(">=", false), peg$c131 = "<", peg$c132 = peg$literalExpectation("<", false), peg$c133 = ">", peg$c134 = peg$literalExpectation(">", false), peg$c135 = function(head, tail) {
6844
+ }, peg$c123 = "===", peg$c124 = peg$literalExpectation("===", false), peg$c125 = "!==", peg$c126 = peg$literalExpectation("!==", false), peg$c127 = "==", peg$c128 = peg$literalExpectation("==", false), peg$c129 = "!=", peg$c130 = peg$literalExpectation("!=", false), peg$c131 = "<=", peg$c132 = peg$literalExpectation("<=", false), peg$c133 = ">=", peg$c134 = peg$literalExpectation(">=", false), peg$c135 = "<", peg$c136 = peg$literalExpectation("<", false), peg$c137 = ">", peg$c138 = peg$literalExpectation(">", false), peg$c139 = function(head, tail) {
6845
6845
  if (tail.length === 0)
6846
6846
  return head;
6847
6847
  return tail.reduce((acc, curr) => {
@@ -6852,7 +6852,7 @@ function peg$parse(input, options) {
6852
6852
  " || "
6853
6853
  );
6854
6854
  }, head);
6855
- }, peg$c136 = function(head, tail) {
6855
+ }, peg$c140 = function(head, tail) {
6856
6856
  if (tail.length === 0)
6857
6857
  return head;
6858
6858
  return tail.reduce((acc, curr) => {
@@ -6863,56 +6863,65 @@ function peg$parse(input, options) {
6863
6863
  " && "
6864
6864
  );
6865
6865
  }, head);
6866
- }, peg$c137 = function(not, head) {
6866
+ }, peg$c141 = function(not, head) {
6867
6867
  return not ? head.render().map((_) => `!${_}`) : head.render();
6868
- }, peg$c138 = function(head, oper, val) {
6868
+ }, peg$c142 = function(head, oper, val) {
6869
6869
  return head.render().map((_) => `${_} ${oper} ${val}`);
6870
- }, peg$c139 = function(acc) {
6870
+ }, peg$c143 = function(acc) {
6871
6871
  return acc.render().rendered;
6872
- }, peg$c140 = function(head, oper, val) {
6872
+ }, peg$c144 = function(head, val) {
6873
+ return head.render().map((_) => `${_}.startsWith(${val})`);
6874
+ }, peg$c145 = function(head, oper, val) {
6873
6875
  if (oper === "==")
6874
6876
  oper = "===";
6875
6877
  if (oper === "!=")
6876
6878
  oper = "!==";
6877
6879
  return head.render().map((_) => `${_} ${oper} ${val}`);
6878
- }, peg$c141 = function(head, tail) {
6880
+ }, peg$c146 = function(head, tail) {
6879
6881
  let terms = [head, ...tail.map((_) => _[3])];
6880
6882
  return vars.resolveAccessor(terms);
6881
- }, peg$c142 = function(head, oper, val) {
6883
+ }, peg$c147 = function(head, oper, val) {
6882
6884
  if (oper.length === 2)
6883
6885
  oper = oper + "=";
6884
- const enumName = head.resolvedType.alias || head.resolvedType.name;
6885
- const fragment = head.render().map((_) => `${_} ${oper} ${enumName}.${val}`);
6886
- if (head.resolvedType.values && !head.resolvedType.values.includes(val)) {
6887
- fragment.validations = [...fragment.validations, `Unknown enum value "${val}" for type ${head.resolvedType.name}. Valid values: ${head.resolvedType.values.join(", ")}`];
6888
- }
6886
+ if (head.resolvedType.values) {
6887
+ const enumName = head.resolvedType.alias || head.resolvedType.name;
6888
+ const fragment2 = head.render().map((_) => `${_} ${oper} ${enumName}.${val}`);
6889
+ if (!head.resolvedType.values.includes(val)) {
6890
+ fragment2.validations = [...fragment2.validations, `Unknown enum value "${val}" for type ${head.resolvedType.name}. Valid values: ${head.resolvedType.values.join(", ")}`];
6891
+ }
6892
+ return fragment2;
6893
+ }
6894
+ const rightAccessor = vars.resolveAccessor([val]);
6895
+ const rightCode = rightAccessor.render();
6896
+ const fragment = head.render().map((_) => `${_} ${oper} ${rightCode.rendered}`);
6897
+ fragment.validations = [...fragment.validations, ...rightCode.validations];
6889
6898
  return fragment;
6890
- }, peg$c143 = function() {
6899
+ }, peg$c148 = function() {
6891
6900
  return vars.resolveAccessor(["."]);
6892
- }, peg$c144 = function(head, tail) {
6901
+ }, peg$c149 = function(head, tail) {
6893
6902
  let terms = [head, ...tail.map((_) => _[3])];
6894
6903
  let accessor = vars.resolveAccessor(terms);
6895
6904
  return accessor;
6896
- }, peg$c145 = peg$otherExpectation("integer"), peg$c146 = peg$otherExpectation("whitespace"), peg$c147 = /^[^{} \t\n\r]/, peg$c148 = peg$classExpectation(["{", "}", " ", " ", "\n", "\r"], true, false), peg$c149 = function() {
6905
+ }, peg$c150 = peg$otherExpectation("integer"), peg$c151 = peg$otherExpectation("whitespace"), peg$c152 = /^[^{} \t\n\r]/, peg$c153 = peg$classExpectation(["{", "}", " ", " ", "\n", "\r"], true, false), peg$c154 = function() {
6897
6906
  return text2();
6898
- }, peg$c150 = function(name) {
6907
+ }, peg$c155 = function(name) {
6899
6908
  return text2();
6900
- }, peg$c151 = peg$otherExpectation("identifier"), peg$c152 = function(head, tail) {
6909
+ }, peg$c156 = peg$otherExpectation("identifier"), peg$c157 = function(head, tail) {
6901
6910
  return {
6902
6911
  type: "Identifier",
6903
6912
  name: head + tail.join("")
6904
6913
  };
6905
- }, peg$c153 = "$", peg$c154 = peg$literalExpectation("$", false), peg$c155 = "_", peg$c156 = peg$literalExpectation("_", false), peg$c157 = "\\", peg$c158 = peg$literalExpectation("\\", false), peg$c159 = function(sequence) {
6914
+ }, peg$c158 = "$", peg$c159 = peg$literalExpectation("$", false), peg$c160 = "_", peg$c161 = peg$literalExpectation("_", false), peg$c162 = "\\", peg$c163 = peg$literalExpectation("\\", false), peg$c164 = function(sequence) {
6906
6915
  return sequence;
6907
- }, peg$c160 = "‌", peg$c161 = peg$literalExpectation("‌", false), peg$c162 = "‍", peg$c163 = peg$literalExpectation("‍", false), peg$c164 = "u", peg$c165 = peg$literalExpectation("u", false), peg$c166 = function(digits) {
6916
+ }, peg$c165 = "‌", peg$c166 = peg$literalExpectation("‌", false), peg$c167 = "‍", peg$c168 = peg$literalExpectation("‍", false), peg$c169 = "u", peg$c170 = peg$literalExpectation("u", false), peg$c171 = function(digits) {
6908
6917
  return String.fromCharCode(parseInt(digits, 16));
6909
- }, peg$c167 = function() {
6918
+ }, peg$c172 = function() {
6910
6919
  return { type: "Literal", value: null };
6911
- }, peg$c168 = function() {
6920
+ }, peg$c173 = function() {
6912
6921
  return { type: "Literal", value: true };
6913
- }, peg$c169 = function() {
6922
+ }, peg$c174 = function() {
6914
6923
  return { type: "Literal", value: false };
6915
- }, peg$c170 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c171 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c172 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c173 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c174 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c175 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c176 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c177 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c178 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c179 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c180 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c181 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c182 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c183 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c184 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c185 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c186 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c187 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c188 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c189 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c192 = /^[0-9a-f]/i, peg$c193 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c194 = "break", peg$c195 = peg$literalExpectation("break", false), peg$c196 = "case", peg$c197 = peg$literalExpectation("case", false), peg$c198 = "catch", peg$c199 = peg$literalExpectation("catch", false), peg$c200 = "class", peg$c201 = peg$literalExpectation("class", false), peg$c202 = "const", peg$c203 = peg$literalExpectation("const", false), peg$c204 = "continue", peg$c205 = peg$literalExpectation("continue", false), peg$c206 = "debugger", peg$c207 = peg$literalExpectation("debugger", false), peg$c208 = "default", peg$c209 = peg$literalExpectation("default", false), peg$c210 = "delete", peg$c211 = peg$literalExpectation("delete", false), peg$c212 = "do", peg$c213 = peg$literalExpectation("do", false), peg$c214 = "else", peg$c215 = peg$literalExpectation("else", false), peg$c216 = "export", peg$c217 = peg$literalExpectation("export", false), peg$c218 = "extends", peg$c219 = peg$literalExpectation("extends", false), peg$c220 = "finally", peg$c221 = peg$literalExpectation("finally", false), peg$c222 = "for", peg$c223 = peg$literalExpectation("for", false), peg$c224 = "function", peg$c225 = peg$literalExpectation("function", false), peg$c228 = "if", peg$c229 = peg$literalExpectation("if", false), peg$c230 = "import", peg$c231 = peg$literalExpectation("import", false), peg$c232 = "instanceof", peg$c233 = peg$literalExpectation("instanceof", false), peg$c234 = "in", peg$c235 = peg$literalExpectation("in", false), peg$c236 = "new", peg$c237 = peg$literalExpectation("new", false), peg$c238 = "null", peg$c239 = peg$literalExpectation("null", false), peg$c240 = "return", peg$c241 = peg$literalExpectation("return", false), peg$c244 = "super", peg$c245 = peg$literalExpectation("super", false), peg$c246 = "switch", peg$c247 = peg$literalExpectation("switch", false), peg$c248 = "this", peg$c249 = peg$literalExpectation("this", false), peg$c250 = "throw", peg$c251 = peg$literalExpectation("throw", false), peg$c252 = "try", peg$c253 = peg$literalExpectation("try", false), peg$c254 = "typeof", peg$c255 = peg$literalExpectation("typeof", false), peg$c256 = "var", peg$c257 = peg$literalExpectation("var", false), peg$c258 = "void", peg$c259 = peg$literalExpectation("void", false), peg$c260 = "while", peg$c261 = peg$literalExpectation("while", false), peg$c262 = "with", peg$c263 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
6924
+ }, peg$c175 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c176 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c177 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c178 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c179 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c180 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c181 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c182 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c183 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c184 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c185 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c186 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c187 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c188 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c189 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c190 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c191 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c192 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c193 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c194 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c197 = /^[0-9a-f]/i, peg$c198 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c199 = "break", peg$c200 = peg$literalExpectation("break", false), peg$c201 = "case", peg$c202 = peg$literalExpectation("case", false), peg$c203 = "catch", peg$c204 = peg$literalExpectation("catch", false), peg$c205 = "class", peg$c206 = peg$literalExpectation("class", false), peg$c207 = "const", peg$c208 = peg$literalExpectation("const", false), peg$c209 = "continue", peg$c210 = peg$literalExpectation("continue", false), peg$c211 = "debugger", peg$c212 = peg$literalExpectation("debugger", false), peg$c213 = "default", peg$c214 = peg$literalExpectation("default", false), peg$c215 = "delete", peg$c216 = peg$literalExpectation("delete", false), peg$c217 = "do", peg$c218 = peg$literalExpectation("do", false), peg$c219 = "else", peg$c220 = peg$literalExpectation("else", false), peg$c221 = "export", peg$c222 = peg$literalExpectation("export", false), peg$c223 = "extends", peg$c224 = peg$literalExpectation("extends", false), peg$c225 = "finally", peg$c226 = peg$literalExpectation("finally", false), peg$c227 = "for", peg$c228 = peg$literalExpectation("for", false), peg$c229 = "function", peg$c230 = peg$literalExpectation("function", false), peg$c233 = "if", peg$c234 = peg$literalExpectation("if", false), peg$c235 = "import", peg$c236 = peg$literalExpectation("import", false), peg$c237 = "instanceof", peg$c238 = peg$literalExpectation("instanceof", false), peg$c239 = "in", peg$c240 = peg$literalExpectation("in", false), peg$c241 = "new", peg$c242 = peg$literalExpectation("new", false), peg$c243 = "null", peg$c244 = peg$literalExpectation("null", false), peg$c245 = "return", peg$c246 = peg$literalExpectation("return", false), peg$c249 = "super", peg$c250 = peg$literalExpectation("super", false), peg$c251 = "switch", peg$c252 = peg$literalExpectation("switch", false), peg$c253 = "this", peg$c254 = peg$literalExpectation("this", false), peg$c255 = "throw", peg$c256 = peg$literalExpectation("throw", false), peg$c257 = "try", peg$c258 = peg$literalExpectation("try", false), peg$c259 = "typeof", peg$c260 = peg$literalExpectation("typeof", false), peg$c261 = "var", peg$c262 = peg$literalExpectation("var", false), peg$c263 = "void", peg$c264 = peg$literalExpectation("void", false), peg$c265 = "while", peg$c266 = peg$literalExpectation("while", false), peg$c267 = "with", peg$c268 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
6916
6925
  if ("startRule" in options) {
6917
6926
  if (!(options.startRule in peg$startRuleFunctions)) {
6918
6927
  throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
@@ -9791,14 +9800,22 @@ function peg$parse(input, options) {
9791
9800
  if (s1 !== peg$FAILED) {
9792
9801
  s2 = peg$parse_();
9793
9802
  if (s2 !== peg$FAILED) {
9794
- s3 = peg$parseComparisonOperator();
9803
+ if (input.substr(peg$currPos, 2) === peg$c100) {
9804
+ s3 = peg$c100;
9805
+ peg$currPos += 2;
9806
+ } else {
9807
+ s3 = peg$FAILED;
9808
+ if (peg$silentFails === 0) {
9809
+ peg$fail(peg$c101);
9810
+ }
9811
+ }
9795
9812
  if (s3 !== peg$FAILED) {
9796
9813
  s4 = peg$parse_();
9797
9814
  if (s4 !== peg$FAILED) {
9798
9815
  s5 = peg$parseslowUnary();
9799
9816
  if (s5 !== peg$FAILED) {
9800
9817
  peg$savedPos = s0;
9801
- s1 = peg$c100(s1, s3, s5);
9818
+ s1 = peg$c102(s1, s5);
9802
9819
  s0 = s1;
9803
9820
  } else {
9804
9821
  peg$currPos = s0;
@@ -9821,7 +9838,43 @@ function peg$parse(input, options) {
9821
9838
  s0 = peg$FAILED;
9822
9839
  }
9823
9840
  if (s0 === peg$FAILED) {
9824
- s0 = peg$parseslowUnary();
9841
+ s0 = peg$currPos;
9842
+ s1 = peg$parseslowUnary();
9843
+ if (s1 !== peg$FAILED) {
9844
+ s2 = peg$parse_();
9845
+ if (s2 !== peg$FAILED) {
9846
+ s3 = peg$parseComparisonOperator();
9847
+ if (s3 !== peg$FAILED) {
9848
+ s4 = peg$parse_();
9849
+ if (s4 !== peg$FAILED) {
9850
+ s5 = peg$parseslowUnary();
9851
+ if (s5 !== peg$FAILED) {
9852
+ peg$savedPos = s0;
9853
+ s1 = peg$c103(s1, s3, s5);
9854
+ s0 = s1;
9855
+ } else {
9856
+ peg$currPos = s0;
9857
+ s0 = peg$FAILED;
9858
+ }
9859
+ } else {
9860
+ peg$currPos = s0;
9861
+ s0 = peg$FAILED;
9862
+ }
9863
+ } else {
9864
+ peg$currPos = s0;
9865
+ s0 = peg$FAILED;
9866
+ }
9867
+ } else {
9868
+ peg$currPos = s0;
9869
+ s0 = peg$FAILED;
9870
+ }
9871
+ } else {
9872
+ peg$currPos = s0;
9873
+ s0 = peg$FAILED;
9874
+ }
9875
+ if (s0 === peg$FAILED) {
9876
+ s0 = peg$parseslowUnary();
9877
+ }
9825
9878
  }
9826
9879
  return s0;
9827
9880
  }
@@ -9829,12 +9882,12 @@ function peg$parse(input, options) {
9829
9882
  var s0, s1, s2, s3;
9830
9883
  s0 = peg$currPos;
9831
9884
  if (input.charCodeAt(peg$currPos) === 33) {
9832
- s1 = peg$c101;
9885
+ s1 = peg$c104;
9833
9886
  peg$currPos++;
9834
9887
  } else {
9835
9888
  s1 = peg$FAILED;
9836
9889
  if (peg$silentFails === 0) {
9837
- peg$fail(peg$c102);
9890
+ peg$fail(peg$c105);
9838
9891
  }
9839
9892
  }
9840
9893
  if (s1 !== peg$FAILED) {
@@ -9843,7 +9896,7 @@ function peg$parse(input, options) {
9843
9896
  s3 = peg$parseslowUnary();
9844
9897
  if (s3 !== peg$FAILED) {
9845
9898
  peg$savedPos = s0;
9846
- s1 = peg$c103(s3);
9899
+ s1 = peg$c106(s3);
9847
9900
  s0 = s1;
9848
9901
  } else {
9849
9902
  peg$currPos = s0;
@@ -9892,7 +9945,7 @@ function peg$parse(input, options) {
9892
9945
  }
9893
9946
  if (s5 !== peg$FAILED) {
9894
9947
  peg$savedPos = s0;
9895
- s1 = peg$c104(s3);
9948
+ s1 = peg$c107(s3);
9896
9949
  s0 = s1;
9897
9950
  } else {
9898
9951
  peg$currPos = s0;
@@ -9915,13 +9968,79 @@ function peg$parse(input, options) {
9915
9968
  s0 = peg$FAILED;
9916
9969
  }
9917
9970
  if (s0 === peg$FAILED) {
9918
- s0 = peg$parseslowNumericLiteral();
9971
+ s0 = peg$parseslowQuotedStringLiteral();
9919
9972
  if (s0 === peg$FAILED) {
9920
- s0 = peg$parseslowBooleanLiteral();
9973
+ s0 = peg$parseslowNumericLiteral();
9921
9974
  if (s0 === peg$FAILED) {
9922
- s0 = peg$parseslowPropertyAccess();
9975
+ s0 = peg$parseslowBooleanLiteral();
9976
+ if (s0 === peg$FAILED) {
9977
+ s0 = peg$parseslowPropertyAccess();
9978
+ }
9979
+ }
9980
+ }
9981
+ }
9982
+ return s0;
9983
+ }
9984
+ function peg$parseslowQuotedStringLiteral() {
9985
+ var s0, s1, s2, s3;
9986
+ s0 = peg$currPos;
9987
+ if (input.charCodeAt(peg$currPos) === 39) {
9988
+ s1 = peg$c20;
9989
+ peg$currPos++;
9990
+ } else {
9991
+ s1 = peg$FAILED;
9992
+ if (peg$silentFails === 0) {
9993
+ peg$fail(peg$c21);
9994
+ }
9995
+ }
9996
+ if (s1 !== peg$FAILED) {
9997
+ s2 = [];
9998
+ if (peg$c22.test(input.charAt(peg$currPos))) {
9999
+ s3 = input.charAt(peg$currPos);
10000
+ peg$currPos++;
10001
+ } else {
10002
+ s3 = peg$FAILED;
10003
+ if (peg$silentFails === 0) {
10004
+ peg$fail(peg$c23);
10005
+ }
10006
+ }
10007
+ while (s3 !== peg$FAILED) {
10008
+ s2.push(s3);
10009
+ if (peg$c22.test(input.charAt(peg$currPos))) {
10010
+ s3 = input.charAt(peg$currPos);
10011
+ peg$currPos++;
10012
+ } else {
10013
+ s3 = peg$FAILED;
10014
+ if (peg$silentFails === 0) {
10015
+ peg$fail(peg$c23);
10016
+ }
10017
+ }
10018
+ }
10019
+ if (s2 !== peg$FAILED) {
10020
+ if (input.charCodeAt(peg$currPos) === 39) {
10021
+ s3 = peg$c20;
10022
+ peg$currPos++;
10023
+ } else {
10024
+ s3 = peg$FAILED;
10025
+ if (peg$silentFails === 0) {
10026
+ peg$fail(peg$c21);
10027
+ }
10028
+ }
10029
+ if (s3 !== peg$FAILED) {
10030
+ peg$savedPos = s0;
10031
+ s1 = peg$c108(s2);
10032
+ s0 = s1;
10033
+ } else {
10034
+ peg$currPos = s0;
10035
+ s0 = peg$FAILED;
9923
10036
  }
10037
+ } else {
10038
+ peg$currPos = s0;
10039
+ s0 = peg$FAILED;
9924
10040
  }
10041
+ } else {
10042
+ peg$currPos = s0;
10043
+ s0 = peg$FAILED;
9925
10044
  }
9926
10045
  return s0;
9927
10046
  }
@@ -9930,12 +10049,12 @@ function peg$parse(input, options) {
9930
10049
  s0 = peg$currPos;
9931
10050
  s1 = peg$currPos;
9932
10051
  if (input.charCodeAt(peg$currPos) === 45) {
9933
- s2 = peg$c105;
10052
+ s2 = peg$c109;
9934
10053
  peg$currPos++;
9935
10054
  } else {
9936
10055
  s2 = peg$FAILED;
9937
10056
  if (peg$silentFails === 0) {
9938
- peg$fail(peg$c106);
10057
+ peg$fail(peg$c110);
9939
10058
  }
9940
10059
  }
9941
10060
  if (s2 === peg$FAILED) {
@@ -9943,25 +10062,25 @@ function peg$parse(input, options) {
9943
10062
  }
9944
10063
  if (s2 !== peg$FAILED) {
9945
10064
  s3 = [];
9946
- if (peg$c107.test(input.charAt(peg$currPos))) {
10065
+ if (peg$c111.test(input.charAt(peg$currPos))) {
9947
10066
  s4 = input.charAt(peg$currPos);
9948
10067
  peg$currPos++;
9949
10068
  } else {
9950
10069
  s4 = peg$FAILED;
9951
10070
  if (peg$silentFails === 0) {
9952
- peg$fail(peg$c108);
10071
+ peg$fail(peg$c112);
9953
10072
  }
9954
10073
  }
9955
10074
  if (s4 !== peg$FAILED) {
9956
10075
  while (s4 !== peg$FAILED) {
9957
10076
  s3.push(s4);
9958
- if (peg$c107.test(input.charAt(peg$currPos))) {
10077
+ if (peg$c111.test(input.charAt(peg$currPos))) {
9959
10078
  s4 = input.charAt(peg$currPos);
9960
10079
  peg$currPos++;
9961
10080
  } else {
9962
10081
  s4 = peg$FAILED;
9963
10082
  if (peg$silentFails === 0) {
9964
- peg$fail(peg$c108);
10083
+ peg$fail(peg$c112);
9965
10084
  }
9966
10085
  }
9967
10086
  }
@@ -9971,35 +10090,35 @@ function peg$parse(input, options) {
9971
10090
  if (s3 !== peg$FAILED) {
9972
10091
  s4 = peg$currPos;
9973
10092
  if (input.charCodeAt(peg$currPos) === 46) {
9974
- s5 = peg$c109;
10093
+ s5 = peg$c113;
9975
10094
  peg$currPos++;
9976
10095
  } else {
9977
10096
  s5 = peg$FAILED;
9978
10097
  if (peg$silentFails === 0) {
9979
- peg$fail(peg$c110);
10098
+ peg$fail(peg$c114);
9980
10099
  }
9981
10100
  }
9982
10101
  if (s5 !== peg$FAILED) {
9983
10102
  s6 = [];
9984
- if (peg$c107.test(input.charAt(peg$currPos))) {
10103
+ if (peg$c111.test(input.charAt(peg$currPos))) {
9985
10104
  s7 = input.charAt(peg$currPos);
9986
10105
  peg$currPos++;
9987
10106
  } else {
9988
10107
  s7 = peg$FAILED;
9989
10108
  if (peg$silentFails === 0) {
9990
- peg$fail(peg$c108);
10109
+ peg$fail(peg$c112);
9991
10110
  }
9992
10111
  }
9993
10112
  if (s7 !== peg$FAILED) {
9994
10113
  while (s7 !== peg$FAILED) {
9995
10114
  s6.push(s7);
9996
- if (peg$c107.test(input.charAt(peg$currPos))) {
10115
+ if (peg$c111.test(input.charAt(peg$currPos))) {
9997
10116
  s7 = input.charAt(peg$currPos);
9998
10117
  peg$currPos++;
9999
10118
  } else {
10000
10119
  s7 = peg$FAILED;
10001
10120
  if (peg$silentFails === 0) {
10002
- peg$fail(peg$c108);
10121
+ peg$fail(peg$c112);
10003
10122
  }
10004
10123
  }
10005
10124
  }
@@ -10037,7 +10156,7 @@ function peg$parse(input, options) {
10037
10156
  }
10038
10157
  if (s1 !== peg$FAILED) {
10039
10158
  peg$savedPos = s0;
10040
- s1 = peg$c111();
10159
+ s1 = peg$c115();
10041
10160
  }
10042
10161
  s0 = s1;
10043
10162
  return s0;
@@ -10045,13 +10164,13 @@ function peg$parse(input, options) {
10045
10164
  function peg$parseslowBooleanLiteral() {
10046
10165
  var s0, s1, s2, s3;
10047
10166
  s0 = peg$currPos;
10048
- if (input.substr(peg$currPos, 4) === peg$c112) {
10049
- s1 = peg$c112;
10167
+ if (input.substr(peg$currPos, 4) === peg$c116) {
10168
+ s1 = peg$c116;
10050
10169
  peg$currPos += 4;
10051
10170
  } else {
10052
10171
  s1 = peg$FAILED;
10053
10172
  if (peg$silentFails === 0) {
10054
- peg$fail(peg$c113);
10173
+ peg$fail(peg$c117);
10055
10174
  }
10056
10175
  }
10057
10176
  if (s1 !== peg$FAILED) {
@@ -10067,7 +10186,7 @@ function peg$parse(input, options) {
10067
10186
  }
10068
10187
  if (s2 !== peg$FAILED) {
10069
10188
  peg$savedPos = s0;
10070
- s1 = peg$c114();
10189
+ s1 = peg$c118();
10071
10190
  s0 = s1;
10072
10191
  } else {
10073
10192
  peg$currPos = s0;
@@ -10079,13 +10198,13 @@ function peg$parse(input, options) {
10079
10198
  }
10080
10199
  if (s0 === peg$FAILED) {
10081
10200
  s0 = peg$currPos;
10082
- if (input.substr(peg$currPos, 5) === peg$c115) {
10083
- s1 = peg$c115;
10201
+ if (input.substr(peg$currPos, 5) === peg$c119) {
10202
+ s1 = peg$c119;
10084
10203
  peg$currPos += 5;
10085
10204
  } else {
10086
10205
  s1 = peg$FAILED;
10087
10206
  if (peg$silentFails === 0) {
10088
- peg$fail(peg$c116);
10207
+ peg$fail(peg$c120);
10089
10208
  }
10090
10209
  }
10091
10210
  if (s1 !== peg$FAILED) {
@@ -10101,7 +10220,7 @@ function peg$parse(input, options) {
10101
10220
  }
10102
10221
  if (s2 !== peg$FAILED) {
10103
10222
  peg$savedPos = s0;
10104
- s1 = peg$c117();
10223
+ s1 = peg$c121();
10105
10224
  s0 = s1;
10106
10225
  } else {
10107
10226
  peg$currPos = s0;
@@ -10124,12 +10243,12 @@ function peg$parse(input, options) {
10124
10243
  s4 = peg$parse_();
10125
10244
  if (s4 !== peg$FAILED) {
10126
10245
  if (input.charCodeAt(peg$currPos) === 46) {
10127
- s5 = peg$c109;
10246
+ s5 = peg$c113;
10128
10247
  peg$currPos++;
10129
10248
  } else {
10130
10249
  s5 = peg$FAILED;
10131
10250
  if (peg$silentFails === 0) {
10132
- peg$fail(peg$c110);
10251
+ peg$fail(peg$c114);
10133
10252
  }
10134
10253
  }
10135
10254
  if (s5 !== peg$FAILED) {
@@ -10161,12 +10280,12 @@ function peg$parse(input, options) {
10161
10280
  s4 = peg$parse_();
10162
10281
  if (s4 !== peg$FAILED) {
10163
10282
  if (input.charCodeAt(peg$currPos) === 46) {
10164
- s5 = peg$c109;
10283
+ s5 = peg$c113;
10165
10284
  peg$currPos++;
10166
10285
  } else {
10167
10286
  s5 = peg$FAILED;
10168
10287
  if (peg$silentFails === 0) {
10169
- peg$fail(peg$c110);
10288
+ peg$fail(peg$c114);
10170
10289
  }
10171
10290
  }
10172
10291
  if (s5 !== peg$FAILED) {
@@ -10195,7 +10314,7 @@ function peg$parse(input, options) {
10195
10314
  }
10196
10315
  if (s2 !== peg$FAILED) {
10197
10316
  peg$savedPos = s0;
10198
- s1 = peg$c118(s1, s2);
10317
+ s1 = peg$c122(s1, s2);
10199
10318
  s0 = s1;
10200
10319
  } else {
10201
10320
  peg$currPos = s0;
@@ -10209,83 +10328,83 @@ function peg$parse(input, options) {
10209
10328
  }
10210
10329
  function peg$parseComparisonOperator() {
10211
10330
  var s0;
10212
- if (input.substr(peg$currPos, 3) === peg$c119) {
10213
- s0 = peg$c119;
10331
+ if (input.substr(peg$currPos, 3) === peg$c123) {
10332
+ s0 = peg$c123;
10214
10333
  peg$currPos += 3;
10215
10334
  } else {
10216
10335
  s0 = peg$FAILED;
10217
10336
  if (peg$silentFails === 0) {
10218
- peg$fail(peg$c120);
10337
+ peg$fail(peg$c124);
10219
10338
  }
10220
10339
  }
10221
10340
  if (s0 === peg$FAILED) {
10222
- if (input.substr(peg$currPos, 3) === peg$c121) {
10223
- s0 = peg$c121;
10341
+ if (input.substr(peg$currPos, 3) === peg$c125) {
10342
+ s0 = peg$c125;
10224
10343
  peg$currPos += 3;
10225
10344
  } else {
10226
10345
  s0 = peg$FAILED;
10227
10346
  if (peg$silentFails === 0) {
10228
- peg$fail(peg$c122);
10347
+ peg$fail(peg$c126);
10229
10348
  }
10230
10349
  }
10231
10350
  if (s0 === peg$FAILED) {
10232
- if (input.substr(peg$currPos, 2) === peg$c123) {
10233
- s0 = peg$c123;
10351
+ if (input.substr(peg$currPos, 2) === peg$c127) {
10352
+ s0 = peg$c127;
10234
10353
  peg$currPos += 2;
10235
10354
  } else {
10236
10355
  s0 = peg$FAILED;
10237
10356
  if (peg$silentFails === 0) {
10238
- peg$fail(peg$c124);
10357
+ peg$fail(peg$c128);
10239
10358
  }
10240
10359
  }
10241
10360
  if (s0 === peg$FAILED) {
10242
- if (input.substr(peg$currPos, 2) === peg$c125) {
10243
- s0 = peg$c125;
10361
+ if (input.substr(peg$currPos, 2) === peg$c129) {
10362
+ s0 = peg$c129;
10244
10363
  peg$currPos += 2;
10245
10364
  } else {
10246
10365
  s0 = peg$FAILED;
10247
10366
  if (peg$silentFails === 0) {
10248
- peg$fail(peg$c126);
10367
+ peg$fail(peg$c130);
10249
10368
  }
10250
10369
  }
10251
10370
  if (s0 === peg$FAILED) {
10252
- if (input.substr(peg$currPos, 2) === peg$c127) {
10253
- s0 = peg$c127;
10371
+ if (input.substr(peg$currPos, 2) === peg$c131) {
10372
+ s0 = peg$c131;
10254
10373
  peg$currPos += 2;
10255
10374
  } else {
10256
10375
  s0 = peg$FAILED;
10257
10376
  if (peg$silentFails === 0) {
10258
- peg$fail(peg$c128);
10377
+ peg$fail(peg$c132);
10259
10378
  }
10260
10379
  }
10261
10380
  if (s0 === peg$FAILED) {
10262
- if (input.substr(peg$currPos, 2) === peg$c129) {
10263
- s0 = peg$c129;
10381
+ if (input.substr(peg$currPos, 2) === peg$c133) {
10382
+ s0 = peg$c133;
10264
10383
  peg$currPos += 2;
10265
10384
  } else {
10266
10385
  s0 = peg$FAILED;
10267
10386
  if (peg$silentFails === 0) {
10268
- peg$fail(peg$c130);
10387
+ peg$fail(peg$c134);
10269
10388
  }
10270
10389
  }
10271
10390
  if (s0 === peg$FAILED) {
10272
10391
  if (input.charCodeAt(peg$currPos) === 60) {
10273
- s0 = peg$c131;
10392
+ s0 = peg$c135;
10274
10393
  peg$currPos++;
10275
10394
  } else {
10276
10395
  s0 = peg$FAILED;
10277
10396
  if (peg$silentFails === 0) {
10278
- peg$fail(peg$c132);
10397
+ peg$fail(peg$c136);
10279
10398
  }
10280
10399
  }
10281
10400
  if (s0 === peg$FAILED) {
10282
10401
  if (input.charCodeAt(peg$currPos) === 62) {
10283
- s0 = peg$c133;
10402
+ s0 = peg$c137;
10284
10403
  peg$currPos++;
10285
10404
  } else {
10286
10405
  s0 = peg$FAILED;
10287
10406
  if (peg$silentFails === 0) {
10288
- peg$fail(peg$c134);
10407
+ peg$fail(peg$c138);
10289
10408
  }
10290
10409
  }
10291
10410
  }
@@ -10383,7 +10502,7 @@ function peg$parse(input, options) {
10383
10502
  }
10384
10503
  if (s2 !== peg$FAILED) {
10385
10504
  peg$savedPos = s0;
10386
- s1 = peg$c135(s1, s2);
10505
+ s1 = peg$c139(s1, s2);
10387
10506
  s0 = s1;
10388
10507
  } else {
10389
10508
  peg$currPos = s0;
@@ -10476,7 +10595,7 @@ function peg$parse(input, options) {
10476
10595
  }
10477
10596
  if (s2 !== peg$FAILED) {
10478
10597
  peg$savedPos = s0;
10479
- s1 = peg$c136(s1, s2);
10598
+ s1 = peg$c140(s1, s2);
10480
10599
  s0 = s1;
10481
10600
  } else {
10482
10601
  peg$currPos = s0;
@@ -10518,7 +10637,7 @@ function peg$parse(input, options) {
10518
10637
  }
10519
10638
  if (s5 !== peg$FAILED) {
10520
10639
  peg$savedPos = s0;
10521
- s1 = peg$c104(s3);
10640
+ s1 = peg$c107(s3);
10522
10641
  s0 = s1;
10523
10642
  } else {
10524
10643
  peg$currPos = s0;
@@ -10541,13 +10660,16 @@ function peg$parse(input, options) {
10541
10660
  s0 = peg$FAILED;
10542
10661
  }
10543
10662
  if (s0 === peg$FAILED) {
10544
- s0 = peg$parseorderingCondition();
10663
+ s0 = peg$parsestartsWithCondition();
10545
10664
  if (s0 === peg$FAILED) {
10546
- s0 = peg$parseequalityComparisonCondition();
10665
+ s0 = peg$parseorderingCondition();
10547
10666
  if (s0 === peg$FAILED) {
10548
- s0 = peg$parseenumCondition();
10667
+ s0 = peg$parseequalityComparisonCondition();
10549
10668
  if (s0 === peg$FAILED) {
10550
- s0 = peg$parsebooleanCondition();
10669
+ s0 = peg$parseenumCondition();
10670
+ if (s0 === peg$FAILED) {
10671
+ s0 = peg$parsebooleanCondition();
10672
+ }
10551
10673
  }
10552
10674
  }
10553
10675
  }
@@ -10565,7 +10687,7 @@ function peg$parse(input, options) {
10565
10687
  s2 = peg$parseaccessor();
10566
10688
  if (s2 !== peg$FAILED) {
10567
10689
  peg$savedPos = s0;
10568
- s1 = peg$c137(s1, s2);
10690
+ s1 = peg$c141(s1, s2);
10569
10691
  s0 = s1;
10570
10692
  } else {
10571
10693
  peg$currPos = s0;
@@ -10591,7 +10713,7 @@ function peg$parse(input, options) {
10591
10713
  s5 = peg$parseorderingValue();
10592
10714
  if (s5 !== peg$FAILED) {
10593
10715
  peg$savedPos = s0;
10594
- s1 = peg$c138(s1, s3, s5);
10716
+ s1 = peg$c142(s1, s3, s5);
10595
10717
  s0 = s1;
10596
10718
  } else {
10597
10719
  peg$currPos = s0;
@@ -10623,12 +10745,135 @@ function peg$parse(input, options) {
10623
10745
  s1 = peg$parseaccessor();
10624
10746
  if (s1 !== peg$FAILED) {
10625
10747
  peg$savedPos = s0;
10626
- s1 = peg$c139(s1);
10748
+ s1 = peg$c143(s1);
10749
+ }
10750
+ s0 = s1;
10751
+ }
10752
+ return s0;
10753
+ }
10754
+ function peg$parsestartsWithCondition() {
10755
+ var s0, s1, s2, s3, s4, s5;
10756
+ s0 = peg$currPos;
10757
+ s1 = peg$parseaccessor();
10758
+ if (s1 !== peg$FAILED) {
10759
+ s2 = peg$parse_();
10760
+ if (s2 !== peg$FAILED) {
10761
+ if (input.substr(peg$currPos, 2) === peg$c100) {
10762
+ s3 = peg$c100;
10763
+ peg$currPos += 2;
10764
+ } else {
10765
+ s3 = peg$FAILED;
10766
+ if (peg$silentFails === 0) {
10767
+ peg$fail(peg$c101);
10768
+ }
10769
+ }
10770
+ if (s3 !== peg$FAILED) {
10771
+ s4 = peg$parse_();
10772
+ if (s4 !== peg$FAILED) {
10773
+ s5 = peg$parsestartsWithValue();
10774
+ if (s5 !== peg$FAILED) {
10775
+ peg$savedPos = s0;
10776
+ s1 = peg$c144(s1, s5);
10777
+ s0 = s1;
10778
+ } else {
10779
+ peg$currPos = s0;
10780
+ s0 = peg$FAILED;
10781
+ }
10782
+ } else {
10783
+ peg$currPos = s0;
10784
+ s0 = peg$FAILED;
10785
+ }
10786
+ } else {
10787
+ peg$currPos = s0;
10788
+ s0 = peg$FAILED;
10789
+ }
10790
+ } else {
10791
+ peg$currPos = s0;
10792
+ s0 = peg$FAILED;
10793
+ }
10794
+ } else {
10795
+ peg$currPos = s0;
10796
+ s0 = peg$FAILED;
10797
+ }
10798
+ return s0;
10799
+ }
10800
+ function peg$parsestartsWithValue() {
10801
+ var s0, s1;
10802
+ s0 = peg$parsequotedStringLiteral();
10803
+ if (s0 === peg$FAILED) {
10804
+ s0 = peg$currPos;
10805
+ s1 = peg$parseaccessor();
10806
+ if (s1 !== peg$FAILED) {
10807
+ peg$savedPos = s0;
10808
+ s1 = peg$c143(s1);
10627
10809
  }
10628
10810
  s0 = s1;
10629
10811
  }
10630
10812
  return s0;
10631
10813
  }
10814
+ function peg$parsequotedStringLiteral() {
10815
+ var s0, s1, s2, s3;
10816
+ s0 = peg$currPos;
10817
+ if (input.charCodeAt(peg$currPos) === 39) {
10818
+ s1 = peg$c20;
10819
+ peg$currPos++;
10820
+ } else {
10821
+ s1 = peg$FAILED;
10822
+ if (peg$silentFails === 0) {
10823
+ peg$fail(peg$c21);
10824
+ }
10825
+ }
10826
+ if (s1 !== peg$FAILED) {
10827
+ s2 = [];
10828
+ if (peg$c22.test(input.charAt(peg$currPos))) {
10829
+ s3 = input.charAt(peg$currPos);
10830
+ peg$currPos++;
10831
+ } else {
10832
+ s3 = peg$FAILED;
10833
+ if (peg$silentFails === 0) {
10834
+ peg$fail(peg$c23);
10835
+ }
10836
+ }
10837
+ while (s3 !== peg$FAILED) {
10838
+ s2.push(s3);
10839
+ if (peg$c22.test(input.charAt(peg$currPos))) {
10840
+ s3 = input.charAt(peg$currPos);
10841
+ peg$currPos++;
10842
+ } else {
10843
+ s3 = peg$FAILED;
10844
+ if (peg$silentFails === 0) {
10845
+ peg$fail(peg$c23);
10846
+ }
10847
+ }
10848
+ }
10849
+ if (s2 !== peg$FAILED) {
10850
+ if (input.charCodeAt(peg$currPos) === 39) {
10851
+ s3 = peg$c20;
10852
+ peg$currPos++;
10853
+ } else {
10854
+ s3 = peg$FAILED;
10855
+ if (peg$silentFails === 0) {
10856
+ peg$fail(peg$c21);
10857
+ }
10858
+ }
10859
+ if (s3 !== peg$FAILED) {
10860
+ peg$savedPos = s0;
10861
+ s1 = peg$c24(s2);
10862
+ s0 = s1;
10863
+ } else {
10864
+ peg$currPos = s0;
10865
+ s0 = peg$FAILED;
10866
+ }
10867
+ } else {
10868
+ peg$currPos = s0;
10869
+ s0 = peg$FAILED;
10870
+ }
10871
+ } else {
10872
+ peg$currPos = s0;
10873
+ s0 = peg$FAILED;
10874
+ }
10875
+ return s0;
10876
+ }
10632
10877
  function peg$parseequalityComparisonCondition() {
10633
10878
  var s0, s1, s2, s3, s4, s5;
10634
10879
  s0 = peg$currPos;
@@ -10643,7 +10888,7 @@ function peg$parse(input, options) {
10643
10888
  s5 = peg$parseequalityComparisonValue();
10644
10889
  if (s5 !== peg$FAILED) {
10645
10890
  peg$savedPos = s0;
10646
- s1 = peg$c140(s1, s3, s5);
10891
+ s1 = peg$c145(s1, s3, s5);
10647
10892
  s0 = s1;
10648
10893
  } else {
10649
10894
  peg$currPos = s0;
@@ -10671,13 +10916,16 @@ function peg$parse(input, options) {
10671
10916
  var s0, s1;
10672
10917
  s0 = peg$parsenumericValue();
10673
10918
  if (s0 === peg$FAILED) {
10674
- s0 = peg$currPos;
10675
- s1 = peg$parsedottedAccessor();
10676
- if (s1 !== peg$FAILED) {
10677
- peg$savedPos = s0;
10678
- s1 = peg$c139(s1);
10919
+ s0 = peg$parsequotedStringLiteral();
10920
+ if (s0 === peg$FAILED) {
10921
+ s0 = peg$currPos;
10922
+ s1 = peg$parsedottedAccessor();
10923
+ if (s1 !== peg$FAILED) {
10924
+ peg$savedPos = s0;
10925
+ s1 = peg$c143(s1);
10926
+ }
10927
+ s0 = s1;
10679
10928
  }
10680
- s0 = s1;
10681
10929
  }
10682
10930
  return s0;
10683
10931
  }
@@ -10691,12 +10939,12 @@ function peg$parse(input, options) {
10691
10939
  s4 = peg$parse_();
10692
10940
  if (s4 !== peg$FAILED) {
10693
10941
  if (input.charCodeAt(peg$currPos) === 46) {
10694
- s5 = peg$c109;
10942
+ s5 = peg$c113;
10695
10943
  peg$currPos++;
10696
10944
  } else {
10697
10945
  s5 = peg$FAILED;
10698
10946
  if (peg$silentFails === 0) {
10699
- peg$fail(peg$c110);
10947
+ peg$fail(peg$c114);
10700
10948
  }
10701
10949
  }
10702
10950
  if (s5 !== peg$FAILED) {
@@ -10729,12 +10977,12 @@ function peg$parse(input, options) {
10729
10977
  s4 = peg$parse_();
10730
10978
  if (s4 !== peg$FAILED) {
10731
10979
  if (input.charCodeAt(peg$currPos) === 46) {
10732
- s5 = peg$c109;
10980
+ s5 = peg$c113;
10733
10981
  peg$currPos++;
10734
10982
  } else {
10735
10983
  s5 = peg$FAILED;
10736
10984
  if (peg$silentFails === 0) {
10737
- peg$fail(peg$c110);
10985
+ peg$fail(peg$c114);
10738
10986
  }
10739
10987
  }
10740
10988
  if (s5 !== peg$FAILED) {
@@ -10766,7 +11014,7 @@ function peg$parse(input, options) {
10766
11014
  }
10767
11015
  if (s2 !== peg$FAILED) {
10768
11016
  peg$savedPos = s0;
10769
- s1 = peg$c141(s1, s2);
11017
+ s1 = peg$c146(s1, s2);
10770
11018
  s0 = s1;
10771
11019
  } else {
10772
11020
  peg$currPos = s0;
@@ -10782,12 +11030,12 @@ function peg$parse(input, options) {
10782
11030
  var s0, s1, s2, s3, s4, s5, s6;
10783
11031
  s0 = peg$currPos;
10784
11032
  if (input.charCodeAt(peg$currPos) === 45) {
10785
- s1 = peg$c105;
11033
+ s1 = peg$c109;
10786
11034
  peg$currPos++;
10787
11035
  } else {
10788
11036
  s1 = peg$FAILED;
10789
11037
  if (peg$silentFails === 0) {
10790
- peg$fail(peg$c106);
11038
+ peg$fail(peg$c110);
10791
11039
  }
10792
11040
  }
10793
11041
  if (s1 === peg$FAILED) {
@@ -10795,25 +11043,25 @@ function peg$parse(input, options) {
10795
11043
  }
10796
11044
  if (s1 !== peg$FAILED) {
10797
11045
  s2 = [];
10798
- if (peg$c107.test(input.charAt(peg$currPos))) {
11046
+ if (peg$c111.test(input.charAt(peg$currPos))) {
10799
11047
  s3 = input.charAt(peg$currPos);
10800
11048
  peg$currPos++;
10801
11049
  } else {
10802
11050
  s3 = peg$FAILED;
10803
11051
  if (peg$silentFails === 0) {
10804
- peg$fail(peg$c108);
11052
+ peg$fail(peg$c112);
10805
11053
  }
10806
11054
  }
10807
11055
  if (s3 !== peg$FAILED) {
10808
11056
  while (s3 !== peg$FAILED) {
10809
11057
  s2.push(s3);
10810
- if (peg$c107.test(input.charAt(peg$currPos))) {
11058
+ if (peg$c111.test(input.charAt(peg$currPos))) {
10811
11059
  s3 = input.charAt(peg$currPos);
10812
11060
  peg$currPos++;
10813
11061
  } else {
10814
11062
  s3 = peg$FAILED;
10815
11063
  if (peg$silentFails === 0) {
10816
- peg$fail(peg$c108);
11064
+ peg$fail(peg$c112);
10817
11065
  }
10818
11066
  }
10819
11067
  }
@@ -10823,35 +11071,35 @@ function peg$parse(input, options) {
10823
11071
  if (s2 !== peg$FAILED) {
10824
11072
  s3 = peg$currPos;
10825
11073
  if (input.charCodeAt(peg$currPos) === 46) {
10826
- s4 = peg$c109;
11074
+ s4 = peg$c113;
10827
11075
  peg$currPos++;
10828
11076
  } else {
10829
11077
  s4 = peg$FAILED;
10830
11078
  if (peg$silentFails === 0) {
10831
- peg$fail(peg$c110);
11079
+ peg$fail(peg$c114);
10832
11080
  }
10833
11081
  }
10834
11082
  if (s4 !== peg$FAILED) {
10835
11083
  s5 = [];
10836
- if (peg$c107.test(input.charAt(peg$currPos))) {
11084
+ if (peg$c111.test(input.charAt(peg$currPos))) {
10837
11085
  s6 = input.charAt(peg$currPos);
10838
11086
  peg$currPos++;
10839
11087
  } else {
10840
11088
  s6 = peg$FAILED;
10841
11089
  if (peg$silentFails === 0) {
10842
- peg$fail(peg$c108);
11090
+ peg$fail(peg$c112);
10843
11091
  }
10844
11092
  }
10845
11093
  if (s6 !== peg$FAILED) {
10846
11094
  while (s6 !== peg$FAILED) {
10847
11095
  s5.push(s6);
10848
- if (peg$c107.test(input.charAt(peg$currPos))) {
11096
+ if (peg$c111.test(input.charAt(peg$currPos))) {
10849
11097
  s6 = input.charAt(peg$currPos);
10850
11098
  peg$currPos++;
10851
11099
  } else {
10852
11100
  s6 = peg$FAILED;
10853
11101
  if (peg$silentFails === 0) {
10854
- peg$fail(peg$c108);
11102
+ peg$fail(peg$c112);
10855
11103
  }
10856
11104
  }
10857
11105
  }
@@ -10904,7 +11152,7 @@ function peg$parse(input, options) {
10904
11152
  s5 = peg$parseIdentifier();
10905
11153
  if (s5 !== peg$FAILED) {
10906
11154
  peg$savedPos = s0;
10907
- s1 = peg$c142(s1, s3, s5);
11155
+ s1 = peg$c147(s1, s3, s5);
10908
11156
  s0 = s1;
10909
11157
  } else {
10910
11158
  peg$currPos = s0;
@@ -10940,17 +11188,17 @@ function peg$parse(input, options) {
10940
11188
  var s0, s1;
10941
11189
  s0 = peg$currPos;
10942
11190
  if (input.charCodeAt(peg$currPos) === 46) {
10943
- s1 = peg$c109;
11191
+ s1 = peg$c113;
10944
11192
  peg$currPos++;
10945
11193
  } else {
10946
11194
  s1 = peg$FAILED;
10947
11195
  if (peg$silentFails === 0) {
10948
- peg$fail(peg$c110);
11196
+ peg$fail(peg$c114);
10949
11197
  }
10950
11198
  }
10951
11199
  if (s1 !== peg$FAILED) {
10952
11200
  peg$savedPos = s0;
10953
- s1 = peg$c143();
11201
+ s1 = peg$c148();
10954
11202
  }
10955
11203
  s0 = s1;
10956
11204
  return s0;
@@ -10965,12 +11213,12 @@ function peg$parse(input, options) {
10965
11213
  s4 = peg$parse_();
10966
11214
  if (s4 !== peg$FAILED) {
10967
11215
  if (input.charCodeAt(peg$currPos) === 46) {
10968
- s5 = peg$c109;
11216
+ s5 = peg$c113;
10969
11217
  peg$currPos++;
10970
11218
  } else {
10971
11219
  s5 = peg$FAILED;
10972
11220
  if (peg$silentFails === 0) {
10973
- peg$fail(peg$c110);
11221
+ peg$fail(peg$c114);
10974
11222
  }
10975
11223
  }
10976
11224
  if (s5 !== peg$FAILED) {
@@ -11002,12 +11250,12 @@ function peg$parse(input, options) {
11002
11250
  s4 = peg$parse_();
11003
11251
  if (s4 !== peg$FAILED) {
11004
11252
  if (input.charCodeAt(peg$currPos) === 46) {
11005
- s5 = peg$c109;
11253
+ s5 = peg$c113;
11006
11254
  peg$currPos++;
11007
11255
  } else {
11008
11256
  s5 = peg$FAILED;
11009
11257
  if (peg$silentFails === 0) {
11010
- peg$fail(peg$c110);
11258
+ peg$fail(peg$c114);
11011
11259
  }
11012
11260
  }
11013
11261
  if (s5 !== peg$FAILED) {
@@ -11036,7 +11284,7 @@ function peg$parse(input, options) {
11036
11284
  }
11037
11285
  if (s2 !== peg$FAILED) {
11038
11286
  peg$savedPos = s0;
11039
- s1 = peg$c144(s1, s2);
11287
+ s1 = peg$c149(s1, s2);
11040
11288
  s0 = s1;
11041
11289
  } else {
11042
11290
  peg$currPos = s0;
@@ -11055,25 +11303,25 @@ function peg$parse(input, options) {
11055
11303
  s1 = peg$parse_();
11056
11304
  if (s1 !== peg$FAILED) {
11057
11305
  s2 = [];
11058
- if (peg$c107.test(input.charAt(peg$currPos))) {
11306
+ if (peg$c111.test(input.charAt(peg$currPos))) {
11059
11307
  s3 = input.charAt(peg$currPos);
11060
11308
  peg$currPos++;
11061
11309
  } else {
11062
11310
  s3 = peg$FAILED;
11063
11311
  if (peg$silentFails === 0) {
11064
- peg$fail(peg$c108);
11312
+ peg$fail(peg$c112);
11065
11313
  }
11066
11314
  }
11067
11315
  if (s3 !== peg$FAILED) {
11068
11316
  while (s3 !== peg$FAILED) {
11069
11317
  s2.push(s3);
11070
- if (peg$c107.test(input.charAt(peg$currPos))) {
11318
+ if (peg$c111.test(input.charAt(peg$currPos))) {
11071
11319
  s3 = input.charAt(peg$currPos);
11072
11320
  peg$currPos++;
11073
11321
  } else {
11074
11322
  s3 = peg$FAILED;
11075
11323
  if (peg$silentFails === 0) {
11076
- peg$fail(peg$c108);
11324
+ peg$fail(peg$c112);
11077
11325
  }
11078
11326
  }
11079
11327
  }
@@ -11096,7 +11344,7 @@ function peg$parse(input, options) {
11096
11344
  if (s0 === peg$FAILED) {
11097
11345
  s1 = peg$FAILED;
11098
11346
  if (peg$silentFails === 0) {
11099
- peg$fail(peg$c145);
11347
+ peg$fail(peg$c150);
11100
11348
  }
11101
11349
  }
11102
11350
  return s0;
@@ -11130,7 +11378,7 @@ function peg$parse(input, options) {
11130
11378
  if (s0 === peg$FAILED) {
11131
11379
  s1 = peg$FAILED;
11132
11380
  if (peg$silentFails === 0) {
11133
- peg$fail(peg$c146);
11381
+ peg$fail(peg$c151);
11134
11382
  }
11135
11383
  }
11136
11384
  return s0;
@@ -11139,25 +11387,25 @@ function peg$parse(input, options) {
11139
11387
  var s0, s1, s2;
11140
11388
  s0 = peg$currPos;
11141
11389
  s1 = [];
11142
- if (peg$c147.test(input.charAt(peg$currPos))) {
11390
+ if (peg$c152.test(input.charAt(peg$currPos))) {
11143
11391
  s2 = input.charAt(peg$currPos);
11144
11392
  peg$currPos++;
11145
11393
  } else {
11146
11394
  s2 = peg$FAILED;
11147
11395
  if (peg$silentFails === 0) {
11148
- peg$fail(peg$c148);
11396
+ peg$fail(peg$c153);
11149
11397
  }
11150
11398
  }
11151
11399
  if (s2 !== peg$FAILED) {
11152
11400
  while (s2 !== peg$FAILED) {
11153
11401
  s1.push(s2);
11154
- if (peg$c147.test(input.charAt(peg$currPos))) {
11402
+ if (peg$c152.test(input.charAt(peg$currPos))) {
11155
11403
  s2 = input.charAt(peg$currPos);
11156
11404
  peg$currPos++;
11157
11405
  } else {
11158
11406
  s2 = peg$FAILED;
11159
11407
  if (peg$silentFails === 0) {
11160
- peg$fail(peg$c148);
11408
+ peg$fail(peg$c153);
11161
11409
  }
11162
11410
  }
11163
11411
  }
@@ -11166,7 +11414,7 @@ function peg$parse(input, options) {
11166
11414
  }
11167
11415
  if (s1 !== peg$FAILED) {
11168
11416
  peg$savedPos = s0;
11169
- s1 = peg$c149();
11417
+ s1 = peg$c154();
11170
11418
  }
11171
11419
  s0 = s1;
11172
11420
  return s0;
@@ -11174,55 +11422,55 @@ function peg$parse(input, options) {
11174
11422
  function peg$parsebang() {
11175
11423
  var s0;
11176
11424
  if (input.charCodeAt(peg$currPos) === 33) {
11177
- s0 = peg$c101;
11425
+ s0 = peg$c104;
11178
11426
  peg$currPos++;
11179
11427
  } else {
11180
11428
  s0 = peg$FAILED;
11181
11429
  if (peg$silentFails === 0) {
11182
- peg$fail(peg$c102);
11430
+ peg$fail(peg$c105);
11183
11431
  }
11184
11432
  }
11185
11433
  return s0;
11186
11434
  }
11187
11435
  function peg$parseEqualityOperator() {
11188
11436
  var s0;
11189
- if (input.substr(peg$currPos, 3) === peg$c119) {
11190
- s0 = peg$c119;
11437
+ if (input.substr(peg$currPos, 3) === peg$c123) {
11438
+ s0 = peg$c123;
11191
11439
  peg$currPos += 3;
11192
11440
  } else {
11193
11441
  s0 = peg$FAILED;
11194
11442
  if (peg$silentFails === 0) {
11195
- peg$fail(peg$c120);
11443
+ peg$fail(peg$c124);
11196
11444
  }
11197
11445
  }
11198
11446
  if (s0 === peg$FAILED) {
11199
- if (input.substr(peg$currPos, 3) === peg$c121) {
11200
- s0 = peg$c121;
11447
+ if (input.substr(peg$currPos, 3) === peg$c125) {
11448
+ s0 = peg$c125;
11201
11449
  peg$currPos += 3;
11202
11450
  } else {
11203
11451
  s0 = peg$FAILED;
11204
11452
  if (peg$silentFails === 0) {
11205
- peg$fail(peg$c122);
11453
+ peg$fail(peg$c126);
11206
11454
  }
11207
11455
  }
11208
11456
  if (s0 === peg$FAILED) {
11209
- if (input.substr(peg$currPos, 2) === peg$c123) {
11210
- s0 = peg$c123;
11457
+ if (input.substr(peg$currPos, 2) === peg$c127) {
11458
+ s0 = peg$c127;
11211
11459
  peg$currPos += 2;
11212
11460
  } else {
11213
11461
  s0 = peg$FAILED;
11214
11462
  if (peg$silentFails === 0) {
11215
- peg$fail(peg$c124);
11463
+ peg$fail(peg$c128);
11216
11464
  }
11217
11465
  }
11218
11466
  if (s0 === peg$FAILED) {
11219
- if (input.substr(peg$currPos, 2) === peg$c125) {
11220
- s0 = peg$c125;
11467
+ if (input.substr(peg$currPos, 2) === peg$c129) {
11468
+ s0 = peg$c129;
11221
11469
  peg$currPos += 2;
11222
11470
  } else {
11223
11471
  s0 = peg$FAILED;
11224
11472
  if (peg$silentFails === 0) {
11225
- peg$fail(peg$c126);
11473
+ peg$fail(peg$c130);
11226
11474
  }
11227
11475
  }
11228
11476
  }
@@ -11232,43 +11480,43 @@ function peg$parse(input, options) {
11232
11480
  }
11233
11481
  function peg$parseOrderingOperator() {
11234
11482
  var s0;
11235
- if (input.substr(peg$currPos, 2) === peg$c127) {
11236
- s0 = peg$c127;
11483
+ if (input.substr(peg$currPos, 2) === peg$c131) {
11484
+ s0 = peg$c131;
11237
11485
  peg$currPos += 2;
11238
11486
  } else {
11239
11487
  s0 = peg$FAILED;
11240
11488
  if (peg$silentFails === 0) {
11241
- peg$fail(peg$c128);
11489
+ peg$fail(peg$c132);
11242
11490
  }
11243
11491
  }
11244
11492
  if (s0 === peg$FAILED) {
11245
- if (input.substr(peg$currPos, 2) === peg$c129) {
11246
- s0 = peg$c129;
11493
+ if (input.substr(peg$currPos, 2) === peg$c133) {
11494
+ s0 = peg$c133;
11247
11495
  peg$currPos += 2;
11248
11496
  } else {
11249
11497
  s0 = peg$FAILED;
11250
11498
  if (peg$silentFails === 0) {
11251
- peg$fail(peg$c130);
11499
+ peg$fail(peg$c134);
11252
11500
  }
11253
11501
  }
11254
11502
  if (s0 === peg$FAILED) {
11255
11503
  if (input.charCodeAt(peg$currPos) === 60) {
11256
- s0 = peg$c131;
11504
+ s0 = peg$c135;
11257
11505
  peg$currPos++;
11258
11506
  } else {
11259
11507
  s0 = peg$FAILED;
11260
11508
  if (peg$silentFails === 0) {
11261
- peg$fail(peg$c132);
11509
+ peg$fail(peg$c136);
11262
11510
  }
11263
11511
  }
11264
11512
  if (s0 === peg$FAILED) {
11265
11513
  if (input.charCodeAt(peg$currPos) === 62) {
11266
- s0 = peg$c133;
11514
+ s0 = peg$c137;
11267
11515
  peg$currPos++;
11268
11516
  } else {
11269
11517
  s0 = peg$FAILED;
11270
11518
  if (peg$silentFails === 0) {
11271
- peg$fail(peg$c134);
11519
+ peg$fail(peg$c138);
11272
11520
  }
11273
11521
  }
11274
11522
  }
@@ -11293,7 +11541,7 @@ function peg$parse(input, options) {
11293
11541
  s2 = peg$parseIdentifierName();
11294
11542
  if (s2 !== peg$FAILED) {
11295
11543
  peg$savedPos = s0;
11296
- s1 = peg$c150();
11544
+ s1 = peg$c155();
11297
11545
  s0 = s1;
11298
11546
  } else {
11299
11547
  peg$currPos = s0;
@@ -11319,7 +11567,7 @@ function peg$parse(input, options) {
11319
11567
  }
11320
11568
  if (s2 !== peg$FAILED) {
11321
11569
  peg$savedPos = s0;
11322
- s1 = peg$c152(s1, s2);
11570
+ s1 = peg$c157(s1, s2);
11323
11571
  s0 = s1;
11324
11572
  } else {
11325
11573
  peg$currPos = s0;
@@ -11333,7 +11581,7 @@ function peg$parse(input, options) {
11333
11581
  if (s0 === peg$FAILED) {
11334
11582
  s1 = peg$FAILED;
11335
11583
  if (peg$silentFails === 0) {
11336
- peg$fail(peg$c151);
11584
+ peg$fail(peg$c156);
11337
11585
  }
11338
11586
  }
11339
11587
  return s0;
@@ -11343,40 +11591,40 @@ function peg$parse(input, options) {
11343
11591
  s0 = peg$parseUnicodeLetter();
11344
11592
  if (s0 === peg$FAILED) {
11345
11593
  if (input.charCodeAt(peg$currPos) === 36) {
11346
- s0 = peg$c153;
11594
+ s0 = peg$c158;
11347
11595
  peg$currPos++;
11348
11596
  } else {
11349
11597
  s0 = peg$FAILED;
11350
11598
  if (peg$silentFails === 0) {
11351
- peg$fail(peg$c154);
11599
+ peg$fail(peg$c159);
11352
11600
  }
11353
11601
  }
11354
11602
  if (s0 === peg$FAILED) {
11355
11603
  if (input.charCodeAt(peg$currPos) === 95) {
11356
- s0 = peg$c155;
11604
+ s0 = peg$c160;
11357
11605
  peg$currPos++;
11358
11606
  } else {
11359
11607
  s0 = peg$FAILED;
11360
11608
  if (peg$silentFails === 0) {
11361
- peg$fail(peg$c156);
11609
+ peg$fail(peg$c161);
11362
11610
  }
11363
11611
  }
11364
11612
  if (s0 === peg$FAILED) {
11365
11613
  s0 = peg$currPos;
11366
11614
  if (input.charCodeAt(peg$currPos) === 92) {
11367
- s1 = peg$c157;
11615
+ s1 = peg$c162;
11368
11616
  peg$currPos++;
11369
11617
  } else {
11370
11618
  s1 = peg$FAILED;
11371
11619
  if (peg$silentFails === 0) {
11372
- peg$fail(peg$c158);
11620
+ peg$fail(peg$c163);
11373
11621
  }
11374
11622
  }
11375
11623
  if (s1 !== peg$FAILED) {
11376
11624
  s2 = peg$parseUnicodeEscapeSequence();
11377
11625
  if (s2 !== peg$FAILED) {
11378
11626
  peg$savedPos = s0;
11379
- s1 = peg$c159(s2);
11627
+ s1 = peg$c164(s2);
11380
11628
  s0 = s1;
11381
11629
  } else {
11382
11630
  peg$currPos = s0;
@@ -11402,22 +11650,22 @@ function peg$parse(input, options) {
11402
11650
  s0 = peg$parsePc();
11403
11651
  if (s0 === peg$FAILED) {
11404
11652
  if (input.charCodeAt(peg$currPos) === 8204) {
11405
- s0 = peg$c160;
11653
+ s0 = peg$c165;
11406
11654
  peg$currPos++;
11407
11655
  } else {
11408
11656
  s0 = peg$FAILED;
11409
11657
  if (peg$silentFails === 0) {
11410
- peg$fail(peg$c161);
11658
+ peg$fail(peg$c166);
11411
11659
  }
11412
11660
  }
11413
11661
  if (s0 === peg$FAILED) {
11414
11662
  if (input.charCodeAt(peg$currPos) === 8205) {
11415
- s0 = peg$c162;
11663
+ s0 = peg$c167;
11416
11664
  peg$currPos++;
11417
11665
  } else {
11418
11666
  s0 = peg$FAILED;
11419
11667
  if (peg$silentFails === 0) {
11420
- peg$fail(peg$c163);
11668
+ peg$fail(peg$c168);
11421
11669
  }
11422
11670
  }
11423
11671
  }
@@ -11465,12 +11713,12 @@ function peg$parse(input, options) {
11465
11713
  var s0, s1, s2, s3, s4, s5, s6, s7;
11466
11714
  s0 = peg$currPos;
11467
11715
  if (input.charCodeAt(peg$currPos) === 117) {
11468
- s1 = peg$c164;
11716
+ s1 = peg$c169;
11469
11717
  peg$currPos++;
11470
11718
  } else {
11471
11719
  s1 = peg$FAILED;
11472
11720
  if (peg$silentFails === 0) {
11473
- peg$fail(peg$c165);
11721
+ peg$fail(peg$c170);
11474
11722
  }
11475
11723
  }
11476
11724
  if (s1 !== peg$FAILED) {
@@ -11509,7 +11757,7 @@ function peg$parse(input, options) {
11509
11757
  }
11510
11758
  if (s2 !== peg$FAILED) {
11511
11759
  peg$savedPos = s0;
11512
- s1 = peg$c166(s2);
11760
+ s1 = peg$c171(s2);
11513
11761
  s0 = s1;
11514
11762
  } else {
11515
11763
  peg$currPos = s0;
@@ -11638,7 +11886,7 @@ function peg$parse(input, options) {
11638
11886
  s1 = peg$parseNullToken();
11639
11887
  if (s1 !== peg$FAILED) {
11640
11888
  peg$savedPos = s0;
11641
- s1 = peg$c167();
11889
+ s1 = peg$c172();
11642
11890
  }
11643
11891
  s0 = s1;
11644
11892
  return s0;
@@ -11649,7 +11897,7 @@ function peg$parse(input, options) {
11649
11897
  s1 = peg$parseTrueToken();
11650
11898
  if (s1 !== peg$FAILED) {
11651
11899
  peg$savedPos = s0;
11652
- s1 = peg$c168();
11900
+ s1 = peg$c173();
11653
11901
  }
11654
11902
  s0 = s1;
11655
11903
  if (s0 === peg$FAILED) {
@@ -11657,7 +11905,7 @@ function peg$parse(input, options) {
11657
11905
  s1 = peg$parseFalseToken();
11658
11906
  if (s1 !== peg$FAILED) {
11659
11907
  peg$savedPos = s0;
11660
- s1 = peg$c169();
11908
+ s1 = peg$c174();
11661
11909
  }
11662
11910
  s0 = s1;
11663
11911
  }
@@ -11665,143 +11913,143 @@ function peg$parse(input, options) {
11665
11913
  }
11666
11914
  function peg$parseLu() {
11667
11915
  var s0;
11668
- if (peg$c170.test(input.charAt(peg$currPos))) {
11916
+ if (peg$c175.test(input.charAt(peg$currPos))) {
11669
11917
  s0 = input.charAt(peg$currPos);
11670
11918
  peg$currPos++;
11671
11919
  } else {
11672
11920
  s0 = peg$FAILED;
11673
11921
  if (peg$silentFails === 0) {
11674
- peg$fail(peg$c171);
11922
+ peg$fail(peg$c176);
11675
11923
  }
11676
11924
  }
11677
11925
  return s0;
11678
11926
  }
11679
11927
  function peg$parseLl() {
11680
11928
  var s0;
11681
- if (peg$c172.test(input.charAt(peg$currPos))) {
11929
+ if (peg$c177.test(input.charAt(peg$currPos))) {
11682
11930
  s0 = input.charAt(peg$currPos);
11683
11931
  peg$currPos++;
11684
11932
  } else {
11685
11933
  s0 = peg$FAILED;
11686
11934
  if (peg$silentFails === 0) {
11687
- peg$fail(peg$c173);
11935
+ peg$fail(peg$c178);
11688
11936
  }
11689
11937
  }
11690
11938
  return s0;
11691
11939
  }
11692
11940
  function peg$parseLt() {
11693
11941
  var s0;
11694
- if (peg$c174.test(input.charAt(peg$currPos))) {
11942
+ if (peg$c179.test(input.charAt(peg$currPos))) {
11695
11943
  s0 = input.charAt(peg$currPos);
11696
11944
  peg$currPos++;
11697
11945
  } else {
11698
11946
  s0 = peg$FAILED;
11699
11947
  if (peg$silentFails === 0) {
11700
- peg$fail(peg$c175);
11948
+ peg$fail(peg$c180);
11701
11949
  }
11702
11950
  }
11703
11951
  return s0;
11704
11952
  }
11705
11953
  function peg$parseLm() {
11706
11954
  var s0;
11707
- if (peg$c176.test(input.charAt(peg$currPos))) {
11955
+ if (peg$c181.test(input.charAt(peg$currPos))) {
11708
11956
  s0 = input.charAt(peg$currPos);
11709
11957
  peg$currPos++;
11710
11958
  } else {
11711
11959
  s0 = peg$FAILED;
11712
11960
  if (peg$silentFails === 0) {
11713
- peg$fail(peg$c177);
11961
+ peg$fail(peg$c182);
11714
11962
  }
11715
11963
  }
11716
11964
  return s0;
11717
11965
  }
11718
11966
  function peg$parseLo() {
11719
11967
  var s0;
11720
- if (peg$c178.test(input.charAt(peg$currPos))) {
11968
+ if (peg$c183.test(input.charAt(peg$currPos))) {
11721
11969
  s0 = input.charAt(peg$currPos);
11722
11970
  peg$currPos++;
11723
11971
  } else {
11724
11972
  s0 = peg$FAILED;
11725
11973
  if (peg$silentFails === 0) {
11726
- peg$fail(peg$c179);
11974
+ peg$fail(peg$c184);
11727
11975
  }
11728
11976
  }
11729
11977
  return s0;
11730
11978
  }
11731
11979
  function peg$parseNl() {
11732
11980
  var s0;
11733
- if (peg$c180.test(input.charAt(peg$currPos))) {
11981
+ if (peg$c185.test(input.charAt(peg$currPos))) {
11734
11982
  s0 = input.charAt(peg$currPos);
11735
11983
  peg$currPos++;
11736
11984
  } else {
11737
11985
  s0 = peg$FAILED;
11738
11986
  if (peg$silentFails === 0) {
11739
- peg$fail(peg$c181);
11987
+ peg$fail(peg$c186);
11740
11988
  }
11741
11989
  }
11742
11990
  return s0;
11743
11991
  }
11744
11992
  function peg$parseMn() {
11745
11993
  var s0;
11746
- if (peg$c182.test(input.charAt(peg$currPos))) {
11994
+ if (peg$c187.test(input.charAt(peg$currPos))) {
11747
11995
  s0 = input.charAt(peg$currPos);
11748
11996
  peg$currPos++;
11749
11997
  } else {
11750
11998
  s0 = peg$FAILED;
11751
11999
  if (peg$silentFails === 0) {
11752
- peg$fail(peg$c183);
12000
+ peg$fail(peg$c188);
11753
12001
  }
11754
12002
  }
11755
12003
  return s0;
11756
12004
  }
11757
12005
  function peg$parseMc() {
11758
12006
  var s0;
11759
- if (peg$c184.test(input.charAt(peg$currPos))) {
12007
+ if (peg$c189.test(input.charAt(peg$currPos))) {
11760
12008
  s0 = input.charAt(peg$currPos);
11761
12009
  peg$currPos++;
11762
12010
  } else {
11763
12011
  s0 = peg$FAILED;
11764
12012
  if (peg$silentFails === 0) {
11765
- peg$fail(peg$c185);
12013
+ peg$fail(peg$c190);
11766
12014
  }
11767
12015
  }
11768
12016
  return s0;
11769
12017
  }
11770
12018
  function peg$parseNd() {
11771
12019
  var s0;
11772
- if (peg$c186.test(input.charAt(peg$currPos))) {
12020
+ if (peg$c191.test(input.charAt(peg$currPos))) {
11773
12021
  s0 = input.charAt(peg$currPos);
11774
12022
  peg$currPos++;
11775
12023
  } else {
11776
12024
  s0 = peg$FAILED;
11777
12025
  if (peg$silentFails === 0) {
11778
- peg$fail(peg$c187);
12026
+ peg$fail(peg$c192);
11779
12027
  }
11780
12028
  }
11781
12029
  return s0;
11782
12030
  }
11783
12031
  function peg$parsePc() {
11784
12032
  var s0;
11785
- if (peg$c188.test(input.charAt(peg$currPos))) {
12033
+ if (peg$c193.test(input.charAt(peg$currPos))) {
11786
12034
  s0 = input.charAt(peg$currPos);
11787
12035
  peg$currPos++;
11788
12036
  } else {
11789
12037
  s0 = peg$FAILED;
11790
12038
  if (peg$silentFails === 0) {
11791
- peg$fail(peg$c189);
12039
+ peg$fail(peg$c194);
11792
12040
  }
11793
12041
  }
11794
12042
  return s0;
11795
12043
  }
11796
12044
  function peg$parseHexDigit() {
11797
12045
  var s0;
11798
- if (peg$c192.test(input.charAt(peg$currPos))) {
12046
+ if (peg$c197.test(input.charAt(peg$currPos))) {
11799
12047
  s0 = input.charAt(peg$currPos);
11800
12048
  peg$currPos++;
11801
12049
  } else {
11802
12050
  s0 = peg$FAILED;
11803
12051
  if (peg$silentFails === 0) {
11804
- peg$fail(peg$c193);
12052
+ peg$fail(peg$c198);
11805
12053
  }
11806
12054
  }
11807
12055
  return s0;
@@ -11809,13 +12057,13 @@ function peg$parse(input, options) {
11809
12057
  function peg$parseBreakToken() {
11810
12058
  var s0, s1, s2, s3;
11811
12059
  s0 = peg$currPos;
11812
- if (input.substr(peg$currPos, 5) === peg$c194) {
11813
- s1 = peg$c194;
12060
+ if (input.substr(peg$currPos, 5) === peg$c199) {
12061
+ s1 = peg$c199;
11814
12062
  peg$currPos += 5;
11815
12063
  } else {
11816
12064
  s1 = peg$FAILED;
11817
12065
  if (peg$silentFails === 0) {
11818
- peg$fail(peg$c195);
12066
+ peg$fail(peg$c200);
11819
12067
  }
11820
12068
  }
11821
12069
  if (s1 !== peg$FAILED) {
@@ -11845,13 +12093,13 @@ function peg$parse(input, options) {
11845
12093
  function peg$parseCaseToken() {
11846
12094
  var s0, s1, s2, s3;
11847
12095
  s0 = peg$currPos;
11848
- if (input.substr(peg$currPos, 4) === peg$c196) {
11849
- s1 = peg$c196;
12096
+ if (input.substr(peg$currPos, 4) === peg$c201) {
12097
+ s1 = peg$c201;
11850
12098
  peg$currPos += 4;
11851
12099
  } else {
11852
12100
  s1 = peg$FAILED;
11853
12101
  if (peg$silentFails === 0) {
11854
- peg$fail(peg$c197);
12102
+ peg$fail(peg$c202);
11855
12103
  }
11856
12104
  }
11857
12105
  if (s1 !== peg$FAILED) {
@@ -11881,13 +12129,13 @@ function peg$parse(input, options) {
11881
12129
  function peg$parseCatchToken() {
11882
12130
  var s0, s1, s2, s3;
11883
12131
  s0 = peg$currPos;
11884
- if (input.substr(peg$currPos, 5) === peg$c198) {
11885
- s1 = peg$c198;
12132
+ if (input.substr(peg$currPos, 5) === peg$c203) {
12133
+ s1 = peg$c203;
11886
12134
  peg$currPos += 5;
11887
12135
  } else {
11888
12136
  s1 = peg$FAILED;
11889
12137
  if (peg$silentFails === 0) {
11890
- peg$fail(peg$c199);
12138
+ peg$fail(peg$c204);
11891
12139
  }
11892
12140
  }
11893
12141
  if (s1 !== peg$FAILED) {
@@ -11917,13 +12165,13 @@ function peg$parse(input, options) {
11917
12165
  function peg$parseClassToken() {
11918
12166
  var s0, s1, s2, s3;
11919
12167
  s0 = peg$currPos;
11920
- if (input.substr(peg$currPos, 5) === peg$c200) {
11921
- s1 = peg$c200;
12168
+ if (input.substr(peg$currPos, 5) === peg$c205) {
12169
+ s1 = peg$c205;
11922
12170
  peg$currPos += 5;
11923
12171
  } else {
11924
12172
  s1 = peg$FAILED;
11925
12173
  if (peg$silentFails === 0) {
11926
- peg$fail(peg$c201);
12174
+ peg$fail(peg$c206);
11927
12175
  }
11928
12176
  }
11929
12177
  if (s1 !== peg$FAILED) {
@@ -11953,13 +12201,13 @@ function peg$parse(input, options) {
11953
12201
  function peg$parseConstToken() {
11954
12202
  var s0, s1, s2, s3;
11955
12203
  s0 = peg$currPos;
11956
- if (input.substr(peg$currPos, 5) === peg$c202) {
11957
- s1 = peg$c202;
12204
+ if (input.substr(peg$currPos, 5) === peg$c207) {
12205
+ s1 = peg$c207;
11958
12206
  peg$currPos += 5;
11959
12207
  } else {
11960
12208
  s1 = peg$FAILED;
11961
12209
  if (peg$silentFails === 0) {
11962
- peg$fail(peg$c203);
12210
+ peg$fail(peg$c208);
11963
12211
  }
11964
12212
  }
11965
12213
  if (s1 !== peg$FAILED) {
@@ -11989,13 +12237,13 @@ function peg$parse(input, options) {
11989
12237
  function peg$parseContinueToken() {
11990
12238
  var s0, s1, s2, s3;
11991
12239
  s0 = peg$currPos;
11992
- if (input.substr(peg$currPos, 8) === peg$c204) {
11993
- s1 = peg$c204;
12240
+ if (input.substr(peg$currPos, 8) === peg$c209) {
12241
+ s1 = peg$c209;
11994
12242
  peg$currPos += 8;
11995
12243
  } else {
11996
12244
  s1 = peg$FAILED;
11997
12245
  if (peg$silentFails === 0) {
11998
- peg$fail(peg$c205);
12246
+ peg$fail(peg$c210);
11999
12247
  }
12000
12248
  }
12001
12249
  if (s1 !== peg$FAILED) {
@@ -12025,13 +12273,13 @@ function peg$parse(input, options) {
12025
12273
  function peg$parseDebuggerToken() {
12026
12274
  var s0, s1, s2, s3;
12027
12275
  s0 = peg$currPos;
12028
- if (input.substr(peg$currPos, 8) === peg$c206) {
12029
- s1 = peg$c206;
12276
+ if (input.substr(peg$currPos, 8) === peg$c211) {
12277
+ s1 = peg$c211;
12030
12278
  peg$currPos += 8;
12031
12279
  } else {
12032
12280
  s1 = peg$FAILED;
12033
12281
  if (peg$silentFails === 0) {
12034
- peg$fail(peg$c207);
12282
+ peg$fail(peg$c212);
12035
12283
  }
12036
12284
  }
12037
12285
  if (s1 !== peg$FAILED) {
@@ -12061,13 +12309,13 @@ function peg$parse(input, options) {
12061
12309
  function peg$parseDefaultToken() {
12062
12310
  var s0, s1, s2, s3;
12063
12311
  s0 = peg$currPos;
12064
- if (input.substr(peg$currPos, 7) === peg$c208) {
12065
- s1 = peg$c208;
12312
+ if (input.substr(peg$currPos, 7) === peg$c213) {
12313
+ s1 = peg$c213;
12066
12314
  peg$currPos += 7;
12067
12315
  } else {
12068
12316
  s1 = peg$FAILED;
12069
12317
  if (peg$silentFails === 0) {
12070
- peg$fail(peg$c209);
12318
+ peg$fail(peg$c214);
12071
12319
  }
12072
12320
  }
12073
12321
  if (s1 !== peg$FAILED) {
@@ -12097,13 +12345,13 @@ function peg$parse(input, options) {
12097
12345
  function peg$parseDeleteToken() {
12098
12346
  var s0, s1, s2, s3;
12099
12347
  s0 = peg$currPos;
12100
- if (input.substr(peg$currPos, 6) === peg$c210) {
12101
- s1 = peg$c210;
12348
+ if (input.substr(peg$currPos, 6) === peg$c215) {
12349
+ s1 = peg$c215;
12102
12350
  peg$currPos += 6;
12103
12351
  } else {
12104
12352
  s1 = peg$FAILED;
12105
12353
  if (peg$silentFails === 0) {
12106
- peg$fail(peg$c211);
12354
+ peg$fail(peg$c216);
12107
12355
  }
12108
12356
  }
12109
12357
  if (s1 !== peg$FAILED) {
@@ -12133,13 +12381,13 @@ function peg$parse(input, options) {
12133
12381
  function peg$parseDoToken() {
12134
12382
  var s0, s1, s2, s3;
12135
12383
  s0 = peg$currPos;
12136
- if (input.substr(peg$currPos, 2) === peg$c212) {
12137
- s1 = peg$c212;
12384
+ if (input.substr(peg$currPos, 2) === peg$c217) {
12385
+ s1 = peg$c217;
12138
12386
  peg$currPos += 2;
12139
12387
  } else {
12140
12388
  s1 = peg$FAILED;
12141
12389
  if (peg$silentFails === 0) {
12142
- peg$fail(peg$c213);
12390
+ peg$fail(peg$c218);
12143
12391
  }
12144
12392
  }
12145
12393
  if (s1 !== peg$FAILED) {
@@ -12169,13 +12417,13 @@ function peg$parse(input, options) {
12169
12417
  function peg$parseElseToken() {
12170
12418
  var s0, s1, s2, s3;
12171
12419
  s0 = peg$currPos;
12172
- if (input.substr(peg$currPos, 4) === peg$c214) {
12173
- s1 = peg$c214;
12420
+ if (input.substr(peg$currPos, 4) === peg$c219) {
12421
+ s1 = peg$c219;
12174
12422
  peg$currPos += 4;
12175
12423
  } else {
12176
12424
  s1 = peg$FAILED;
12177
12425
  if (peg$silentFails === 0) {
12178
- peg$fail(peg$c215);
12426
+ peg$fail(peg$c220);
12179
12427
  }
12180
12428
  }
12181
12429
  if (s1 !== peg$FAILED) {
@@ -12241,13 +12489,13 @@ function peg$parse(input, options) {
12241
12489
  function peg$parseExportToken() {
12242
12490
  var s0, s1, s2, s3;
12243
12491
  s0 = peg$currPos;
12244
- if (input.substr(peg$currPos, 6) === peg$c216) {
12245
- s1 = peg$c216;
12492
+ if (input.substr(peg$currPos, 6) === peg$c221) {
12493
+ s1 = peg$c221;
12246
12494
  peg$currPos += 6;
12247
12495
  } else {
12248
12496
  s1 = peg$FAILED;
12249
12497
  if (peg$silentFails === 0) {
12250
- peg$fail(peg$c217);
12498
+ peg$fail(peg$c222);
12251
12499
  }
12252
12500
  }
12253
12501
  if (s1 !== peg$FAILED) {
@@ -12277,13 +12525,13 @@ function peg$parse(input, options) {
12277
12525
  function peg$parseExtendsToken() {
12278
12526
  var s0, s1, s2, s3;
12279
12527
  s0 = peg$currPos;
12280
- if (input.substr(peg$currPos, 7) === peg$c218) {
12281
- s1 = peg$c218;
12528
+ if (input.substr(peg$currPos, 7) === peg$c223) {
12529
+ s1 = peg$c223;
12282
12530
  peg$currPos += 7;
12283
12531
  } else {
12284
12532
  s1 = peg$FAILED;
12285
12533
  if (peg$silentFails === 0) {
12286
- peg$fail(peg$c219);
12534
+ peg$fail(peg$c224);
12287
12535
  }
12288
12536
  }
12289
12537
  if (s1 !== peg$FAILED) {
@@ -12313,13 +12561,13 @@ function peg$parse(input, options) {
12313
12561
  function peg$parseFalseToken() {
12314
12562
  var s0, s1, s2, s3;
12315
12563
  s0 = peg$currPos;
12316
- if (input.substr(peg$currPos, 5) === peg$c115) {
12317
- s1 = peg$c115;
12564
+ if (input.substr(peg$currPos, 5) === peg$c119) {
12565
+ s1 = peg$c119;
12318
12566
  peg$currPos += 5;
12319
12567
  } else {
12320
12568
  s1 = peg$FAILED;
12321
12569
  if (peg$silentFails === 0) {
12322
- peg$fail(peg$c116);
12570
+ peg$fail(peg$c120);
12323
12571
  }
12324
12572
  }
12325
12573
  if (s1 !== peg$FAILED) {
@@ -12349,13 +12597,13 @@ function peg$parse(input, options) {
12349
12597
  function peg$parseFinallyToken() {
12350
12598
  var s0, s1, s2, s3;
12351
12599
  s0 = peg$currPos;
12352
- if (input.substr(peg$currPos, 7) === peg$c220) {
12353
- s1 = peg$c220;
12600
+ if (input.substr(peg$currPos, 7) === peg$c225) {
12601
+ s1 = peg$c225;
12354
12602
  peg$currPos += 7;
12355
12603
  } else {
12356
12604
  s1 = peg$FAILED;
12357
12605
  if (peg$silentFails === 0) {
12358
- peg$fail(peg$c221);
12606
+ peg$fail(peg$c226);
12359
12607
  }
12360
12608
  }
12361
12609
  if (s1 !== peg$FAILED) {
@@ -12385,13 +12633,13 @@ function peg$parse(input, options) {
12385
12633
  function peg$parseForToken() {
12386
12634
  var s0, s1, s2, s3;
12387
12635
  s0 = peg$currPos;
12388
- if (input.substr(peg$currPos, 3) === peg$c222) {
12389
- s1 = peg$c222;
12636
+ if (input.substr(peg$currPos, 3) === peg$c227) {
12637
+ s1 = peg$c227;
12390
12638
  peg$currPos += 3;
12391
12639
  } else {
12392
12640
  s1 = peg$FAILED;
12393
12641
  if (peg$silentFails === 0) {
12394
- peg$fail(peg$c223);
12642
+ peg$fail(peg$c228);
12395
12643
  }
12396
12644
  }
12397
12645
  if (s1 !== peg$FAILED) {
@@ -12421,13 +12669,13 @@ function peg$parse(input, options) {
12421
12669
  function peg$parseFunctionToken() {
12422
12670
  var s0, s1, s2, s3;
12423
12671
  s0 = peg$currPos;
12424
- if (input.substr(peg$currPos, 8) === peg$c224) {
12425
- s1 = peg$c224;
12672
+ if (input.substr(peg$currPos, 8) === peg$c229) {
12673
+ s1 = peg$c229;
12426
12674
  peg$currPos += 8;
12427
12675
  } else {
12428
12676
  s1 = peg$FAILED;
12429
12677
  if (peg$silentFails === 0) {
12430
- peg$fail(peg$c225);
12678
+ peg$fail(peg$c230);
12431
12679
  }
12432
12680
  }
12433
12681
  if (s1 !== peg$FAILED) {
@@ -12457,13 +12705,13 @@ function peg$parse(input, options) {
12457
12705
  function peg$parseIfToken() {
12458
12706
  var s0, s1, s2, s3;
12459
12707
  s0 = peg$currPos;
12460
- if (input.substr(peg$currPos, 2) === peg$c228) {
12461
- s1 = peg$c228;
12708
+ if (input.substr(peg$currPos, 2) === peg$c233) {
12709
+ s1 = peg$c233;
12462
12710
  peg$currPos += 2;
12463
12711
  } else {
12464
12712
  s1 = peg$FAILED;
12465
12713
  if (peg$silentFails === 0) {
12466
- peg$fail(peg$c229);
12714
+ peg$fail(peg$c234);
12467
12715
  }
12468
12716
  }
12469
12717
  if (s1 !== peg$FAILED) {
@@ -12493,13 +12741,13 @@ function peg$parse(input, options) {
12493
12741
  function peg$parseImportToken() {
12494
12742
  var s0, s1, s2, s3;
12495
12743
  s0 = peg$currPos;
12496
- if (input.substr(peg$currPos, 6) === peg$c230) {
12497
- s1 = peg$c230;
12744
+ if (input.substr(peg$currPos, 6) === peg$c235) {
12745
+ s1 = peg$c235;
12498
12746
  peg$currPos += 6;
12499
12747
  } else {
12500
12748
  s1 = peg$FAILED;
12501
12749
  if (peg$silentFails === 0) {
12502
- peg$fail(peg$c231);
12750
+ peg$fail(peg$c236);
12503
12751
  }
12504
12752
  }
12505
12753
  if (s1 !== peg$FAILED) {
@@ -12529,13 +12777,13 @@ function peg$parse(input, options) {
12529
12777
  function peg$parseInstanceofToken() {
12530
12778
  var s0, s1, s2, s3;
12531
12779
  s0 = peg$currPos;
12532
- if (input.substr(peg$currPos, 10) === peg$c232) {
12533
- s1 = peg$c232;
12780
+ if (input.substr(peg$currPos, 10) === peg$c237) {
12781
+ s1 = peg$c237;
12534
12782
  peg$currPos += 10;
12535
12783
  } else {
12536
12784
  s1 = peg$FAILED;
12537
12785
  if (peg$silentFails === 0) {
12538
- peg$fail(peg$c233);
12786
+ peg$fail(peg$c238);
12539
12787
  }
12540
12788
  }
12541
12789
  if (s1 !== peg$FAILED) {
@@ -12565,13 +12813,13 @@ function peg$parse(input, options) {
12565
12813
  function peg$parseInToken() {
12566
12814
  var s0, s1, s2, s3;
12567
12815
  s0 = peg$currPos;
12568
- if (input.substr(peg$currPos, 2) === peg$c234) {
12569
- s1 = peg$c234;
12816
+ if (input.substr(peg$currPos, 2) === peg$c239) {
12817
+ s1 = peg$c239;
12570
12818
  peg$currPos += 2;
12571
12819
  } else {
12572
12820
  s1 = peg$FAILED;
12573
12821
  if (peg$silentFails === 0) {
12574
- peg$fail(peg$c235);
12822
+ peg$fail(peg$c240);
12575
12823
  }
12576
12824
  }
12577
12825
  if (s1 !== peg$FAILED) {
@@ -12601,13 +12849,13 @@ function peg$parse(input, options) {
12601
12849
  function peg$parseNewToken() {
12602
12850
  var s0, s1, s2, s3;
12603
12851
  s0 = peg$currPos;
12604
- if (input.substr(peg$currPos, 3) === peg$c236) {
12605
- s1 = peg$c236;
12852
+ if (input.substr(peg$currPos, 3) === peg$c241) {
12853
+ s1 = peg$c241;
12606
12854
  peg$currPos += 3;
12607
12855
  } else {
12608
12856
  s1 = peg$FAILED;
12609
12857
  if (peg$silentFails === 0) {
12610
- peg$fail(peg$c237);
12858
+ peg$fail(peg$c242);
12611
12859
  }
12612
12860
  }
12613
12861
  if (s1 !== peg$FAILED) {
@@ -12637,13 +12885,13 @@ function peg$parse(input, options) {
12637
12885
  function peg$parseNullToken() {
12638
12886
  var s0, s1, s2, s3;
12639
12887
  s0 = peg$currPos;
12640
- if (input.substr(peg$currPos, 4) === peg$c238) {
12641
- s1 = peg$c238;
12888
+ if (input.substr(peg$currPos, 4) === peg$c243) {
12889
+ s1 = peg$c243;
12642
12890
  peg$currPos += 4;
12643
12891
  } else {
12644
12892
  s1 = peg$FAILED;
12645
12893
  if (peg$silentFails === 0) {
12646
- peg$fail(peg$c239);
12894
+ peg$fail(peg$c244);
12647
12895
  }
12648
12896
  }
12649
12897
  if (s1 !== peg$FAILED) {
@@ -12673,13 +12921,13 @@ function peg$parse(input, options) {
12673
12921
  function peg$parseReturnToken() {
12674
12922
  var s0, s1, s2, s3;
12675
12923
  s0 = peg$currPos;
12676
- if (input.substr(peg$currPos, 6) === peg$c240) {
12677
- s1 = peg$c240;
12924
+ if (input.substr(peg$currPos, 6) === peg$c245) {
12925
+ s1 = peg$c245;
12678
12926
  peg$currPos += 6;
12679
12927
  } else {
12680
12928
  s1 = peg$FAILED;
12681
12929
  if (peg$silentFails === 0) {
12682
- peg$fail(peg$c241);
12930
+ peg$fail(peg$c246);
12683
12931
  }
12684
12932
  }
12685
12933
  if (s1 !== peg$FAILED) {
@@ -12709,13 +12957,13 @@ function peg$parse(input, options) {
12709
12957
  function peg$parseSuperToken() {
12710
12958
  var s0, s1, s2, s3;
12711
12959
  s0 = peg$currPos;
12712
- if (input.substr(peg$currPos, 5) === peg$c244) {
12713
- s1 = peg$c244;
12960
+ if (input.substr(peg$currPos, 5) === peg$c249) {
12961
+ s1 = peg$c249;
12714
12962
  peg$currPos += 5;
12715
12963
  } else {
12716
12964
  s1 = peg$FAILED;
12717
12965
  if (peg$silentFails === 0) {
12718
- peg$fail(peg$c245);
12966
+ peg$fail(peg$c250);
12719
12967
  }
12720
12968
  }
12721
12969
  if (s1 !== peg$FAILED) {
@@ -12745,13 +12993,13 @@ function peg$parse(input, options) {
12745
12993
  function peg$parseSwitchToken() {
12746
12994
  var s0, s1, s2, s3;
12747
12995
  s0 = peg$currPos;
12748
- if (input.substr(peg$currPos, 6) === peg$c246) {
12749
- s1 = peg$c246;
12996
+ if (input.substr(peg$currPos, 6) === peg$c251) {
12997
+ s1 = peg$c251;
12750
12998
  peg$currPos += 6;
12751
12999
  } else {
12752
13000
  s1 = peg$FAILED;
12753
13001
  if (peg$silentFails === 0) {
12754
- peg$fail(peg$c247);
13002
+ peg$fail(peg$c252);
12755
13003
  }
12756
13004
  }
12757
13005
  if (s1 !== peg$FAILED) {
@@ -12781,13 +13029,13 @@ function peg$parse(input, options) {
12781
13029
  function peg$parseThisToken() {
12782
13030
  var s0, s1, s2, s3;
12783
13031
  s0 = peg$currPos;
12784
- if (input.substr(peg$currPos, 4) === peg$c248) {
12785
- s1 = peg$c248;
13032
+ if (input.substr(peg$currPos, 4) === peg$c253) {
13033
+ s1 = peg$c253;
12786
13034
  peg$currPos += 4;
12787
13035
  } else {
12788
13036
  s1 = peg$FAILED;
12789
13037
  if (peg$silentFails === 0) {
12790
- peg$fail(peg$c249);
13038
+ peg$fail(peg$c254);
12791
13039
  }
12792
13040
  }
12793
13041
  if (s1 !== peg$FAILED) {
@@ -12817,13 +13065,13 @@ function peg$parse(input, options) {
12817
13065
  function peg$parseThrowToken() {
12818
13066
  var s0, s1, s2, s3;
12819
13067
  s0 = peg$currPos;
12820
- if (input.substr(peg$currPos, 5) === peg$c250) {
12821
- s1 = peg$c250;
13068
+ if (input.substr(peg$currPos, 5) === peg$c255) {
13069
+ s1 = peg$c255;
12822
13070
  peg$currPos += 5;
12823
13071
  } else {
12824
13072
  s1 = peg$FAILED;
12825
13073
  if (peg$silentFails === 0) {
12826
- peg$fail(peg$c251);
13074
+ peg$fail(peg$c256);
12827
13075
  }
12828
13076
  }
12829
13077
  if (s1 !== peg$FAILED) {
@@ -12853,13 +13101,13 @@ function peg$parse(input, options) {
12853
13101
  function peg$parseTrueToken() {
12854
13102
  var s0, s1, s2, s3;
12855
13103
  s0 = peg$currPos;
12856
- if (input.substr(peg$currPos, 4) === peg$c112) {
12857
- s1 = peg$c112;
13104
+ if (input.substr(peg$currPos, 4) === peg$c116) {
13105
+ s1 = peg$c116;
12858
13106
  peg$currPos += 4;
12859
13107
  } else {
12860
13108
  s1 = peg$FAILED;
12861
13109
  if (peg$silentFails === 0) {
12862
- peg$fail(peg$c113);
13110
+ peg$fail(peg$c117);
12863
13111
  }
12864
13112
  }
12865
13113
  if (s1 !== peg$FAILED) {
@@ -12889,13 +13137,13 @@ function peg$parse(input, options) {
12889
13137
  function peg$parseTryToken() {
12890
13138
  var s0, s1, s2, s3;
12891
13139
  s0 = peg$currPos;
12892
- if (input.substr(peg$currPos, 3) === peg$c252) {
12893
- s1 = peg$c252;
13140
+ if (input.substr(peg$currPos, 3) === peg$c257) {
13141
+ s1 = peg$c257;
12894
13142
  peg$currPos += 3;
12895
13143
  } else {
12896
13144
  s1 = peg$FAILED;
12897
13145
  if (peg$silentFails === 0) {
12898
- peg$fail(peg$c253);
13146
+ peg$fail(peg$c258);
12899
13147
  }
12900
13148
  }
12901
13149
  if (s1 !== peg$FAILED) {
@@ -12925,13 +13173,13 @@ function peg$parse(input, options) {
12925
13173
  function peg$parseTypeofToken() {
12926
13174
  var s0, s1, s2, s3;
12927
13175
  s0 = peg$currPos;
12928
- if (input.substr(peg$currPos, 6) === peg$c254) {
12929
- s1 = peg$c254;
13176
+ if (input.substr(peg$currPos, 6) === peg$c259) {
13177
+ s1 = peg$c259;
12930
13178
  peg$currPos += 6;
12931
13179
  } else {
12932
13180
  s1 = peg$FAILED;
12933
13181
  if (peg$silentFails === 0) {
12934
- peg$fail(peg$c255);
13182
+ peg$fail(peg$c260);
12935
13183
  }
12936
13184
  }
12937
13185
  if (s1 !== peg$FAILED) {
@@ -12961,13 +13209,13 @@ function peg$parse(input, options) {
12961
13209
  function peg$parseVarToken() {
12962
13210
  var s0, s1, s2, s3;
12963
13211
  s0 = peg$currPos;
12964
- if (input.substr(peg$currPos, 3) === peg$c256) {
12965
- s1 = peg$c256;
13212
+ if (input.substr(peg$currPos, 3) === peg$c261) {
13213
+ s1 = peg$c261;
12966
13214
  peg$currPos += 3;
12967
13215
  } else {
12968
13216
  s1 = peg$FAILED;
12969
13217
  if (peg$silentFails === 0) {
12970
- peg$fail(peg$c257);
13218
+ peg$fail(peg$c262);
12971
13219
  }
12972
13220
  }
12973
13221
  if (s1 !== peg$FAILED) {
@@ -12997,13 +13245,13 @@ function peg$parse(input, options) {
12997
13245
  function peg$parseVoidToken() {
12998
13246
  var s0, s1, s2, s3;
12999
13247
  s0 = peg$currPos;
13000
- if (input.substr(peg$currPos, 4) === peg$c258) {
13001
- s1 = peg$c258;
13248
+ if (input.substr(peg$currPos, 4) === peg$c263) {
13249
+ s1 = peg$c263;
13002
13250
  peg$currPos += 4;
13003
13251
  } else {
13004
13252
  s1 = peg$FAILED;
13005
13253
  if (peg$silentFails === 0) {
13006
- peg$fail(peg$c259);
13254
+ peg$fail(peg$c264);
13007
13255
  }
13008
13256
  }
13009
13257
  if (s1 !== peg$FAILED) {
@@ -13033,13 +13281,13 @@ function peg$parse(input, options) {
13033
13281
  function peg$parseWhileToken() {
13034
13282
  var s0, s1, s2, s3;
13035
13283
  s0 = peg$currPos;
13036
- if (input.substr(peg$currPos, 5) === peg$c260) {
13037
- s1 = peg$c260;
13284
+ if (input.substr(peg$currPos, 5) === peg$c265) {
13285
+ s1 = peg$c265;
13038
13286
  peg$currPos += 5;
13039
13287
  } else {
13040
13288
  s1 = peg$FAILED;
13041
13289
  if (peg$silentFails === 0) {
13042
- peg$fail(peg$c261);
13290
+ peg$fail(peg$c266);
13043
13291
  }
13044
13292
  }
13045
13293
  if (s1 !== peg$FAILED) {
@@ -13069,13 +13317,13 @@ function peg$parse(input, options) {
13069
13317
  function peg$parseWithToken() {
13070
13318
  var s0, s1, s2, s3;
13071
13319
  s0 = peg$currPos;
13072
- if (input.substr(peg$currPos, 4) === peg$c262) {
13073
- s1 = peg$c262;
13320
+ if (input.substr(peg$currPos, 4) === peg$c267) {
13321
+ s1 = peg$c267;
13074
13322
  peg$currPos += 4;
13075
13323
  } else {
13076
13324
  s1 = peg$FAILED;
13077
13325
  if (peg$silentFails === 0) {
13078
- peg$fail(peg$c263);
13326
+ peg$fail(peg$c268);
13079
13327
  }
13080
13328
  }
13081
13329
  if (s1 !== peg$FAILED) {
@@ -13240,6 +13488,19 @@ function peg$parse(input, options) {
13240
13488
  expr: `${leftExpr} ${jsOp} ${rightExpr}`
13241
13489
  };
13242
13490
  }
13491
+ function applyStartsWith(left, right) {
13492
+ if (left.type === "resolved" && right.type === "resolved") {
13493
+ return { type: "resolved", value: String(left.value).startsWith(String(right.value)) };
13494
+ }
13495
+ const leftCode = left.type === "resolved" ? JSON.stringify(left.value) : left.fragment.rendered;
13496
+ const rightCode = right.type === "resolved" ? JSON.stringify(right.value) : right.fragment.rendered;
13497
+ const baseFragment = left.type === "code" ? left.fragment : right.type === "code" ? right.fragment : new RenderFragment2("", none);
13498
+ return {
13499
+ type: "code",
13500
+ fragment: new RenderFragment2(`${leftCode}.startsWith(${rightCode})`, baseFragment.imports),
13501
+ expr: `${leftCode}.startsWith(${rightCode})`
13502
+ };
13503
+ }
13243
13504
  peg$result = peg$startRuleFunction();
13244
13505
  if (peg$result !== peg$FAILED && peg$currPos === input.length) {
13245
13506
  return peg$result;
@@ -13289,6 +13550,10 @@ class Variables {
13289
13550
  this.currentType = currentTypes instanceof JayImportedType ? currentTypes.type : currentTypes;
13290
13551
  }
13291
13552
  resolveAccessor(accessor) {
13553
+ if (accessor[0] === "jay") {
13554
+ const jayPath = ["__jay", ...accessor.slice(1)];
13555
+ return new Accessor(this.currentVar, jayPath, [], JayString);
13556
+ }
13292
13557
  let curr = this.currentType;
13293
13558
  let validations = [];
13294
13559
  accessor.forEach((member) => {
@@ -13379,6 +13644,9 @@ function getExpressionHelp(startRule) {
13379
13644
  ✓ if="isVisible"
13380
13645
  ✓ if="!isHidden"
13381
13646
  ✓ if="status == active" (enum comparison)
13647
+ ✓ if="url === currentPath" (string field comparison)
13648
+ ✓ if="url === '/about'" (string literal comparison)
13649
+ ✓ if="path ^= '/docs'" (starts with)
13382
13650
  ✓ if="count > 0" (numeric comparison)
13383
13651
  ✓ if="count == 5" (equality with number)
13384
13652
  ✓ if="page <= 1" (<=, >=, <, > supported)
@@ -13422,7 +13690,57 @@ function getExpressionHelp(startRule) {
13422
13690
  return "";
13423
13691
  }
13424
13692
  }
13425
- function doParse(expression, startRule, vars) {
13693
+ function getFallbackForRule(startRule, expression, message) {
13694
+ const validations = [message];
13695
+ const escaped = expression.replace(/'/g, "\\'");
13696
+ switch (startRule) {
13697
+ case "conditionFunc":
13698
+ return new RenderFragment("vs => false", Imports.none(), validations);
13699
+ case "condition":
13700
+ return new RenderFragment("false", Imports.none(), validations);
13701
+ case "dynamicText":
13702
+ case "reactDynamicText":
13703
+ return new RenderFragment(
13704
+ `dt(vs => '[INVALID: ${escaped}]')`,
13705
+ Imports.for(Import.dynamicText),
13706
+ validations
13707
+ );
13708
+ case "dynamicAttribute":
13709
+ return new RenderFragment(
13710
+ `da(vs => '[INVALID: ${escaped}]')`,
13711
+ Imports.for(Import.dynamicAttribute),
13712
+ validations
13713
+ );
13714
+ case "dynamicProperty":
13715
+ case "reactDynamicProperty":
13716
+ return new RenderFragment(
13717
+ `dp(vs => undefined)`,
13718
+ Imports.for(Import.dynamicProperty),
13719
+ validations
13720
+ );
13721
+ case "booleanAttribute":
13722
+ return new RenderFragment(
13723
+ `ba(vs => false)`,
13724
+ Imports.for(Import.booleanAttribute),
13725
+ validations
13726
+ );
13727
+ case "classExpression":
13728
+ case "reactClassExpression":
13729
+ return new RenderFragment(`''`, Imports.none(), validations);
13730
+ case "dynamicComponentProp":
13731
+ return new RenderFragment("vs => undefined", Imports.none(), validations);
13732
+ case "styleDeclarations":
13733
+ return new RenderFragment("[]", Imports.none(), validations);
13734
+ case "accessor":
13735
+ return new Accessor("vs", [expression], validations, JayUnknown);
13736
+ case "template":
13737
+ case "templateParts":
13738
+ return new RenderFragment(`'${escaped}'`, Imports.none(), validations);
13739
+ default:
13740
+ return new RenderFragment("undefined", Imports.none(), validations);
13741
+ }
13742
+ }
13743
+ function doParse(expression, startRule, vars, throwOnError = false) {
13426
13744
  try {
13427
13745
  return expressionParser.parse(expression, {
13428
13746
  vars,
@@ -13436,16 +13754,19 @@ function doParse(expression, startRule, vars) {
13436
13754
  });
13437
13755
  } catch (e2) {
13438
13756
  const help = getExpressionHelp(startRule);
13439
- const contextInfo = help ? `
13440
-
13441
- Expected format for ${startRule}:${help}` : "";
13442
- throw new Error(`Failed to parse expression [${expression}].
13443
-
13444
- Parse error: ${e2.message}${contextInfo}`);
13757
+ const guideRef = "\nSee: agent-kit/designer/jay-html-template-syntax.md";
13758
+ const message = `Failed to parse expression [${expression}]: ${e2.message}${help}${guideRef}`;
13759
+ if (throwOnError) {
13760
+ throw new Error(message);
13761
+ }
13762
+ return getFallbackForRule(startRule, expression, message);
13445
13763
  }
13446
13764
  }
13447
13765
  function parseAccessor(expression, vars) {
13448
- return doParse(expression, "accessor", vars);
13766
+ const result = doParse(expression, "accessor", vars);
13767
+ if (result instanceof Accessor)
13768
+ return result;
13769
+ return new Accessor(vars.currentVar, [expression], result.validations, JayUnknown);
13449
13770
  }
13450
13771
  function parseCondition(expression, vars) {
13451
13772
  return doParse(expression, "conditionFunc", vars);
@@ -13514,17 +13835,17 @@ function parseReactClassExpression(expression, vars) {
13514
13835
  return new RenderFragment(rendered, Imports.none(), validations, refs);
13515
13836
  }
13516
13837
  function parseImportNames(expression) {
13517
- return doParse(expression, "importNames");
13838
+ return doParse(expression, "importNames", void 0, true);
13518
13839
  }
13519
13840
  function parseIsEnum(expression) {
13520
13841
  try {
13521
- return doParse(expression, "is_enum");
13842
+ return doParse(expression, "is_enum", void 0, true);
13522
13843
  } catch (err) {
13523
13844
  return false;
13524
13845
  }
13525
13846
  }
13526
13847
  function parseEnumValues(expression) {
13527
- return doParse(expression, "enum");
13848
+ return doParse(expression, "enum", void 0, true);
13528
13849
  }
13529
13850
  function parseStyleDeclarations(styleString, vars) {
13530
13851
  return doParse(styleString, "styleDeclarations", vars);
@@ -13615,10 +13936,20 @@ function ensureSingleChildElement(node2) {
13615
13936
  const elements = node2.childNodes.filter((child) => child.nodeType === NodeType.ELEMENT_NODE);
13616
13937
  if (elements.length === 1) {
13617
13938
  return new WithValidations(elements[0]);
13618
- } else
13939
+ }
13940
+ if (elements.length === 0) {
13619
13941
  return new WithValidations(void 0, [
13620
- `Jay HTML Body must have a single child element, yet ${elements.length} found.`
13942
+ `Jay HTML Body must have at least one child element.`
13621
13943
  ]);
13944
+ }
13945
+ const wrapper = parse_2('<div style="display: contents"></div>').firstChild;
13946
+ const parentEl = node2;
13947
+ for (const child of [...parentEl.childNodes]) {
13948
+ child.remove();
13949
+ wrapper.appendChild(child);
13950
+ }
13951
+ parentEl.appendChild(wrapper);
13952
+ return new WithValidations(wrapper);
13622
13953
  }
13623
13954
  const JAY_COMPONENT_PREFIX = "jay:";
13624
13955
  function hasJayPrefix(tagName) {
@@ -14004,12 +14335,12 @@ class RefNameGenerator {
14004
14335
  }
14005
14336
  newConstantName(refName, variables) {
14006
14337
  let suffix = 2;
14007
- let constName = camelCase(`ref ${refName}`);
14338
+ let constName = camelCase$1(`ref ${refName}`);
14008
14339
  while (this.constNamesToVariables.has(constName)) {
14009
14340
  if (this.constNamesToVariables.get(constName) === variables) {
14010
14341
  return constName;
14011
14342
  }
14012
- constName = camelCase(`ref ${refName}${suffix++}`);
14343
+ constName = camelCase$1(`ref ${refName}${suffix++}`);
14013
14344
  }
14014
14345
  this.constNamesToVariables.set(constName, variables);
14015
14346
  return constName;
@@ -14250,7 +14581,7 @@ function renderReferenceManager(refs, target) {
14250
14581
  };
14251
14582
  collectReservedConstNames(refs);
14252
14583
  const getUniqueRefManagerName = (baseName) => {
14253
- const baseCamelCase = camelCase(`${baseName}RefManager`);
14584
+ const baseCamelCase = camelCase$1(`${baseName}RefManager`);
14254
14585
  if (!usedRefManagerNames.has(baseCamelCase)) {
14255
14586
  usedRefManagerNames.add(baseCamelCase);
14256
14587
  return baseCamelCase;
@@ -14630,7 +14961,7 @@ function buildContractRefMap(refsTree) {
14630
14961
  ref.viewStateType,
14631
14962
  ref.elementType
14632
14963
  );
14633
- result.set(camelCase(ref.originalName), refWithOriginalName);
14964
+ result.set(camelCase$1(ref.originalName), refWithOriginalName);
14634
14965
  }
14635
14966
  for (const child of Object.values(tree.children)) {
14636
14967
  walk(child);
@@ -14640,15 +14971,15 @@ function buildContractRefMap(refsTree) {
14640
14971
  return result;
14641
14972
  }
14642
14973
  function mergeContractStubRefs(templateRefs, contractRefs) {
14643
- const templateRefNames = new Set(templateRefs.refs.map((r) => camelCase(r.ref)));
14974
+ const templateRefNames = new Set(templateRefs.refs.map((r) => camelCase$1(r.ref)));
14644
14975
  const stubRefs = [];
14645
14976
  for (const contractRef of contractRefs.refs) {
14646
- if (!templateRefNames.has(camelCase(contractRef.ref))) {
14977
+ if (!templateRefNames.has(camelCase$1(contractRef.ref))) {
14647
14978
  stubRefs.push(
14648
14979
  mkRef(
14649
14980
  contractRef.originalName,
14650
14981
  contractRef.originalName,
14651
- camelCase(`ref ${contractRef.originalName}`),
14982
+ camelCase$1(`ref ${contractRef.originalName}`),
14652
14983
  contractRef.repeated,
14653
14984
  true,
14654
14985
  contractRef.viewStateType,
@@ -14684,7 +15015,7 @@ function markAllRefsAsStubs(tree) {
14684
15015
  (ref) => mkRef(
14685
15016
  ref.originalName,
14686
15017
  ref.originalName,
14687
- camelCase(`ref ${ref.originalName}`),
15018
+ camelCase$1(`ref ${ref.originalName}`),
14688
15019
  ref.repeated,
14689
15020
  true,
14690
15021
  ref.viewStateType,
@@ -18259,7 +18590,7 @@ function parseYaml(root) {
18259
18590
  let jayYamlElements = root.querySelectorAll('[type="application/jay-data"]');
18260
18591
  if (jayYamlElements.length !== 1) {
18261
18592
  validations.push(
18262
- `jay file should have exactly one jay-data script, found ${jayYamlElements.length === 0 ? "none" : jayYamlElements.length}`
18593
+ jayYamlElements.length === 0 ? `Missing <script type="application/jay-data">. Add either inline data or a contract reference: <script type="application/jay-data" contract="./component.jay-contract"><\/script>` : `Expected exactly one <script type="application/jay-data">, found ${jayYamlElements.length}`
18263
18594
  );
18264
18595
  return new WithValidations(void 0, validations);
18265
18596
  }
@@ -18337,6 +18668,12 @@ async function parseHeadlessImports(elements, validations, filePath, importResol
18337
18668
  const pluginAttr = element.getAttribute("plugin");
18338
18669
  const contractAttr = element.getAttribute("contract");
18339
18670
  const key = element.getAttribute("key");
18671
+ if (key && !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
18672
+ validations.push(
18673
+ `Headless component key="${key}" is not a valid identifier. Use camelCase (e.g., key="${key.replace(/-([a-z])/g, (_, l) => l.toUpperCase())}").`
18674
+ );
18675
+ continue;
18676
+ }
18340
18677
  if (!pluginAttr) {
18341
18678
  validations.push("headless import must specify plugin attribute");
18342
18679
  continue;
@@ -18529,6 +18866,7 @@ function injectHeadfullFSTemplatesRecursive(fsElements, body, sourceDir, importR
18529
18866
  if (!jayTag.innerHTML.trim()) {
18530
18867
  jayTag.set_content(jayHtmlBody.innerHTML);
18531
18868
  jayTag.setAttribute("style", "display: contents");
18869
+ jayTag.setAttribute("jc", contractName);
18532
18870
  }
18533
18871
  }
18534
18872
  }
@@ -18707,6 +19045,20 @@ async function parseHeadfullFSImports(elements, validations, filePath, importRes
18707
19045
  continue;
18708
19046
  }
18709
19047
  jayTag.set_content(jayHtmlBody.innerHTML);
19048
+ jayTag.setAttribute("jc", contractName);
19049
+ }
19050
+ let resolvedSrcPath;
19051
+ try {
19052
+ resolvedSrcPath = importResolver.resolveLink(moduleResolveDir, src);
19053
+ } catch {
19054
+ resolvedSrcPath = path.resolve(moduleResolveDir, src);
19055
+ }
19056
+ const hasCodeFile = fs.existsSync(resolvedSrcPath + ".ts") || fs.existsSync(resolvedSrcPath + ".js") || fs.existsSync(path.join(resolvedSrcPath, "index.ts")) || fs.existsSync(path.join(resolvedSrcPath, "index.js"));
19057
+ if (!hasCodeFile) {
19058
+ for (const jayTag of jayTags) {
19059
+ jayTag.replaceWith(jayTag.innerHTML);
19060
+ }
19061
+ continue;
18710
19062
  }
18711
19063
  try {
18712
19064
  const contractTypes = await contractToImportsViewStateAndRefs(
@@ -18769,10 +19121,13 @@ async function parseHeadfullFSImports(elements, validations, filePath, importRes
18769
19121
  }))
18770
19122
  }));
18771
19123
  const contractLinks = [contractLink, ...enumImportLinks];
18772
- let relativeModule = path.relative(
18773
- filePath,
18774
- importResolver.resolveLink(moduleResolveDir, src)
18775
- );
19124
+ let resolvedModulePath;
19125
+ try {
19126
+ resolvedModulePath = importResolver.resolveLink(moduleResolveDir, src);
19127
+ } catch {
19128
+ resolvedModulePath = path.resolve(moduleResolveDir, src);
19129
+ }
19130
+ let relativeModule = path.relative(filePath, resolvedModulePath);
18776
19131
  if (!relativeModule.startsWith(".")) {
18777
19132
  relativeModule = "./" + relativeModule;
18778
19133
  }
@@ -18930,7 +19285,7 @@ function resolveNestedCssImports(css, cssDir, visited) {
18930
19285
  return `/* circular import: ${importPath} */`;
18931
19286
  seen.add(resolved);
18932
19287
  try {
18933
- const imported = fs$1.readFileSync(resolved, "utf-8");
19288
+ const imported = fs.readFileSync(resolved, "utf-8");
18934
19289
  return `/* @import ${importPath} */
18935
19290
  ${resolveNestedCssImports(imported, path.dirname(resolved), seen)}`;
18936
19291
  } catch {
@@ -18953,7 +19308,7 @@ async function extractCss(root, filePath) {
18953
19308
  const cssFilePath = path.resolve(filePath, href);
18954
19309
  linkedCssFiles.push(cssFilePath);
18955
19310
  try {
18956
- const cssContent = await fs.readFile(cssFilePath, "utf-8");
19311
+ const cssContent = await fs$1.readFile(cssFilePath, "utf-8");
18957
19312
  const resolvedCss = resolveNestedCssImports(
18958
19313
  cssContent,
18959
19314
  path.dirname(cssFilePath)
@@ -18968,7 +19323,7 @@ ${resolvedCss}`);
18968
19323
  }
18969
19324
  }
18970
19325
  }
18971
- const styleTags = root.querySelectorAll("head style, style");
19326
+ const styleTags = root.querySelectorAll("head style");
18972
19327
  for (const style of styleTags) {
18973
19328
  const cssContent = style.text.trim();
18974
19329
  if (cssContent) {
@@ -18978,16 +19333,38 @@ ${resolvedCss}`);
18978
19333
  const css = cssParts.length > 0 ? cssParts.join("\n\n") : void 0;
18979
19334
  return new WithValidations({ css, linkedCssFiles }, validations);
18980
19335
  }
19336
+ function detectCssNameCollisions(css, validations) {
19337
+ const keyframeNames = /* @__PURE__ */ new Set();
19338
+ for (const match of css.matchAll(/@keyframes\s+(\S+)/g)) {
19339
+ const name = match[1];
19340
+ if (keyframeNames.has(name)) {
19341
+ validations.push(
19342
+ `@keyframes "${name}" is defined multiple times. Animation names are global — rename to avoid collisions.`
19343
+ );
19344
+ }
19345
+ keyframeNames.add(name);
19346
+ }
19347
+ const fontFaceNames = /* @__PURE__ */ new Set();
19348
+ for (const match of css.matchAll(/@font-face\s*\{[^}]*font-family\s*:\s*['"]?([^;'"}\n]+)/g)) {
19349
+ const name = match[1].trim();
19350
+ if (fontFaceNames.has(name)) {
19351
+ validations.push(
19352
+ `@font-face "${name}" is defined multiple times. Font family names are global — rename to avoid collisions.`
19353
+ );
19354
+ }
19355
+ fontFaceNames.add(name);
19356
+ }
19357
+ }
18981
19358
  function extractTrackByMaps(pageContract, headlessImports) {
18982
19359
  const serverTrackByMap = {};
18983
19360
  const clientTrackByMap = {};
18984
19361
  function extractFromTags(tags, basePath = "", parentPhase) {
18985
19362
  for (const tag of tags) {
18986
- const propertyName = camelCase(tag.tag);
19363
+ const propertyName = camelCase$1(tag.tag);
18987
19364
  const currentPath = basePath ? `${basePath}.${propertyName}` : propertyName;
18988
19365
  const effectivePhase = tag.phase || parentPhase || "slow";
18989
19366
  if (tag.repeated && tag.trackBy) {
18990
- const trackByField = camelCase(tag.trackBy);
19367
+ const trackByField = camelCase$1(tag.trackBy);
18991
19368
  serverTrackByMap[currentPath] = trackByField;
18992
19369
  if (effectivePhase !== "fast+interactive") {
18993
19370
  clientTrackByMap[currentPath] = trackByField;
@@ -19070,7 +19447,7 @@ async function parseJayFile(html2, filename, filePath, options, linkedContractRe
19070
19447
  ...headfullImports,
19071
19448
  ...allHeadlessImports.flatMap((_) => [
19072
19449
  ..._.contractLinks,
19073
- ...usedAsInstance.has(_.contractName) ? [_.codeLink] : []
19450
+ ...usedAsInstance.has(_.contractName) && !_.structural ? [_.codeLink] : []
19074
19451
  ])
19075
19452
  ];
19076
19453
  const cssResult = await extractCss(root, filePath);
@@ -19085,6 +19462,9 @@ async function parseJayFile(html2, filename, filePath, options, linkedContractRe
19085
19462
  if (headfullFSResult.css) {
19086
19463
  css = css ? css + "\n\n" + headfullFSResult.css : headfullFSResult.css;
19087
19464
  }
19465
+ if (css) {
19466
+ detectCssNameCollisions(css, validations);
19467
+ }
19088
19468
  let allLinkedCssFiles = cssResult.val?.linkedCssFiles || [];
19089
19469
  if (headfullFSResult.linkedCssFiles.length > 0) {
19090
19470
  allLinkedCssFiles = [...allLinkedCssFiles, ...headfullFSResult.linkedCssFiles];
@@ -19145,7 +19525,7 @@ async function traverseTags(tags, typeName, context) {
19145
19525
  const result = subContractTypes.val;
19146
19526
  importLinks = [...importLinks, ...result.importLinks];
19147
19527
  childRefs[subTag.tag] = result.refs;
19148
- result.type && (objectTypeMembers[camelCase(subTag.tag)] = result.type);
19528
+ result.type && (objectTypeMembers[camelCase$1(subTag.tag)] = result.type);
19149
19529
  enumsToImport.push(...subContractTypes.val.enumsToImport);
19150
19530
  }
19151
19531
  validations = [...validations, ...subContractTypes.validations];
@@ -19162,7 +19542,7 @@ async function traverseTags(tags, typeName, context) {
19162
19542
  declaringModule: context.contractFilePath
19163
19543
  });
19164
19544
  result.ref && refs.push(result.ref);
19165
- result.type && (objectTypeMembers[camelCase(subTag.tag)] = result.type);
19545
+ result.type && (objectTypeMembers[camelCase$1(subTag.tag)] = result.type);
19166
19546
  }
19167
19547
  }
19168
19548
  const maybeArray = isRepeated ? new JayArrayType(objectType) : objectType;
@@ -19260,8 +19640,8 @@ async function traverseTag(tag, context) {
19260
19640
  const { viewStateType, isRepeated } = context;
19261
19641
  if (tag.type.includes(ContractTagType.interactive)) {
19262
19642
  const elementType = tag.elementType?.join(" | ") || "HTMLElement";
19263
- let refName = camelCase(tag.tag);
19264
- let constName = camelCase(`ref ${refName}`);
19643
+ let refName = camelCase$1(tag.tag);
19644
+ let constName = camelCase$1(`ref ${refName}`);
19265
19645
  const ref = mkRef(
19266
19646
  refName,
19267
19647
  tag.tag,
@@ -19292,7 +19672,7 @@ function resolveRecursiveReferences(type2, rootType) {
19292
19672
  let currentType = rootType;
19293
19673
  for (const part of pathParts) {
19294
19674
  if (isObjectType$1(currentType)) {
19295
- const camelCasePart = camelCase(part);
19675
+ const camelCasePart = camelCase$1(part);
19296
19676
  currentType = currentType.props[camelCasePart];
19297
19677
  if (!currentType) {
19298
19678
  break;
@@ -19425,7 +19805,7 @@ function generatePropsInterface(contractName, props) {
19425
19805
  return { propsInterface: `export interface ${propsTypeName} {}`, propsEnums: "" };
19426
19806
  }
19427
19807
  const propLines = props.map((prop) => {
19428
- const propName = camelCase$1(prop.name);
19808
+ const propName = camelCase(prop.name);
19429
19809
  const optional = prop.required ? "" : "?";
19430
19810
  let typeName;
19431
19811
  if (isEnumType(prop.dataType)) {
@@ -19450,7 +19830,7 @@ ${propLines.join("\n")}
19450
19830
  function generateParamsInterface(contractName, params) {
19451
19831
  const paramsTypeName = `${contractName}Params`;
19452
19832
  const paramLines = params.map((param) => {
19453
- const name = camelCase$1(param.name);
19833
+ const name = camelCase(param.name);
19454
19834
  if (param.kind === "optional")
19455
19835
  return ` ${name}?: string;`;
19456
19836
  if (param.kind === "catch-all")
@@ -19792,13 +20172,14 @@ function parseContract(contractYaml, fileName) {
19792
20172
  if (!parsedYaml.name) {
19793
20173
  validations.push("Contract must have a name");
19794
20174
  }
19795
- if (!parsedYaml.tags && !Array.isArray(parsedYaml.tags)) {
19796
- validations.push("Contract must have tags as an array of the contract tags");
20175
+ if (parsedYaml.tags !== void 0 && !Array.isArray(parsedYaml.tags)) {
20176
+ validations.push("Contract tags must be an array (use tags: [] for no tags)");
19797
20177
  }
19798
20178
  if (validations.length > 0) {
19799
20179
  return new WithValidations(void 0, validations);
19800
20180
  }
19801
- const tagResults = parsedYaml.tags.map((tag) => parseTag(tag));
20181
+ const tags = parsedYaml.tags ?? [];
20182
+ const tagResults = tags.map((tag) => parseTag(tag));
19802
20183
  const tagValidations = tagResults.flatMap((tr) => tr.validations);
19803
20184
  const parsedTags = tagResults.map((tr) => tr.val).filter((tag) => !!tag);
19804
20185
  const tagNames = /* @__PURE__ */ new Set();
@@ -19865,7 +20246,7 @@ function buildInteractivePaths(contract) {
19865
20246
  function walk(tags, parentPhase) {
19866
20247
  for (const tag of tags) {
19867
20248
  const phase = getEffectivePhase(tag, parentPhase);
19868
- const name = camelCase(tag.tag);
20249
+ const name = camelCase$1(tag.tag);
19869
20250
  if (phase === "fast+interactive") {
19870
20251
  paths.add(name);
19871
20252
  }
@@ -19928,6 +20309,8 @@ function mergeHydrateFragments(fragments, combinator) {
19928
20309
  }
19929
20310
  function renderHydrateNode(node2, context) {
19930
20311
  if (node2.nodeType === NodeType.ELEMENT_NODE) {
20312
+ if (node2.tagName === "STYLE")
20313
+ return RenderFragment.empty();
19931
20314
  return renderHydrateElement(node2, context);
19932
20315
  }
19933
20316
  return RenderFragment.empty();
@@ -20431,7 +20814,7 @@ const ${createComponentSymbol} = makeHeadlessInstanceComponent(
20431
20814
  );
20432
20815
  const getProps = `(${context.variables.currentVar}: ${context.variables.currentType.name}) => ${propsGetterAndRefs.rendered}`;
20433
20816
  const refOriginalName = element.attributes.ref || context.refNameGenerator.newAutoRefNameGenerator();
20434
- const refRefName = camelCase(refOriginalName);
20817
+ const refRefName = camelCase$1(refOriginalName);
20435
20818
  const refConstName = context.refNameGenerator.newConstantName(refRefName, context.variables);
20436
20819
  const isRepeated = context.dynamicRef;
20437
20820
  const contractRefType = isRepeated ? `${pascal}RepeatedRefs` : `${pascal}Refs`;
@@ -20489,7 +20872,7 @@ ${context.indent.firstLine} ${createCall})`;
20489
20872
  function renderHydrateElementContent(element, context, renderContext, coordinateOverride, forceAdopt = false) {
20490
20873
  const { variables, indent } = context;
20491
20874
  const refAttr = element.attributes.ref;
20492
- const refName = refAttr ? camelCase(refAttr) : null;
20875
+ const refName = refAttr ? camelCase$1(refAttr) : null;
20493
20876
  const attributes2 = renderDynamicAttributes(element, renderContext);
20494
20877
  const hasDynamicAttrs = attributes2.imports.has(Import.dynamicAttribute) || attributes2.imports.has(Import.dynamicProperty) || attributes2.imports.has(Import.booleanAttribute);
20495
20878
  const childNodes = filterContentNodes(element.childNodes, true);
@@ -20961,7 +21344,7 @@ function renderElementRef$1(element, { dynamicRef, variables, importedRefNameToR
20961
21344
  );
20962
21345
  }
20963
21346
  let originalName = element.attributes.ref;
20964
- let refName = camelCase(originalName);
21347
+ let refName = camelCase$1(originalName);
20965
21348
  let constName = refNameGenerator.newConstantName(refName, variables);
20966
21349
  let refs = mkRefsTree(
20967
21350
  [
@@ -21046,7 +21429,7 @@ function renderChildCompRef$1(element, { dynamicRef, variables, refNameGenerator
21046
21429
  );
21047
21430
  }
21048
21431
  let originalName = element.attributes.ref || refNameGenerator.newAutoRefNameGenerator();
21049
- let refName = camelCase(originalName);
21432
+ let refName = camelCase$1(originalName);
21050
21433
  let constName = refNameGenerator.newConstantName(refName, variables);
21051
21434
  let refs = mkRefsTree(
21052
21435
  [
@@ -21106,6 +21489,19 @@ function renderNode(node2, context) {
21106
21489
  }
21107
21490
  return renderHeadlessInstance(htmlElement, newContext, componentMatch.name);
21108
21491
  }
21492
+ const keyedByName = newContext.headlessImports.find(
21493
+ (h) => h.key && h.key === componentMatch.name
21494
+ );
21495
+ if (keyedByName) {
21496
+ return new RenderFragment("", Imports.none(), [
21497
+ `<jay:${componentMatch.name}> cannot be used as an inline element because it was imported with key="${keyedByName.key}". Keyed headless components merge their ViewState into the page — use {${keyedByName.key}.fieldName} bindings instead. For inline usage, remove the key and use <jay:${keyedByName.contractName}>.`
21498
+ ]);
21499
+ }
21500
+ if (componentMatch.kind === "unknown") {
21501
+ return new RenderFragment("", Imports.none(), [
21502
+ `<jay:${componentMatch.name}> does not match any imported headless contract or headful component.`
21503
+ ]);
21504
+ }
21109
21505
  return renderNestedComponent(htmlElement, newContext, componentMatch.name);
21110
21506
  }
21111
21507
  let contextForChildren = newContext;
@@ -21346,14 +21742,14 @@ ${inlineBody.rendered}
21346
21742
 
21347
21743
  const ${componentSymbol} = makeHeadlessInstanceComponent(
21348
21744
  ${renderFnName},
21349
- ${pluginComponentName},
21745
+ ${headlessImport.structural ? `{ comp: (_props, _refs) => ({ render: () => _props }) }` : pluginComponentName},
21350
21746
  ${isInsideForEach ? `(dataIds) => [...dataIds, '${coordinateSuffix}'].toString()` : `'${coordinateKey2}'`},
21351
21747
  );`;
21352
21748
  newContext.headlessInstanceDefs.push({
21353
21749
  componentSymbol,
21354
21750
  renderFnName,
21355
21751
  renderFnCode,
21356
- pluginComponentName,
21752
+ pluginComponentName: headlessImport.structural ? void 0 : pluginComponentName,
21357
21753
  imports: inlineBody.imports.plus(refsManagerImport)
21358
21754
  });
21359
21755
  let propsGetterAndRefs = renderChildCompProps$1(
@@ -21363,7 +21759,7 @@ const ${componentSymbol} = makeHeadlessInstanceComponent(
21363
21759
  );
21364
21760
  let getProps = `(${newContext.variables.currentVar}: ${newContext.variables.currentType.name}) => ${propsGetterAndRefs.rendered}`;
21365
21761
  const refOriginalName = htmlElement.attributes.ref || newContext.refNameGenerator.newAutoRefNameGenerator();
21366
- const refRefName = camelCase(refOriginalName);
21762
+ const refRefName = camelCase$1(refOriginalName);
21367
21763
  const refConstName = newContext.refNameGenerator.newConstantName(
21368
21764
  refRefName,
21369
21765
  newContext.variables
@@ -21404,6 +21800,13 @@ const ${componentSymbol} = makeHeadlessInstanceComponent(
21404
21800
  renderedRef.refs
21405
21801
  );
21406
21802
  }
21803
+ if (node2.nodeType === NodeType.ELEMENT_NODE && node2.tagName === "STYLE") {
21804
+ const css = textEscape$1(node2.text);
21805
+ return new RenderFragment(
21806
+ `${indent.firstLine}e('style', {}, ['${css}'])`,
21807
+ Imports.for(Import.element)
21808
+ );
21809
+ }
21407
21810
  switch (node2.nodeType) {
21408
21811
  case NodeType.TEXT_NODE:
21409
21812
  let text2 = node2.innerText;
@@ -21621,7 +22024,9 @@ function renderFunctionImplementation$1(types2, rootBodyElement, importStatement
21621
22024
  const variables = new Variables(types2);
21622
22025
  const { importedSymbols, importedSandboxedSymbols } = processImportedComponents(importStatements);
21623
22026
  const importedRefNameToRef = processImportedHeadless(headlessImports);
21624
- const headlessContractNames = new Set(headlessImports.map((h) => h.contractName));
22027
+ const headlessContractNames = new Set(
22028
+ headlessImports.filter((h) => !h.structural).map((h) => h.contractName)
22029
+ );
21625
22030
  assignCoordinates(rootBodyElement, { headlessContractNames });
21626
22031
  const rootElement = ensureSingleChildElement(rootBodyElement);
21627
22032
  let renderedRoot;
@@ -21909,7 +22314,7 @@ function generateElementBridgeFile(jayFile) {
21909
22314
  }
21910
22315
  function generateElementHydrateFile(jayFile, importerMode) {
21911
22316
  const types2 = generateTypes(jayFile.types);
21912
- const headlessImports = jayFile.headlessImports?.filter((h) => !h.key) ?? [];
22317
+ const headlessImports = jayFile.headlessImports?.filter((h) => !h.key && !h.structural) ?? [];
21913
22318
  const headlessContractNames = new Set(headlessImports.map((h) => h.contractName));
21914
22319
  assignCoordinates(jayFile.body, { headlessContractNames });
21915
22320
  const {
@@ -22246,7 +22651,7 @@ function renderAttributes(element, { variables }) {
22246
22651
  function renderElementRef(element, { dynamicRef, variables }) {
22247
22652
  if (element.attributes.ref) {
22248
22653
  let originalName = element.attributes.ref;
22249
- let refName = camelCase(originalName);
22654
+ let refName = camelCase$1(originalName);
22250
22655
  let refs = [
22251
22656
  mkRef(
22252
22657
  refName,
@@ -22299,7 +22704,7 @@ function renderChildCompProps(element, { variables }) {
22299
22704
  }
22300
22705
  function renderChildCompRef(element, { dynamicRef, variables, nextAutoRefName }, componentName) {
22301
22706
  let originalName = element.attributes.ref || nextAutoRefName.newAutoRefNameGenerator();
22302
- let refName = camelCase(originalName);
22707
+ let refName = camelCase$1(originalName);
22303
22708
  let constName = nextAutoRefName.newConstantName(refName, variables);
22304
22709
  let refs = [
22305
22710
  mkRef(
@@ -22554,6 +22959,10 @@ function w(indent, code, imports = Imports.none()) {
22554
22959
  return new RenderFragment(`${indent.firstLine}w(${code});`, imports);
22555
22960
  }
22556
22961
  function renderServerNode(node2, context) {
22962
+ if (node2.nodeType === NodeType.ELEMENT_NODE && node2.tagName === "STYLE") {
22963
+ const css = textEscape$1(node2.text);
22964
+ return w(context.indent, `'<style>${css}</style>'`);
22965
+ }
22557
22966
  if (node2.nodeType === NodeType.TEXT_NODE) {
22558
22967
  const text2 = node2.innerText;
22559
22968
  if (text2.trim() === "")
@@ -22604,7 +23013,7 @@ function renderServerElement(element, context) {
22604
23013
  ${body.rendered}
22605
23014
  ${indent.firstLine}}`,
22606
23015
  body.imports,
22607
- body.validations
23016
+ [...renderedCondition.validations, ...body.validations]
22608
23017
  );
22609
23018
  }
22610
23019
  if (isForEach(element)) {
@@ -22705,8 +23114,10 @@ function renderServerHeadlessInstance(element, context, contractName) {
22705
23114
  `${guardIndent.firstLine}}`
22706
23115
  ].join("\n");
22707
23116
  let result;
23117
+ let conditionValidations = [];
22708
23118
  if (ifCondition) {
22709
23119
  const renderedCondition = parseServerCondition(ifCondition, context.variables);
23120
+ conditionValidations = renderedCondition.validations;
22710
23121
  result = [
22711
23122
  `${indent.firstLine}if (${renderedCondition.rendered}) {`,
22712
23123
  guardedBlock,
@@ -22715,7 +23126,10 @@ function renderServerHeadlessInstance(element, context, contractName) {
22715
23126
  } else {
22716
23127
  result = guardedBlock;
22717
23128
  }
22718
- return new RenderFragment(result, renderedChildren.imports, renderedChildren.validations);
23129
+ return new RenderFragment(result, renderedChildren.imports, [
23130
+ ...conditionValidations,
23131
+ ...renderedChildren.validations
23132
+ ]);
22719
23133
  }
22720
23134
  function mergeServerFragments(fragments) {
22721
23135
  return fragments.filter((f) => f.rendered.trim().length > 0).reduce((prev, curr) => RenderFragment.merge(prev, curr, "\n"), RenderFragment.empty());
@@ -22884,7 +23298,7 @@ function renderServerForEachAsString(element, context) {
22884
23298
  function renderServerElementAsString(element, context, overrideCoordinate) {
22885
23299
  const { variables } = context;
22886
23300
  const refAttr = element.attributes.ref;
22887
- const refName = refAttr ? camelCase(refAttr) : null;
23301
+ const refName = refAttr ? camelCase$1(refAttr) : null;
22888
23302
  const childNodes = filterContentNodes(element.childNodes, true);
22889
23303
  let dynamicTextFragment = null;
22890
23304
  if (childNodes.length === 1 && childNodes[0].nodeType === NodeType.TEXT_NODE) {
@@ -23078,7 +23492,7 @@ function renderServerElementContent(element, context, options) {
23078
23492
  dynamicTextFragment = null;
23079
23493
  }
23080
23494
  }
23081
- const refName = element.attributes.ref ? camelCase(element.attributes.ref) : null;
23495
+ const refName = element.attributes.ref ? camelCase$1(element.attributes.ref) : null;
23082
23496
  const needsCoordinate = options?.isRoot === true || isConditional(element) || dynamicTextFragment !== null || refName !== null || hasDynamicAttributeBindings(element, variables) || hasInteractiveChildElements(childNodes) || hasMixedContentDynamicTextInteractive(childNodes, context.interactivePaths) || context.parentHasInteractiveChildren;
23083
23497
  const coordTemplate = needsCoordinate ? element.getAttribute(COORD_ATTR) : null;
23084
23498
  const isVoid = voidElements.has(element.rawTagName.toLowerCase());
@@ -30002,7 +30416,7 @@ const JAY_IMPORT_RESOLVER = {
30002
30416
  return analyzeExportedTypes(fullPath, options);
30003
30417
  },
30004
30418
  loadContract(fullPath) {
30005
- const content = fs$1.readFileSync(fullPath).toString();
30419
+ const content = fs.readFileSync(fullPath).toString();
30006
30420
  return parseContract(content, fullPath);
30007
30421
  },
30008
30422
  resolveLink(importingModuleDir, link) {
@@ -30018,7 +30432,7 @@ const JAY_IMPORT_RESOLVER = {
30018
30432
  const resolution = resolvePluginComponent(projectRoot, pluginName, contractName);
30019
30433
  if (resolution.val && resolution.val.contractPath) {
30020
30434
  const contractPath = resolution.val.contractPath;
30021
- const content = fs$1.readFileSync(contractPath).toString();
30435
+ const content = fs.readFileSync(contractPath).toString();
30022
30436
  const contractResult = parseContract(content, contractPath);
30023
30437
  return contractResult.map((contract) => ({ contract, contractPath }));
30024
30438
  }
@@ -30026,14 +30440,14 @@ const JAY_IMPORT_RESOLVER = {
30026
30440
  const pluginDir = pluginName.startsWith("@") ? pluginName.split("/").pop() || pluginName : pluginName;
30027
30441
  const contractFileName = contractName.replace(/\//g, "-") + ".jay-contract";
30028
30442
  const materializedPath = path.join(materializedDir, pluginDir, contractFileName);
30029
- if (fs$1.existsSync(materializedPath)) {
30030
- const content = fs$1.readFileSync(materializedPath).toString();
30443
+ if (fs.existsSync(materializedPath)) {
30444
+ const content = fs.readFileSync(materializedPath).toString();
30031
30445
  const contractResult = parseContract(content, materializedPath);
30032
30446
  let metadata;
30033
30447
  const indexPath = path.join(projectRoot, "agent-kit", "plugins-index.yaml");
30034
- if (fs$1.existsSync(indexPath)) {
30448
+ if (fs.existsSync(indexPath)) {
30035
30449
  try {
30036
- const indexContent = fs$1.readFileSync(indexPath, "utf-8");
30450
+ const indexContent = fs.readFileSync(indexPath, "utf-8");
30037
30451
  const index = YAML.parse(indexContent);
30038
30452
  const plugin = index.plugins?.find(
30039
30453
  (p) => p.name === pluginName || p.name === pluginDir
@@ -30062,13 +30476,13 @@ const JAY_IMPORT_RESOLVER = {
30062
30476
  const resolvedPath = src.startsWith(".") ? path.resolve(importingModuleDir, src) : src;
30063
30477
  const jayHtmlPath = resolvedPath + ".jay-html";
30064
30478
  try {
30065
- const content = fs$1.readFileSync(jayHtmlPath, "utf-8");
30479
+ const content = fs.readFileSync(jayHtmlPath, "utf-8");
30066
30480
  return { content, componentDir: path.dirname(jayHtmlPath), filePath: jayHtmlPath };
30067
30481
  } catch {
30068
30482
  }
30069
30483
  const dirJayHtmlPath = path.resolve(resolvedPath, path.basename(resolvedPath)) + ".jay-html";
30070
30484
  try {
30071
- const content = fs$1.readFileSync(dirJayHtmlPath, "utf-8");
30485
+ const content = fs.readFileSync(dirJayHtmlPath, "utf-8");
30072
30486
  return {
30073
30487
  content,
30074
30488
  componentDir: path.dirname(dirJayHtmlPath),