occam-parsers 23.3.73 → 23.3.75

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.
Files changed (39) hide show
  1. package/lib/definition.js +5 -5
  2. package/lib/node/nonTerminal.js +33 -29
  3. package/lib/part/nonTerminal/branchingParts.js +3 -3
  4. package/lib/part/nonTerminal/choiceOfParts.js +16 -8
  5. package/lib/part/nonTerminal/isolatedPart.js +3 -3
  6. package/lib/part/nonTerminal/oneOrMoreParts.js +3 -3
  7. package/lib/part/nonTerminal/optionalPart.js +5 -2
  8. package/lib/part/nonTerminal/ruleName.js +3 -3
  9. package/lib/part/nonTerminal/sequenceOfParts.js +3 -3
  10. package/lib/part/nonTerminal/zeroOrMoreParts.js +5 -2
  11. package/lib/part/terminal/cut.js +5 -2
  12. package/lib/part/terminal/endOfLine.js +2 -2
  13. package/lib/part/terminal/epsilon.js +2 -2
  14. package/lib/part/terminal/noWhitespace.js +2 -2
  15. package/lib/part/terminal/regularExpression.js +2 -2
  16. package/lib/part/terminal/significantTokenType.js +2 -2
  17. package/lib/part/terminal/stringLiteral.js +2 -2
  18. package/lib/part/terminal/wildcard.js +2 -2
  19. package/lib/rule.js +18 -10
  20. package/package.json +1 -1
  21. package/src/definition.js +4 -4
  22. package/src/node/nonTerminal.js +39 -34
  23. package/src/part/nonTerminal/branchingParts.js +2 -2
  24. package/src/part/nonTerminal/choiceOfParts.js +17 -7
  25. package/src/part/nonTerminal/isolatedPart.js +1 -1
  26. package/src/part/nonTerminal/oneOrMoreParts.js +1 -1
  27. package/src/part/nonTerminal/optionalPart.js +5 -1
  28. package/src/part/nonTerminal/ruleName.js +2 -2
  29. package/src/part/nonTerminal/sequenceOfParts.js +2 -2
  30. package/src/part/nonTerminal/zeroOrMoreParts.js +5 -1
  31. package/src/part/terminal/cut.js +5 -1
  32. package/src/part/terminal/endOfLine.js +1 -1
  33. package/src/part/terminal/epsilon.js +1 -1
  34. package/src/part/terminal/noWhitespace.js +1 -1
  35. package/src/part/terminal/regularExpression.js +1 -1
  36. package/src/part/terminal/significantTokenType.js +1 -1
  37. package/src/part/terminal/stringLiteral.js +1 -1
  38. package/src/part/terminal/wildcard.js +1 -1
  39. package/src/rule.js +26 -12
package/lib/definition.js CHANGED
@@ -66,9 +66,9 @@ class Definition {
66
66
  getPrecedence() {
67
67
  return this.precedence;
68
68
  }
69
- isConsuming(ruleMap, visitedRules) {
69
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
70
70
  const consuming = this.parts.some((part)=>{
71
- const consuming = part.isConsuming(ruleMap, visitedRules);
71
+ const consuming = part.isConsuming(ruleMap, visitedRules, checkForCutParts);
72
72
  if (consuming) {
73
73
  return true;
74
74
  }
@@ -89,8 +89,8 @@ class Definition {
89
89
  }, back);
90
90
  }
91
91
  compose(rule, definition, savedFrame, frame, state) {
92
- const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state), unpalatable = nonTerminalNode.isUnpalatable();
93
- if (unpalatable) {
92
+ const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state), invalid = nonTerminalNode.isInvalid();
93
+ if (invalid) {
94
94
  frame = null;
95
95
  } else {
96
96
  const childNode = nonTerminalNode; ///
@@ -143,4 +143,4 @@ function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame,
143
143
  return nonTerminalNode;
144
144
  }
145
145
 
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJ0cywgcHJlY2VkZW5jZSkge1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByZWNlZGVuY2U7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpLFxuICAgICAgICAgIHVucGFsYXRhYmxlID0gbm9uVGVybWluYWxOb2RlLmlzVW5wYWxhdGFibGUoKTtcblxuICAgIGlmICh1bnBhbGF0YWJsZSkge1xuICAgICAgZnJhbWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGUgPSBub25UZXJtaW5hbE5vZGU7ICAvLy9cblxuICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSk7IC8vL1xuXG4gICAgICBmcmFtZSA9IHNhdmVkRnJhbWUubWVyZ2UoZnJhbWUpOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgcGFydHNTdHJpbmcgPSB0aGlzLnBhcnRzLnJlZHVjZSgocGFydHNTdHJpbmcsIHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IHBhcnRTdHJpbmcgPSBwYXJ0LmFzU3RyaW5nKCk7XG5cbiAgICAgIGlmIChwYXJ0c1N0cmluZyA9PT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgICAgIHBhcnRzU3RyaW5nID0gcGFydFN0cmluZzsgLy8vXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0c1N0cmluZyA9IGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnRzU3RyaW5nO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICBzdHJpbmcgPSBwYXJ0c1N0cmluZzsgLy8vXG5cbiAgICBpZiAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcmVjZWRlbmNlID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBQ0VfQ0hBUkFDVEVSIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVjZWRlbmNlO1xuXG4gICAgICBzdHJpbmcgPSBgJHtzdHJpbmd9ICgke3ByZWNlZGVuY2V9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMoQ2xhc3MsIHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0c0FuZFByZWNlZGVuY2UoQ2xhc3MsIHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgaWYgKHByZWNlZGVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHBhcnRzOyAvLy9cblxuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBjb25zdCBvcGFjaXR5ID0gcnVsZS5nZXRPcGFjaXR5KCksXG4gICAgICAgIHJ1bGVOYW1lID0gcnVsZS5nZXROYW1lKCksXG4gICAgICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZWNlZGVuY2UgPSBmcmFtZS5nZXRQcmVjZWRlbmNlKGRlZmluaXRpb24pLFxuICAgICAgICBOb25UZXJtaW5hbE5vZGUgPSBydWxlLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSwgc3RhdGUpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkocnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZS5yZXdyaXRlKHN0YXRlKTtcblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJTUEFDRV9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwicGFydHMiLCJwcmVjZWRlbmNlIiwiZ2V0UGFydHMiLCJnZXRQcmVjZWRlbmNlIiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlIiwidW5wYWxhdGFibGUiLCJpc1VucGFsYXRhYmxlIiwiY2hpbGROb2RlIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2RlIiwibWVyZ2UiLCJhc1N0cmluZyIsInN0cmluZyIsInBhcnRzU3RyaW5nIiwicmVkdWNlIiwicGFydFN0cmluZyIsIkVNUFRZX1NUUklORyIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0UiLCJmcm9tUGFydHMiLCJDbGFzcyIsInVuZGVmaW5lZCIsImZyb21QYXJ0c0FuZFByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0T3BhY2l0eSIsInJ1bGVOYW1lIiwiZ2V0TmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiTm9uVGVybWluYWxOb2RlIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicmV3cml0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYTTsrREFFVDt3QkFHb0I7MkJBQ0c7MkJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxNQUFNLEVBQUVDLGVBQWUsRUFBRSxHQUFHQyxxQkFBVTtBQUV2QixNQUFNRjtJQUNuQixZQUFZRyxLQUFLLEVBQUVDLFVBQVUsQ0FBRTtRQUM3QixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLFlBQVlDLE9BQU8sRUFBRUMsWUFBWSxFQUFFO1FBQ2pDLE1BQU1DLFlBQVksSUFBSSxDQUFDUCxLQUFLLENBQUNRLElBQUksQ0FBQyxDQUFDQztZQUNqQyxNQUFNRixZQUFZRSxLQUFLTCxXQUFXLENBQUNDLFNBQVNDO1lBRTVDLElBQUlDLFdBQVc7Z0JBQ2IsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFHLE1BQU1DLElBQUksRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3ZDLE1BQU1DLGFBQWFKLE9BQ2JLLFlBQVlKLE1BQU1LLFdBQVcsSUFDN0JDLFFBQVFGLFlBQ0VHLGdCQUFjLEdBQ1pDLGFBQVc7UUFFN0IsT0FBT0YsTUFBTSxJQUFJLENBQUNuQixLQUFLLEVBQUUsQ0FBQ1Ms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
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJ0cywgcHJlY2VkZW5jZSkge1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByZWNlZGVuY2U7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSwgY2hlY2tGb3JDdXRQYXJ0cyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY29uc3VtaW5nID0gdGhpcy5wYXJ0cy5zb21lKChwYXJ0KSA9PiB7XG4gICAgICBjb25zdCBjb25zdW1pbmcgPSBwYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cyk7XG5cbiAgICAgIGlmIChjb25zdW1pbmcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgcGFyc2UocnVsZSwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2F2ZWRGcmFtZSA9IGZyYW1lLCAvLy9cbiAgICAgICAgICBicmFuY2hpbmcgPSBzdGF0ZS5pc0JyYW5jaGluZygpLFxuICAgICAgICAgIGV2ZXJ5ID0gYnJhbmNoaW5nID9cbiAgICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nRXZlcnkgOlxuICAgICAgICAgICAgICAgICAgICAgIGxpbmVhckV2ZXJ5O1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMucGFydHMsIChwYXJ0LCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBwYXJ0LnBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZW1wdHlGcmFtZSwgc3RhdGUsIChmcmFtZSwgc3RhdGUsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGZyYW1lID0gdGhpcy5jb21wb3NlKHJ1bGUsIGRlZmluaXRpb24sIHNhdmVkRnJhbWUsIGZyYW1lLCBzdGF0ZSk7ICAvLy9cblxuICAgICAgaWYgKGZyYW1lID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGZyYW1lLCBzdGF0ZSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBjb21wb3NlKHJ1bGUsIGRlZmluaXRpb24sIHNhdmVkRnJhbWUsIGZyYW1lLCBzdGF0ZSkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZUZyb21SdWxlRGVmaW5pdGlvbkZyYW1lQW5kU3RhdGUocnVsZSwgZGVmaW5pdGlvbiwgZnJhbWUsIHN0YXRlKSxcbiAgICAgICAgICBpbnZhbGlkID0gbm9uVGVybWluYWxOb2RlLmlzSW52YWxpZCgpO1xuXG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIGZyYW1lID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9uVGVybWluYWxOb2RlOyAgLy8vXG5cbiAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUNoaWxkTm9kZShjaGlsZE5vZGUpOyAvLy9cblxuICAgICAgZnJhbWUgPSBzYXZlZEZyYW1lLm1lcmdlKGZyYW1lKTsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGNvbnN0IHBhcnRzU3RyaW5nID0gdGhpcy5wYXJ0cy5yZWR1Y2UoKHBhcnRzU3RyaW5nLCBwYXJ0KSA9PiB7XG4gICAgICBjb25zdCBwYXJ0U3RyaW5nID0gcGFydC5hc1N0cmluZygpO1xuXG4gICAgICBpZiAocGFydHNTdHJpbmcgPT09IEVNUFRZX1NUUklORykge1xuICAgICAgICBwYXJ0c1N0cmluZyA9IHBhcnRTdHJpbmc7IC8vL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHNTdHJpbmcgPSBgJHtwYXJ0c1N0cmluZ30gJHtwYXJ0U3RyaW5nfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJ0c1N0cmluZztcbiAgICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gICAgc3RyaW5nID0gcGFydHNTdHJpbmc7IC8vL1xuXG4gICAgaWYgKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJlY2VkZW5jZSA9ICh0aGlzLnByZWNlZGVuY2UgPT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQQUNFX0NIQVJBQ1RFUiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlY2VkZW5jZTtcblxuICAgICAgc3RyaW5nID0gYCR7c3RyaW5nfSAoJHtwcmVjZWRlbmNlfSlgO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhcnRzKENsYXNzLCBwYXJ0cykge1xuICAgIGlmIChwYXJ0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJ0cyA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gRGVmaW5pdGlvbjsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcHJlY2VkZW5jZSA9IG51bGwsXG4gICAgICAgICAgZGVmaW5pdGlvbiA9IG5ldyBDbGFzcyhwYXJ0cywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHNBbmRQcmVjZWRlbmNlKENsYXNzLCBwYXJ0cywgcHJlY2VkZW5jZSkge1xuICAgIGlmIChwcmVjZWRlbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZWNlZGVuY2UgPSBwYXJ0czsgLy8vXG5cbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vblRlcm1pbmFsTm9kZUZyb21SdWxlRGVmaW5pdGlvbkZyYW1lQW5kU3RhdGUocnVsZSwgZGVmaW5pdGlvbiwgZnJhbWUsIHN0YXRlKSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGU7XG5cbiAgY29uc3Qgb3BhY2l0eSA9IHJ1bGUuZ2V0T3BhY2l0eSgpLFxuICAgICAgICBydWxlTmFtZSA9IHJ1bGUuZ2V0TmFtZSgpLFxuICAgICAgICBjaGlsZE5vZGVzID0gZnJhbWUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBwcmVjZWRlbmNlID0gZnJhbWUuZ2V0UHJlY2VkZW5jZShkZWZpbml0aW9uKSxcbiAgICAgICAgTm9uVGVybWluYWxOb2RlID0gcnVsZS5Ob25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUocnVsZU5hbWUsIHN0YXRlKTtcblxuICBub25UZXJtaW5hbE5vZGUgPSBOb25UZXJtaW5hbE5vZGUuZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5KHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5KTtcblxuICBub25UZXJtaW5hbE5vZGUgPSBub25UZXJtaW5hbE5vZGUucmV3cml0ZShzdGF0ZSk7XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJEZWZpbml0aW9uIiwiU1BBQ0VfQ0hBUkFDVEVSIiwiY2hhcmFjdGVycyIsInBhcnRzIiwicHJlY2VkZW5jZSIsImdldFBhcnRzIiwiZ2V0UHJlY2VkZW5jZSIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNoZWNrRm9yQ3V0UGFydHMiLCJjb25zdW1pbmciLCJzb21lIiwicGFydCIsInBhcnNlIiwicnVsZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsInNhdmVkRnJhbWUiLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsImV2ZXJ5IiwiYnJhbmNoaW5nRXZlcnkiLCJsaW5lYXJFdmVyeSIsImVtcHR5RnJhbWUiLCJkZWZpbml0aW9uIiwiY29tcG9zZSIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUZyb21SdWxlRGVmaW5pdGlvbkZyYW1lQW5kU3RhdGUiLCJpbnZhbGlkIiwiaXNJbnZhbGlkIiwiY2hpbGROb2RlIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2RlIiwibWVyZ2UiLCJhc1N0cmluZyIsInN0cmluZyIsInBhcnRzU3RyaW5nIiwicmVkdWNlIiwicGFydFN0cmluZyIsIkVNUFRZX1NUUklORyIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0UiLCJmcm9tUGFydHMiLCJDbGFzcyIsInVuZGVmaW5lZCIsImZyb21QYXJ0c0FuZFByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0T3BhY2l0eSIsInJ1bGVOYW1lIiwiZ2V0TmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiTm9uVGVybWluYWxOb2RlIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicmV3cml0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYTTsrREFFVDt3QkFHb0I7MkJBQ0c7MkJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxNQUFNLEVBQUVDLGVBQWUsRUFBRSxHQUFHQyxxQkFBVTtBQUV2QixNQUFNRjtJQUNuQixZQUFZRyxLQUFLLEVBQUVDLFVBQVUsQ0FBRTtRQUM3QixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLFlBQVlDLE9BQU8sRUFBRUMsZUFBZSxFQUFFLEVBQUVDLG1CQUFtQixLQUFLLEVBQUU7UUFDaEUsTUFBTUMsWUFBWSxJQUFJLENBQUNSLEtBQUssQ0FBQ1MsSUFBSSxDQUFDLENBQUNDO1lBQ2pDLE1BQU1GLFlBQVlFLEtBQUtOLFdBQVcsQ0FBQ0MsU0FBU0MsY0FBY0M7WUFFMUQsSUFBSUMsV0FBVztnQkFDYixPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUcsTUFBTUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDdkMsTUFBTUMsYUFBYUosT0FDYkssWUFBWUosTUFBTUssV0FBVyxJQUM3QkMsUUFBUUYsWUFDRUcsZ0JBQWMsR0FDWkMsYUFBVztRQUU3QixPQUFPRixNQUFNLElBQUksQ0FBQ3BCLEtBQUssRUFBRSxDQUFDVSxNQUFNRyxPQUFPQyxPQUFPQyxTQUFTQztZQUNyRCxPQUFPTixLQUFLQyxLQUFLLENBQUNFLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdPLGlCQUFVLEVBQUVULE9BQU8sQ0FBQ0QsT0FBT0MsT0FBT0U7WUFDbkMsTUFBTVEsYUFBYSxJQUFJLEVBQUcsR0FBRztZQUU3QlgsUUFBUSxJQUFJLENBQUNZLE9BQU8sQ0FBQ2IsTUFBTVksWUFBWVAsWUFBWUosT0FBT0MsUUFBUyxHQUFHO1lBRXRFLElBQUlELFVBQVUsTUFBTTtnQkFDbEIsT0FBT0c7WUFDVDtZQUVBLE9BQU9ELFFBQVFGLE9BQU9DLE9BQU9FO1FBQy9CLEdBQUdBO0lBQ0w7SUFFQVMsUUFBUWIsSUFBSSxFQUFFWSxVQUFVLEVBQUVQLFVBQVUsRUFBRUosS0FBSyxFQUFFQyxLQUFLLEVBQUU7UUFDbEQsTUFBTVksa0JBQWtCQywrQ0FBK0NmLE1BQU1ZLFlBQVlYLE9BQU9DLFFBQzFGYyxVQUFVRixnQkFBZ0JHLFNBQVM7UUFFekMsSUFBSUQsU0FBUztZQUNYZixRQUFRO1FBQ1YsT0FBTztZQUNMLE1BQU1pQixZQUFZSixpQkFBa0IsR0FBRztZQUV2Q2IsUUFBUWtCLGNBQUssQ0FBQ0MsYUFBYSxDQUFDRixZQUFZLEdBQUc7WUFFM0NqQixRQUFRSSxXQUFXZ0IsS0FBSyxDQUFDcEIsUUFBUSxHQUFHO1FBQ3RDO1FBRUEsT0FBT0E7SUFDVDtJQUVBcUIsV0FBVztRQUNULElBQUlDO1FBRUosTUFBTUMsY0FBYyxJQUFJLENBQUNwQyxLQUFLLENBQUNxQyxNQUFNLENBQUMsQ0FBQ0QsYUFBYTFCO1lBQ2xELE1BQU00QixhQUFhNUIsS0FBS3dCLFFBQVE7WUFFaEMsSUFBSUUsZ0JBQWdCRyx1QkFBWSxFQUFFO2dCQUNoQ0gsY0FBY0UsWUFBWSxHQUFHO1lBQy9CLE9BQU87Z0JBQ0xGLGNBQWMsR0FBR0EsWUFBWSxDQUFDLEVBQUVFLFlBQVk7WUFDOUM7WUFFQSxPQUFPRjtRQUNULEdBQUdHLHVCQUFZO1FBRWZKLFNBQVNDLGFBQWEsR0FBRztRQUV6QixJQUFJLElBQUksQ0FBQ25DLFVBQVUsS0FBSyxNQUFNO1lBQzVCLE1BQU1BLGFBQWEsQUFBQyxJQUFJLENBQUNBLFVBQVUsS0FBS3VDLGlDQUFzQixHQUN6QzFDLGtCQUNFLElBQUksQ0FBQ0csVUFBVTtZQUV0Q2tDLFNBQVMsR0FBR0EsT0FBTyxFQUFFLEVBQUVsQyxXQUFXLENBQUMsQ0FBQztRQUN0QztRQUVBLE9BQU9rQztJQUNUO0lBRUEsT0FBT00sVUFBVUMsS0FBSyxFQUFFMUMsS0FBSyxFQUFFO1FBQzdCLElBQUlBLFVBQVUyQyxXQUFXO1lBQ3ZCM0MsUUFBUTBDLE9BQVEsR0FBRztZQUVuQkEsUUFBUTdDLFlBQVksR0FBRztRQUN6QjtRQUVBLE1BQU1JLGFBQWEsTUFDYnVCLGFBQWEsSUFBSWtCLE1BQU0xQyxPQUFPQztRQUVwQyxPQUFPdUI7SUFDVDtJQUVBLE9BQU9vQix1QkFBdUJGLEtBQUssRUFBRTFDLEtBQUssRUFBRUMsVUFBVSxFQUFFO1FBQ3RELElBQUlBLGVBQWUwQyxXQUFXO1lBQzVCMUMsYUFBYUQsT0FBTyxHQUFHO1lBRXZCQSxRQUFRMEMsT0FBUSxHQUFHO1lBRW5CQSxRQUFRN0MsWUFBWSxHQUFHO1FBQ3pCO1FBRUEsTUFBTTJCLGFBQWEsSUFBSWtCLE1BQU0xQyxPQUFPQztRQUVwQyxPQUFPdUI7SUFDVDtBQUNGO0FBRUEsU0FBU0csK0NBQStDZixJQUFJLEVBQUVZLFVBQVUsRUFBRVgsS0FBSyxFQUFFQyxLQUFLO0lBQ3BGLElBQUlZO0lBRUosTUFBTW1CLFVBQVVqQyxLQUFLa0MsVUFBVSxJQUN6QkMsV0FBV25DLEtBQUtvQyxPQUFPLElBQ3ZCQyxhQUFhcEMsTUFBTXFDLGFBQWEsSUFDaENqRCxhQUFhWSxNQUFNVixhQUFhLENBQUNxQixhQUNqQzJCLGtCQUFrQnZDLEtBQUt3QywyQkFBMkIsQ0FBQ0wsVUFBVWpDO0lBRW5FWSxrQkFBa0J5QixnQkFBZ0JFLDBDQUEwQyxDQUFDTixVQUFVRSxZQUFZaEQsWUFBWTRDO0lBRS9HbkIsa0JBQWtCQSxnQkFBZ0I0QixPQUFPLENBQUN4QztJQUUxQyxPQUFPWTtBQUNUIn0=
@@ -109,25 +109,29 @@ class NonTerminalNode {
109
109
  });
110
110
  return significantTokens;
111
111
  }
112
+ getAssociativity() {
113
+ const associativity = Math.sign(this.precedence);
114
+ return associativity;
115
+ }
112
116
  getMultiplicity() {
113
117
  const childNodesLength = this.childNodes.length, multiplicity = childNodesLength; ///
114
118
  return multiplicity;
115
119
  }
120
+ getStrength() {
121
+ const strength = Math.abs(this.precedence);
122
+ return strength;
123
+ }
116
124
  isSingular() {
117
125
  const multiplicity = this.getMultiplicity(), singular = multiplicity === 1;
118
126
  return singular;
119
127
  }
120
- isPalatable() {
121
- const unpalatable = this.isUnpalatable(), palatable = !unpalatable;
122
- return palatable;
123
- }
124
- isUnpalatable() {
125
- let unpalatable = false;
128
+ isInvalid() {
129
+ let invalid = false;
126
130
  const empty = this.isEmpty(), unprecedented = this.isUnprecedented();
127
131
  if (empty || unprecedented) {
128
- unpalatable = true;
132
+ invalid = true;
129
133
  }
130
- return unpalatable;
134
+ return invalid;
131
135
  }
132
136
  isEmpty() {
133
137
  const multiplicity = this.getMultiplicity(), empty = multiplicity === 0;
@@ -135,52 +139,52 @@ class NonTerminalNode {
135
139
  }
136
140
  isUnprecedented() {
137
141
  let unprecedented = false;
138
- const childNodesLowerPrecedence = this.areChildNodesLowerPrecedence();
139
- if (childNodesLowerPrecedence) {
142
+ const childNodesPrecedenceCompares = this.compareChildNodesPrecedence();
143
+ if (childNodesPrecedenceCompares) {
140
144
  unprecedented = true;
141
145
  }
142
146
  return unprecedented;
143
147
  }
144
- isLowerPrecedence(associativity, strength, first, last) {
145
- let lowerPrecedence;
148
+ comparePrecedence(associativity, strength, first, last) {
149
+ let precedenceCompares;
146
150
  if (false) {
147
151
  ///
148
152
  } else if (this.precedence === null) {
149
- lowerPrecedence = false;
153
+ precedenceCompares = false;
150
154
  } else if (this.precedence === _constants.TRANSPARENT_PRECEDENCE) {
151
- lowerPrecedence = this.childNodes.some((childNode)=>{
152
- const childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
153
- if (childNodeLowerPrecedence) {
155
+ precedenceCompares = this.childNodes.some((childNode)=>{
156
+ const childNodePrecedenceCompares = childNode.comparePrecedence(associativity, strength, first, last);
157
+ if (childNodePrecedenceCompares) {
154
158
  return true;
155
159
  }
156
160
  });
157
161
  } else {
158
162
  const parentStrength = strength, parentAssociativity = associativity; ///
159
- strength = Math.abs(this.precedence);
163
+ strength = this.getStrength();
160
164
  if (false) {
161
165
  ///
162
166
  } else if (first) {
163
- lowerPrecedence = parentAssociativity < 0 ? strength < parentStrength : strength <= parentStrength;
167
+ precedenceCompares = parentAssociativity < 0 ? strength < parentStrength : strength <= parentStrength;
164
168
  } else if (last) {
165
- lowerPrecedence = parentAssociativity < 0 ? strength <= parentStrength : strength < parentStrength;
169
+ precedenceCompares = parentAssociativity < 0 ? strength <= parentStrength : strength < parentStrength;
166
170
  } else {
167
- lowerPrecedence = strength < parentStrength;
171
+ precedenceCompares = strength < parentStrength;
168
172
  }
169
173
  }
170
- return lowerPrecedence;
174
+ return precedenceCompares;
171
175
  }
172
- areChildNodesLowerPrecedence() {
173
- let childNodesLowerPrecedence = false;
176
+ compareChildNodesPrecedence() {
177
+ let childNodesPrecedenceCompares = false;
174
178
  if (this.precedence !== null && this.precedence !== _constants.TRANSPARENT_PRECEDENCE) {
175
- const length = this.childNodes.length, lastIndex = length - 1, firstIndex = 0, strength = Math.abs(this.precedence), associativity = Math.sign(this.precedence);
176
- childNodesLowerPrecedence = this.childNodes.some((childNode, index)=>{
177
- const last = index === lastIndex, first = index === firstIndex, childNodeLowerPrecedence = childNode.isLowerPrecedence(associativity, strength, first, last);
178
- if (childNodeLowerPrecedence) {
179
+ const multiplicity = this.getMultiplicity(), lastIndex = multiplicity - 1, firstIndex = 0, strength = this.getStrength(), associativity = this.getAssociativity();
180
+ childNodesPrecedenceCompares = this.childNodes.some((childNode, index)=>{
181
+ const last = index === lastIndex, first = index === firstIndex, childNodePrecedenceCompares = childNode.comparePrecedence(associativity, strength, first, last);
182
+ if (childNodePrecedenceCompares) {
179
183
  return true;
180
184
  }
181
185
  });
182
186
  }
183
- return childNodesLowerPrecedence;
187
+ return childNodesPrecedenceCompares;
184
188
  }
185
189
  asParseTree(tokens) {
186
190
  const nonTerminalNode = this, nonTerminalNodeParseTree = _nonTerminalNode.default.fromNonTerminalNodeAndTokens(nonTerminalNode, tokens), parseTree = nonTerminalNodeParseTree; ///
@@ -252,4 +256,4 @@ function cloneChildNodes(childNodes) {
252
256
  return childNodes;
253
257
  }
254
258
 
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNQYWxhdGFibGUoKSB7XG4gICAgY29uc3QgdW5wYWxhdGFibGUgPSB0aGlzLmlzVW5wYWxhdGFibGUoKSxcbiAgICAgICAgICBwYWxhdGFibGUgPSAhdW5wYWxhdGFibGU7XG5cbiAgICByZXR1cm4gcGFsYXRhYmxlO1xuICB9XG5cbiAgaXNVbnBhbGF0YWJsZSgpIHtcbiAgICBsZXQgdW5wYWxhdGFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVtcHR5ID0gdGhpcy5pc0VtcHR5KCksXG4gICAgICAgICAgdW5wcmVjZWRlbnRlZCA9IHRoaXMuaXNVbnByZWNlZGVudGVkKCk7XG5cbiAgICBpZiAoZW1wdHkgfHwgdW5wcmVjZWRlbnRlZCkge1xuICAgICAgdW5wYWxhdGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB1bnBhbGF0YWJsZTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBjaGlsZE5vZGVzTG93ZXJQcmVjZWRlbmNlID0gdGhpcy5hcmVDaGlsZE5vZGVzTG93ZXJQcmVjZWRlbmNlKCk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0xvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgdW5wcmVjZWRlbnRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVucHJlY2VkZW50ZWQ7XG4gIH1cblxuICBpc0xvd2VyUHJlY2VkZW5jZShhc3NvY2lhdGl2aXR5LCBzdHJlbmd0aCwgZmlyc3QsIGxhc3QpIHtcbiAgICBsZXQgbG93ZXJQcmVjZWRlbmNlO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gbnVsbCkge1xuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UpIHtcbiAgICAgIGxvd2VyUHJlY2VkZW5jZSA9IHRoaXMuY2hpbGROb2Rlcy5zb21lKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFyZW50U3RyZW5ndGggPSBzdHJlbmd0aCwgIC8vL1xuICAgICAgICAgICAgcGFyZW50QXNzb2NpYXRpdml0eSA9IGFzc29jaWF0aXZpdHk7ICAvLy9cblxuICAgICAgc3RyZW5ndGggPSBNYXRoLmFicyh0aGlzLnByZWNlZGVuY2UpO1xuXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgLy8vXG4gICAgICB9IGVsc2UgaWYgKGZpcnN0KSB7XG4gICAgICAgIGxvd2VyUHJlY2VkZW5jZSA9IChwYXJlbnRBc3NvY2lhdGl2aXR5IDwgMCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDwgcGFyZW50U3RyZW5ndGgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDw9IHBhcmVudFN0cmVuZ3RoKTtcbiAgICAgIH0gZWxzZSBpZiAobGFzdCkge1xuICAgICAgICBsb3dlclByZWNlZGVuY2UgPSAocGFyZW50QXNzb2NpYXRpdml0eSA8IDApID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZW5ndGggPD0gcGFyZW50U3RyZW5ndGgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8IHBhcmVudFN0cmVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvd2VyUHJlY2VkZW5jZSA9IChzdHJlbmd0aCA8IHBhcmVudFN0cmVuZ3RoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG93ZXJQcmVjZWRlbmNlO1xuICB9XG5cbiAgYXJlQ2hpbGROb2Rlc0xvd2VyUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc0xvd2VyUHJlY2VkZW5jZSA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpICYmICh0aGlzLnByZWNlZGVuY2UgIT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UpKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgICAgbGFzdEluZGV4ID0gKGxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgZmlyc3RJbmRleCA9IDAsXG4gICAgICAgICAgICBzdHJlbmd0aCA9IE1hdGguYWJzKHRoaXMucHJlY2VkZW5jZSksXG4gICAgICAgICAgICBhc3NvY2lhdGl2aXR5ID0gTWF0aC5zaWduKHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgIGNoaWxkTm9kZXNMb3dlclByZWNlZGVuY2UgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlLCBpbmRleCkgPT4geyAgLy8vXG4gICAgICAgIGNvbnN0IGxhc3QgPSAoaW5kZXggPT09IGxhc3RJbmRleCksXG4gICAgICAgICAgICAgIGZpcnN0ID0gKGluZGV4ID09PSBmaXJzdEluZGV4KSxcbiAgICAgICAgICAgICAgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc0xvd2VyUHJlY2VkZW5jZTtcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBpZiAodGhpcy5ydWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlT3BhY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRPcGFjaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gbm9uVGVybWluYWxOb2RlT3BhY2l0eSkge1xuICAgICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlID0gbm9uVGVybWluYWxOb2RlLmdldFByZWNlZGVuY2UoKTtcblxuICAgICAgICAgIGlmIChwcmVjZWRlbmNlID09PSBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2godGhpcy5jaGlsZE5vZGVzLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAoY2hpbGROb2RlLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlID0gY2hpbGROb2RlLm1hdGNoKG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSwgZGVwdGgsIGV4YWN0bHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICByZXdyaXRlKHN0YXRlKSB7XG4gICAgY29uc3QgcmV3cml0dGVuTm9uVGVybWluYWxOb2RlID0gdGhpczsgIC8vL1xuXG4gICAgcmV0dXJuIHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsO1xuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gbnVsbDtcbiAgfVxuXG4gIGNsb25lKC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IENsYXNzID0gdGhpcy5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBydWxlTmFtZSA9IHRoaXMucnVsZU5hbWUsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSB0aGlzLnByZWNlZGVuY2UsXG4gICAgICAgICAgb3BhY2l0eSA9IHRoaXMub3BhY2l0eSxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5KENsYXNzLCBydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG9wYWNpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3BhY2l0eSA9IHByZWNlZGVuY2U7IC8vL1xuXG4gICAgICBwcmVjZWRlbmNlID0gY2hpbGROb2RlczsgLy8vXG5cbiAgICAgIGNoaWxkTm9kZXMgPSBydWxlTmFtZTsgIC8vL1xuXG4gICAgICBydWxlTmFtZSA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBOb25UZXJtaW5hbE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihOb25UZXJtaW5hbE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJOb25UZXJtaW5hbE5vZGUiLCJtYXRjaCIsImFycmF5VXRpbGl0aWVzIiwib3BhcXVlIiwib3BhcXVlU3BlY2lhbFN5bWJvbCIsInNlbWlPcGFxdWUiLCJzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCIsInNwZWNpYWxTeW1ib2xzIiwicnVsZU5hbWUiLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0UnVsZU5hbWUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsImdldFByZWNlZGVuY2UiLCJnZXRPcGFjaXR5Iiwic2V0UnVsZU5hbWUiLCJzZXRQYXJlbnROb2RlIiwic2V0Q2hpbGROb2RlcyIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYWRkZWRDaGlsZE5vZGVzIiwic3BsaWNlQ2hpbGROb2RlcyIsInNldFByZWNlZGVuY2UiLCJzZXRPcGFjaXR5IiwiaXNPcGFxdWUiLCJpc1NlbWlPcGFxdWUiLCJpc1RyYW5zcGFyZW50IiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwidG9rZW5zIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmb3J3YXJkc1NvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJub2RlIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJiYWNrd2FyZHNTb21lQ2hpbGROb2RlIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VucyIsImZvckVhY2giLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNQYWxhdGFibGUiLCJ1bnBhbGF0YWJsZSIsImlzVW5wYWxhdGFibGUiLCJwYWxhdGFibGUiLCJlbXB0eSIsImlzRW1wdHkiLCJ1bnByZWNlZGVudGVkIiwiaXNVbnByZWNlZGVudGVkIiwiY2hpbGROb2Rlc0xvd2VyUHJlY2VkZW5jZSIsImFyZUNoaWxkTm9kZXNMb3dlclByZWNlZGVuY2UiLCJpc0xvd2VyUHJlY2VkZW5jZSIsImFzc29jaWF0aXZpdHkiLCJzdHJlbmd0aCIsImZpcnN0IiwibGFzdCIsImxvd2VyUHJlY2VkZW5jZSIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0UiLCJzb21lIiwiY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlIiwicGFyZW50U3RyZW5ndGgiLCJwYXJlbnRBc3NvY2lhdGl2aXR5IiwiTWF0aCIsImFicyIsImxhc3RJbmRleCIsImZpcnN0SW5kZXgiLCJzaWduIiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJld3JpdGUiLCJzdGF0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYVTs2QkFDQTs2REFFUjt3RUFDYzsyQkFFRTs7Ozs7O0FBRXZDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFHQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU3RSxNQUFNUDtJQUNuQixZQUFZUSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sQ0FBRTtRQUNqRSxJQUFJLENBQUNKLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUs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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRBc3NvY2lhdGl2aXR5KCkge1xuICAgIGNvbnN0IGFzc29jaWF0aXZpdHkgPSBNYXRoLnNpZ24odGhpcy5wcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBhc3NvY2lhdGl2aXR5O1xuICB9XG5cbiAgZ2V0TXVsdGlwbGljaXR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICAgIHJldHVybiBtdWx0aXBsaWNpdHk7XG4gIH1cblxuICBnZXRTdHJlbmd0aCgpIHtcbiAgICBjb25zdCBzdHJlbmd0aCA9IE1hdGguYWJzKHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gc3RyZW5ndGg7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGNvbnN0IG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgICAgc2luZ3VsYXIgPSAobXVsdGlwbGljaXR5ID09PSAxKTtcblxuICAgIHJldHVybiBzaW5ndWxhcjtcbiAgfVxuXG4gIGlzSW52YWxpZCgpIHtcbiAgICBsZXQgaW52YWxpZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZW1wdHkgPSB0aGlzLmlzRW1wdHkoKSxcbiAgICAgICAgICB1bnByZWNlZGVudGVkID0gdGhpcy5pc1VucHJlY2VkZW50ZWQoKTtcblxuICAgIGlmIChlbXB0eSB8fCB1bnByZWNlZGVudGVkKSB7XG4gICAgICBpbnZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW52YWxpZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jb21wYXJlQ2hpbGROb2Rlc1ByZWNlZGVuY2UoKTtcblxuICAgIGlmIChjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICB1bnByZWNlZGVudGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVjZWRlbmNlKGFzc29jaWF0aXZpdHksIHN0cmVuZ3RoLCBmaXJzdCwgbGFzdCkge1xuICAgIGxldCBwcmVjZWRlbmNlQ29tcGFyZXM7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UoYXNzb2NpYXRpdml0eSwgc3RyZW5ndGgsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXJlbnRTdHJlbmd0aCA9IHN0cmVuZ3RoLCAgLy8vXG4gICAgICAgICAgICBwYXJlbnRBc3NvY2lhdGl2aXR5ID0gYXNzb2NpYXRpdml0eTsgIC8vL1xuXG4gICAgICBzdHJlbmd0aCA9IHRoaXMuZ2V0U3RyZW5ndGgoKTtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIC8vL1xuICAgICAgfSBlbHNlIGlmIChmaXJzdCkge1xuICAgICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSAocGFyZW50QXNzb2NpYXRpdml0eSA8IDApID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8IHBhcmVudFN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlbmd0aCA8PSBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2UgaWYgKGxhc3QpIHtcbiAgICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gKHBhcmVudEFzc29jaWF0aXZpdHkgPCAwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmVuZ3RoIDw9IHBhcmVudFN0cmVuZ3RoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSAoc3RyZW5ndGggPCBwYXJlbnRTdHJlbmd0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpICYmICh0aGlzLnByZWNlZGVuY2UgIT09IFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UpKSB7XG4gICAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgICAgbGFzdEluZGV4ID0gKG11bHRpcGxpY2l0eSAtIDEpLFxuICAgICAgICAgICAgZmlyc3RJbmRleCA9IDAsXG4gICAgICAgICAgICBzdHJlbmd0aCA9IHRoaXMuZ2V0U3RyZW5ndGgoKSxcbiAgICAgICAgICAgIGFzc29jaWF0aXZpdHkgPSB0aGlzLmdldEFzc29jaWF0aXZpdHkoKTtcblxuICAgICAgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRoaXMuY2hpbGROb2Rlcy5zb21lKChjaGlsZE5vZGUsIGluZGV4KSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgbGFzdCA9IChpbmRleCA9PT0gbGFzdEluZGV4KSxcbiAgICAgICAgICAgICAgZmlyc3QgPSAoaW5kZXggPT09IGZpcnN0SW5kZXgpLFxuICAgICAgICAgICAgICBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UoYXNzb2NpYXRpdml0eSwgc3RyZW5ndGgsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IE5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnJ1bGVOYW1lID09PSBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVPcGFjaXR5ID0gbm9uVGVybWluYWxOb2RlLmdldE9wYWNpdHkoKTtcblxuICAgICAgICBpZiAodGhpcy5vcGFjaXR5ID09PSBub25UZXJtaW5hbE5vZGVPcGFjaXR5KSB7XG4gICAgICAgICAgY29uc3QgcHJlY2VkZW5jZSA9IHRoaXMuZ2V0UHJlY2VkZW5jZSgpLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UgPSBub25UZXJtaW5hbE5vZGUuZ2V0UHJlY2VkZW5jZSgpO1xuXG4gICAgICAgICAgaWYgKHByZWNlZGVuY2UgPT09IG5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgIGRlcHRoLS07XG5cbiAgICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaCh0aGlzLmNoaWxkTm9kZXMsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIChjaGlsZE5vZGUsIG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUgPSBjaGlsZE5vZGUubWF0Y2gobm9uVGVybWluYWxOb2RlQ2hpbGROb2RlLCBkZXB0aCwgZXhhY3RseSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHJld3JpdGUoc3RhdGUpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5ydWxlTmFtZSxcbiAgICAgICAgICBjaGlsZE5vZGVzID0gY2xvbmVDaGlsZE5vZGVzKHRoaXMuY2hpbGROb2RlcyksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcGFjaXR5ID0gcHJlY2VkZW5jZTsgLy8vXG5cbiAgICAgIHByZWNlZGVuY2UgPSBjaGlsZE5vZGVzOyAvLy9cblxuICAgICAgY2hpbGROb2RlcyA9IHJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgIHJ1bGVOYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IE5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vblRlcm1pbmFsTm9kZS5wcm90b3R5cGUsIG5vZGVNaXhpbnMpO1xuXG5mdW5jdGlvbiBjbG9uZUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBjaGlsZE5vZGVzID0gY2hpbGROb2Rlcy5tYXAoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNsb25lKCk7ICAvLy9cblxuICAgIHJldHVybiBjaGlsZE5vZGU7XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuIl0sIm5hbWVzIjpbIk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic2VtaU9wYXF1ZSIsInNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsIm9wYWNpdHkiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0UHJlY2VkZW5jZSIsImdldE9wYWNpdHkiLCJzZXRSdWxlTmFtZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwic2V0UHJlY2VkZW5jZSIsInNldE9wYWNpdHkiLCJpc09wYXF1ZSIsImlzU2VtaU9wYXF1ZSIsImlzVHJhbnNwYXJlbnQiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsIm5vZGUiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwiZm9yRWFjaCIsImdldEFzc29jaWF0aXZpdHkiLCJhc3NvY2lhdGl2aXR5IiwiTWF0aCIsInNpZ24iLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiZ2V0U3RyZW5ndGgiLCJzdHJlbmd0aCIsImFicyIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzSW52YWxpZCIsImludmFsaWQiLCJlbXB0eSIsImlzRW1wdHkiLCJ1bnByZWNlZGVudGVkIiwiaXNVbnByZWNlZGVudGVkIiwiY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSIsImNvbXBhcmVQcmVjZWRlbmNlIiwiZmlyc3QiLCJsYXN0IiwicHJlY2VkZW5jZUNvbXBhcmVzIiwiVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSIsInNvbWUiLCJjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMiLCJwYXJlbnRTdHJlbmd0aCIsInBhcmVudEFzc29jaWF0aXZpdHkiLCJsYXN0SW5kZXgiLCJmaXJzdEluZGV4IiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJld3JpdGUiLCJzdGF0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYVTs2QkFDQTs2REFFUjt3RUFDYzsyQkFFRTs7Ozs7O0FBRXZDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFHQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU3RSxNQUFNUDtJQUNuQixZQUFZUSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8s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
@@ -29,9 +29,9 @@ class BranchingPartsPart extends _nonTerminal.default {
29
29
  getParts() {
30
30
  return this.parts;
31
31
  }
32
- isConsuming(ruleMap, visitedRules = []) {
32
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
33
33
  const consuming = this.parts.some((part)=>{
34
- const consuming = part.isConsuming(ruleMap, visitedRules);
34
+ const consuming = part.isConsuming(ruleMap, visitedRules, checkForCutParts);
35
35
  if (consuming) {
36
36
  return true;
37
37
  }
@@ -61,4 +61,4 @@ class BranchingPartsPart extends _nonTerminal.default {
61
61
  }
62
62
  }
63
63
 
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2JyYW5jaGluZ1BhcnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxQYXJ0IGZyb20gXCIuLi8uLi9wYXJ0L25vblRlcm1pbmFsXCI7XG5cbmltcG9ydCB7IGVtcHR5RnJhbWUgfSBmcm9tIFwiLi4vLi4vZnJhbWVcIjtcbmltcG9ydCB7IGluY2Vzc2FudGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IEJyYW5jaGluZ1BhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2JyYW5jaGluZ1wiO1xuXG5jb25zdCB7IGZpcnN0LCBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgb3BlbkJyYWNrZXQsIGNsb3NlQnJhY2tldCwgZWxsaXBzaXMgfSA9IHNwZWNpYWxTeW1ib2xzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcmFuY2hpbmdQYXJ0c1BhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0cykge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnN1bWluZyA9IHRoaXMucGFydHMuc29tZSgocGFydCkgPT4ge1xuICAgICAgY29uc3QgY29uc3VtaW5nID0gcGFydC5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpO1xuXG4gICAgICBpZiAoY29uc3VtaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNhdmVkRnJhbWUgPSBmcmFtZTsgLy8vXG5cbiAgICBzdGF0ZSA9IHN0YXRlLmJyYW5jaCgpOyAvLy9cblxuICAgIGluY2Vzc2FudGx5KFxuICAgICAgKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gYnJhbmNoaW5nRXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBwYXJ0LnBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gICAgICAgIH0sIGVtcHR5RnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKVxuICAgICAgfSxcbiAgICAgIGZyYW1lLFxuICAgICAgc3RhdGUsXG4gICAgICAoZnJhbWUsIHN0YXRlLCBiYWNrKSA9PiB7XG4gICAgICAgIGZyYW1lID0gdGhpcy5jb21wb3NlKHNhdmVkRnJhbWUsIGZyYW1lKTtcblxuICAgICAgICBzdGF0ZSA9IHN0YXRlLnBydW5lKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gZm9yd2FyZChmcmFtZSwgc3RhdGUsIGJhY2spO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgZmlyc3RQYXJ0ID0gZmlyc3QodGhpcy5wYXJ0cyksXG4gICAgICAgICAgbGFzdFBhcnQgPSBsYXN0KHRoaXMucGFydHMpLFxuICAgICAgICAgIGZpcnN0UGFydFN0cmluZyA9IGZpcnN0UGFydC5hc1N0cmluZygpLFxuICAgICAgICAgIGxhc3RQYXJ0U3RyaW5nID0gbGFzdFBhcnQuYXNTdHJpbmcoKSxcbiAgICAgICAgICBzdHJpbmcgPSBgJHtvcGVuQnJhY2tldH0gJHtmaXJzdFBhcnRTdHJpbmd9ICR7ZWxsaXBzaXN9ICR7bGFzdFBhcnRTdHJpbmd9ICR7Y2xvc2VCcmFja2V0fWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0cyhwYXJ0cykge1xuICAgIGNvbnN0IHR5cGUgPSBCcmFuY2hpbmdQYXJ0c1BhcnRUeXBlLFxuICAgICAgICAgIGJyYW5jaGluZ1BhcnRzUGFydCA9IG5ldyBCcmFuY2hpbmdQYXJ0c1BhcnQodHlwZSwgcGFydHMpO1xuXG4gICAgcmV0dXJuIGJyYW5jaGluZ1BhcnRzUGFydDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkJyYW5jaGluZ1BhcnRzUGFydCIsImZpcnN0IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwib3BlbkJyYWNrZXQiLCJjbG9zZUJyYWNrZXQiLCJlbGxpcHNpcyIsInNwZWNpYWxTeW1ib2xzIiwiTm9uVGVybWluYWxQYXJ0IiwidHlwZSIsInBhcnRzIiwiZ2V0UGFydHMiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjb25zdW1pbmciLCJzb21lIiwicGFydCIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwic2F2ZWRGcmFtZSIsImJyYW5jaCIsImluY2Vzc2FudGx5IiwiYnJhbmNoaW5nRXZlcnkiLCJlbXB0eUZyYW1lIiwiY29tcG9zZSIsInBydW5lIiwiYXNTdHJpbmciLCJmaXJzdFBhcnQiLCJsYXN0UGFydCIsImZpcnN0UGFydFN0cmluZyIsImxhc3RQYXJ0U3RyaW5nIiwic3RyaW5nIiwiZnJvbVBhcnRzIiwiQnJhbmNoaW5nUGFydHNQYXJ0VHlwZSIsImJyYW5jaGluZ1BhcnRzUGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFxQkE7OzsyQkFiVTs2QkFDQTtvRUFFSDt1QkFFRDt3QkFDQzsyQkFDVzsyQkFDRTs7Ozs7O0FBRXpDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MseUJBQWMsRUFDaEMsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRSxHQUFHQywyQkFBYztBQUUvQyxNQUFNUCwyQkFBMkJRLG9CQUFlO0lBQzdELFlBQVlDLElBQUksRUFBRUMsS0FBSyxDQUFFO1FBQ3ZCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRTtRQUN0QyxNQUFNQyxZQUFZLElBQUksQ0FBQ0wsS0FBSyxDQUFDTSxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS0wsV0FBVyxDQUFDQyxTQUFTQztZQUU1QyxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsYUFBYUosT0FBTyxHQUFHO1FBRTdCQyxRQUFRQSxNQUFNSSxNQUFNLElBQUksR0FBRztRQUUzQkMsSUFBQUEsbUJBQVcsRUFDVCxDQUFDTixPQUFPQyxPQUFPQyxTQUFTQztZQUN0QixPQUFPSSxJQUFBQSxnQkFBYyxFQUFDLElBQUksQ0FBQ2hCLEtBQUssRUFBRSxDQUFDTyxNQUFNRSxPQUFPQyxPQUFPQyxTQUFTQztnQkFDOUQsT0FBT0wsS0FBS0MsS0FBSyxDQUFDQyxPQUFPQyxPQUFPQyxTQUFTQztZQUMzQyxHQUFHSyxpQkFBVSxFQUFFUCxPQUFPQyxTQUFTQztRQUNqQyxHQUNBSCxPQUNBQyxPQUNBLENBQUNELE9BQU9DLE9BQU9FO1lBQ2JILFFBQVEsSUFBSSxDQUFDUyxPQUFPLENBQUNMLFlBQVlKO1lBRWpDQyxRQUFRQSxNQUFNUyxLQUFLLElBQUssR0FBRztZQUUzQixPQUFPUixRQUFRRixPQUFPQyxPQUFPRTtRQUMvQixHQUNBQTtJQUVKO0lBRUFRLFdBQVc7UUFDVCxNQUFNQyxZQUFZOUIsTUFBTSxJQUFJLENBQUNTLEtBQUssR0FDNUJzQixXQUFXOUIsS0FBSyxJQUFJLENBQUNRLEtBQUssR0FDMUJ1QixrQkFBa0JGLFVBQVVELFFBQVEsSUFDcENJLGlCQUFpQkYsU0FBU0YsUUFBUSxJQUNsQ0ssU0FBUyxHQUFHL0IsWUFBWSxDQUFDLEVBQUU2QixnQkFBZ0IsQ0FBQyxFQUFFM0IsU0FBUyxDQUFDLEVBQUU0QixlQUFlLENBQUMsRUFBRTdCLGNBQWM7UUFFaEcsT0FBTzhCO0lBQ1Q7SUFFQSxPQUFPQyxVQUFVMUIsS0FBSyxFQUFFO1FBQ3RCLE1BQU1ELE9BQU80QixpQ0FBc0IsRUFDN0JDLHFCQUFxQixJQUFJdEMsbUJBQW1CUyxNQUFNQztRQUV4RCxPQUFPNEI7SUFDVDtBQUNGIn0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2JyYW5jaGluZ1BhcnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxQYXJ0IGZyb20gXCIuLi8uLi9wYXJ0L25vblRlcm1pbmFsXCI7XG5cbmltcG9ydCB7IGVtcHR5RnJhbWUgfSBmcm9tIFwiLi4vLi4vZnJhbWVcIjtcbmltcG9ydCB7IGluY2Vzc2FudGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IEJyYW5jaGluZ1BhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2JyYW5jaGluZ1wiO1xuXG5jb25zdCB7IGZpcnN0LCBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgb3BlbkJyYWNrZXQsIGNsb3NlQnJhY2tldCwgZWxsaXBzaXMgfSA9IHNwZWNpYWxTeW1ib2xzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcmFuY2hpbmdQYXJ0c1BhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0cykge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSwgY2hlY2tGb3JDdXRQYXJ0cyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY29uc3VtaW5nID0gdGhpcy5wYXJ0cy5zb21lKChwYXJ0KSA9PiB7XG4gICAgICBjb25zdCBjb25zdW1pbmcgPSBwYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cyk7XG5cbiAgICAgIGlmIChjb25zdW1pbmcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgcGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2F2ZWRGcmFtZSA9IGZyYW1lOyAvLy9cblxuICAgIHN0YXRlID0gc3RhdGUuYnJhbmNoKCk7IC8vL1xuXG4gICAgaW5jZXNzYW50bHkoXG4gICAgICAoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBicmFuY2hpbmdFdmVyeSh0aGlzLnBhcnRzLCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgICAgfSwgZW1wdHlGcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spXG4gICAgICB9LFxuICAgICAgZnJhbWUsXG4gICAgICBzdGF0ZSxcbiAgICAgIChmcmFtZSwgc3RhdGUsIGJhY2spID0+IHtcbiAgICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2Uoc2F2ZWRGcmFtZSwgZnJhbWUpO1xuXG4gICAgICAgIHN0YXRlID0gc3RhdGUucHJ1bmUoKTsgIC8vL1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGZyYW1lLCBzdGF0ZSwgYmFjayk7XG4gICAgICB9LFxuICAgICAgYmFja1xuICAgICk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBmaXJzdFBhcnQgPSBmaXJzdCh0aGlzLnBhcnRzKSxcbiAgICAgICAgICBsYXN0UGFydCA9IGxhc3QodGhpcy5wYXJ0cyksXG4gICAgICAgICAgZmlyc3RQYXJ0U3RyaW5nID0gZmlyc3RQYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgbGFzdFBhcnRTdHJpbmcgPSBsYXN0UGFydC5hc1N0cmluZygpLFxuICAgICAgICAgIHN0cmluZyA9IGAke29wZW5CcmFja2V0fSAke2ZpcnN0UGFydFN0cmluZ30gJHtlbGxpcHNpc30gJHtsYXN0UGFydFN0cmluZ30gJHtjbG9zZUJyYWNrZXR9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhcnRzKHBhcnRzKSB7XG4gICAgY29uc3QgdHlwZSA9IEJyYW5jaGluZ1BhcnRzUGFydFR5cGUsXG4gICAgICAgICAgYnJhbmNoaW5nUGFydHNQYXJ0ID0gbmV3IEJyYW5jaGluZ1BhcnRzUGFydCh0eXBlLCBwYXJ0cyk7XG5cbiAgICByZXR1cm4gYnJhbmNoaW5nUGFydHNQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiQnJhbmNoaW5nUGFydHNQYXJ0IiwiZmlyc3QiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJvcGVuQnJhY2tldCIsImNsb3NlQnJhY2tldCIsImVsbGlwc2lzIiwic3BlY2lhbFN5bWJvbHMiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydHMiLCJnZXRQYXJ0cyIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNoZWNrRm9yQ3V0UGFydHMiLCJjb25zdW1pbmciLCJzb21lIiwicGFydCIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwic2F2ZWRGcmFtZSIsImJyYW5jaCIsImluY2Vzc2FudGx5IiwiYnJhbmNoaW5nRXZlcnkiLCJlbXB0eUZyYW1lIiwiY29tcG9zZSIsInBydW5lIiwiYXNTdHJpbmciLCJmaXJzdFBhcnQiLCJsYXN0UGFydCIsImZpcnN0UGFydFN0cmluZyIsImxhc3RQYXJ0U3RyaW5nIiwic3RyaW5nIiwiZnJvbVBhcnRzIiwiQnJhbmNoaW5nUGFydHNQYXJ0VHlwZSIsImJyYW5jaGluZ1BhcnRzUGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFxQkE7OzsyQkFiVTs2QkFDQTtvRUFFSDt1QkFFRDt3QkFDQzsyQkFDVzsyQkFDRTs7Ozs7O0FBRXpDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MseUJBQWMsRUFDaEMsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRSxHQUFHQywyQkFBYztBQUUvQyxNQUFNUCwyQkFBMkJRLG9CQUFlO0lBQzdELFlBQVlDLElBQUksRUFBRUMsS0FBSyxDQUFFO1FBQ3ZCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUNoRSxNQUFNQyxZQUFZLElBQUksQ0FBQ04sS0FBSyxDQUFDTyxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS04sV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztZQUUxRCxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsYUFBYUosT0FBTyxHQUFHO1FBRTdCQyxRQUFRQSxNQUFNSSxNQUFNLElBQUksR0FBRztRQUUzQkMsSUFBQUEsbUJBQVcsRUFDVCxDQUFDTixPQUFPQyxPQUFPQyxTQUFTQztZQUN0QixPQUFPSSxJQUFBQSxnQkFBYyxFQUFDLElBQUksQ0FBQ2pCLEtBQUssRUFBRSxDQUFDUSxNQUFNRSxPQUFPQyxPQUFPQyxTQUFTQztnQkFDOUQsT0FBT0wsS0FBS0MsS0FBSyxDQUFDQyxPQUFPQyxPQUFPQyxTQUFTQztZQUMzQyxHQUFHSyxpQkFBVSxFQUFFUCxPQUFPQyxTQUFTQztRQUNqQyxHQUNBSCxPQUNBQyxPQUNBLENBQUNELE9BQU9DLE9BQU9FO1lBQ2JILFFBQVEsSUFBSSxDQUFDUyxPQUFPLENBQUNMLFlBQVlKO1lBRWpDQyxRQUFRQSxNQUFNUyxLQUFLLElBQUssR0FBRztZQUUzQixPQUFPUixRQUFRRixPQUFPQyxPQUFPRTtRQUMvQixHQUNBQTtJQUVKO0lBRUFRLFdBQVc7UUFDVCxNQUFNQyxZQUFZL0IsTUFBTSxJQUFJLENBQUNTLEtBQUssR0FDNUJ1QixXQUFXL0IsS0FBSyxJQUFJLENBQUNRLEtBQUssR0FDMUJ3QixrQkFBa0JGLFVBQVVELFFBQVEsSUFDcENJLGlCQUFpQkYsU0FBU0YsUUFBUSxJQUNsQ0ssU0FBUyxHQUFHaEMsWUFBWSxDQUFDLEVBQUU4QixnQkFBZ0IsQ0FBQyxFQUFFNUIsU0FBUyxDQUFDLEVBQUU2QixlQUFlLENBQUMsRUFBRTlCLGNBQWM7UUFFaEcsT0FBTytCO0lBQ1Q7SUFFQSxPQUFPQyxVQUFVM0IsS0FBSyxFQUFFO1FBQ3RCLE1BQU1ELE9BQU82QixpQ0FBc0IsRUFDN0JDLHFCQUFxQixJQUFJdkMsbUJBQW1CUyxNQUFNQztRQUV4RCxPQUFPNkI7SUFDVDtBQUNGIn0=
@@ -32,13 +32,21 @@ class ChoiceOfPartsPart extends _nonTerminal.default {
32
32
  });
33
33
  return parts;
34
34
  }
35
- isConsuming(ruleMap, visitedRules = []) {
36
- const consuming = this.partChoices.every((partChoice)=>{
37
- const consuming = partChoice.isConsuming(ruleMap, visitedRules);
38
- if (consuming) {
39
- return true;
40
- }
41
- });
35
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
36
+ let consuming;
37
+ if (checkForCutParts) {
38
+ consuming = true;
39
+ this.partChoices.forEach((partChoice)=>{
40
+ consuming = partChoice.isConsuming(ruleMap, visitedRules, checkForCutParts) && consuming;
41
+ });
42
+ } else {
43
+ consuming = this.partChoices.every((partChoice)=>{
44
+ const consuming = partChoice.isConsuming(ruleMap, visitedRules, checkForCutParts);
45
+ if (consuming) {
46
+ return true;
47
+ }
48
+ });
49
+ }
42
50
  return consuming;
43
51
  }
44
52
  parse(frame, state, forward, back) {
@@ -65,4 +73,4 @@ class ChoiceOfPartsPart extends _nonTerminal.default {
65
73
  }
66
74
  }
67
75
 
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2Nob2ljZU9mUGFydHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgc29tZSBhcyBsaW5lYXJTb21lIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IHNvbWUgYXMgYnJhbmNoaW5nU29tZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBDaG9pY2VPZlBhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob2ljZU9mUGFydHNQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydENob2ljZXMpIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgICBcbiAgICB0aGlzLnBhcnRDaG9pY2VzID0gcGFydENob2ljZXM7XG4gIH1cbiAgXG4gIGdldFBhcnRDaG9pY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnRDaG9pY2VzO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgY29uc3QgcGFydHMgPSB0aGlzLnBhcnRDaG9pY2VzLm1hcCgocGFydENob2ljZSkgPT4ge1xuICAgICAgY29uc3QgcGFydCA9IHBhcnRDaG9pY2UuZ2V0UGFydCgpO1xuXG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29uc3VtaW5nID0gdGhpcy5wYXJ0Q2hvaWNlcy5ldmVyeSgocGFydENob2ljZSkgPT4ge1xuICAgICAgY29uc3QgY29uc3VtaW5nID0gcGFydENob2ljZS5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpO1xuXG4gICAgICBpZiAoY29uc3VtaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgc29tZSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nU29tZSA6XG4gICAgICAgICAgICAgICAgICAgICBsaW5lYXJTb21lO1xuXG4gICAgcmV0dXJuIHNvbWUodGhpcy5wYXJ0Q2hvaWNlcywgKHBhcnRDaG9pY2UsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnRDaG9pY2UucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcGFydENob2ljZXNTdHJpbmcgPSB0aGlzLnBhcnRDaG9pY2VzLnJlZHVjZSgocGFydENob2ljZXNTdHJpbmcsIHBhcnRDaG9pY2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRDaG9pY2VTdHJpbmcgPSBwYXJ0Q2hvaWNlLmFzU3RyaW5nKCk7XG4gICAgXG4gICAgICAgICAgICBpZiAocGFydENob2ljZXNTdHJpbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcGFydENob2ljZXNTdHJpbmcgPSBwYXJ0Q2hvaWNlU3RyaW5nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGFydENob2ljZXNTdHJpbmcgPSBgJHtwYXJ0Q2hvaWNlc1N0cmluZ30gfCAke3BhcnRDaG9pY2VTdHJpbmd9YDtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHJldHVybiBwYXJ0Q2hvaWNlc1N0cmluZztcbiAgICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgICBzdHJpbmcgPSBgKCAke3BhcnRDaG9pY2VzU3RyaW5nfSApYDtcbiAgICBcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0Q2hvaWNlcyhwYXJ0Q2hvaWNlcykge1xuICAgIGNvbnN0IHR5cGUgPSBDaG9pY2VPZlBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgY2hvaWNlT2ZQYXJ0c1BhcnQgPSBuZXcgQ2hvaWNlT2ZQYXJ0c1BhcnQodHlwZSwgcGFydENob2ljZXMpO1xuXG4gICAgcmV0dXJuIGNob2ljZU9mUGFydHNQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2hvaWNlT2ZQYXJ0c1BhcnQiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydENob2ljZXMiLCJnZXRQYXJ0Q2hvaWNlcyIsImdldFBhcnRzIiwicGFydHMiLCJtYXAiLCJwYXJ0Q2hvaWNlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjb25zdW1pbmciLCJldmVyeSIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJzb21lIiwiYnJhbmNoaW5nU29tZSIsImxpbmVhclNvbWUiLCJhc1N0cmluZyIsInBhcnRDaG9pY2VzU3RyaW5nIiwicmVkdWNlIiwicGFydENob2ljZVN0cmluZyIsInN0cmluZyIsImZyb21QYXJ0Q2hvaWNlcyIsIkNob2ljZU9mUGFydHNQYXJ0VHlwZSIsImNob2ljZU9mUGFydHNQYXJ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQXFCQTs7O29FQU5PO3dCQUVPOzJCQUNHOzJCQUNBOzs7Ozs7QUFFdkIsTUFBTUEsMEJBQTBCQyxvQkFBZTtJQUM1RCxZQUFZQyxJQUFJLEVBQUVDLFdBQVcsQ0FBRTtRQUM3QixLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDRCxXQUFXO0lBQ3pCO0lBRUFFLFdBQVc7UUFDVCxNQUFNQyxRQUFRLElBQUksQ0FBQ0gsV0FBVyxDQUFDSSxHQUFHLENBQUMsQ0FBQ0M7WUFDbEMsTUFBTUMsT0FBT0QsV0FBV0UsT0FBTztZQUUvQixPQUFPRDtRQUNUO1FBRUEsT0FBT0g7SUFDVDtJQUVBSyxZQUFZQyxPQUFPLEVBQUVDLGVBQWUsRUFBRSxFQUFFO1FBQ3RDLE1BQU1DLFlBQVksSUFBSSxDQUFDWCxXQUFXLENBQUNZLEtBQUssQ0FBQyxDQUFDUDtZQUN4QyxNQUFNTSxZQUFZTixXQUFXRyxXQUFXLENBQUNDLFNBQVNDO1lBRWxELElBQUlDLFdBQVc7Z0JBQ2IsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFFLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNQyxZQUFZSCxNQUFNSSxXQUFXLElBQzdCQyxPQUFPRixZQUNFRyxlQUFhLEdBQ1hDLFlBQVU7UUFFM0IsT0FBT0YsS0FBSyxJQUFJLENBQUNwQixXQUFXLEVBQUUsQ0FBQ0ssWUFBWVMsT0FBT0MsT0FBT0MsU0FBU0M7WUFDaEUsT0FBT1osV0FBV1EsS0FBSyxDQUFDQyxPQUFPQyxPQUFPQyxTQUFTQztRQUNqRCxHQUFHSCxPQUFPQyxPQUFPQyxTQUFTQztJQUM1QjtJQUVBTSxXQUFXO1FBQ1QsTUFBTUMsb0JBQW9CLElBQUksQ0FBQ3hCLFdBQVcsQ0FBQ3lCLE1BQU0sQ0FBQyxDQUFDRCxtQkFBbUJuQjtZQUM5RCxNQUFNcUIsbUJBQW1CckIsV0FBV2tCLFFBQVE7WUFFNUMsSUFBSUMsc0JBQXNCLE1BQU07Z0JBQzlCQSxvQkFBb0JFO1lBQ3RCLE9BQU87Z0JBQ0xGLG9CQUFvQixHQUFHQSxrQkFBa0IsR0FBRyxFQUFFRSxrQkFBa0I7WUFDbEU7WUFFQSxPQUFPRjtRQUNULEdBQUcsT0FDSEcsU0FBUyxDQUFDLEVBQUUsRUFBRUgsa0JBQWtCLEVBQUUsQ0FBQztRQUV6QyxPQUFPRztJQUNUO0lBRUEsT0FBT0MsZ0JBQWdCNUIsV0FBVyxFQUFFO1FBQ2xDLE1BQU1ELE9BQU84QixnQ0FBcUIsRUFDNUJDLG9CQUFvQixJQUFJakMsa0JBQWtCRSxNQUFNQztRQUV0RCxPQUFPOEI7SUFDVDtBQUNGIn0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2Nob2ljZU9mUGFydHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgc29tZSBhcyBsaW5lYXJTb21lIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IHNvbWUgYXMgYnJhbmNoaW5nU29tZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBDaG9pY2VPZlBhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob2ljZU9mUGFydHNQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydENob2ljZXMpIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgICBcbiAgICB0aGlzLnBhcnRDaG9pY2VzID0gcGFydENob2ljZXM7XG4gIH1cbiAgXG4gIGdldFBhcnRDaG9pY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnRDaG9pY2VzO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgY29uc3QgcGFydHMgPSB0aGlzLnBhcnRDaG9pY2VzLm1hcCgocGFydENob2ljZSkgPT4ge1xuICAgICAgY29uc3QgcGFydCA9IHBhcnRDaG9pY2UuZ2V0UGFydCgpO1xuXG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdLCBjaGVja0ZvckN1dFBhcnRzID0gZmFsc2UpIHtcbiAgICBsZXQgY29uc3VtaW5nO1xuXG4gICAgaWYgKGNoZWNrRm9yQ3V0UGFydHMpIHtcbiAgICAgIGNvbnN1bWluZyA9IHRydWU7XG5cbiAgICAgIHRoaXMucGFydENob2ljZXMuZm9yRWFjaCgocGFydENob2ljZSkgPT4ge1xuICAgICAgICBjb25zdW1pbmcgPSBwYXJ0Q2hvaWNlLmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cykgJiYgY29uc3VtaW5nO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN1bWluZyA9IHRoaXMucGFydENob2ljZXMuZXZlcnkoKHBhcnRDaG9pY2UpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3VtaW5nID0gcGFydENob2ljZS5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMsIGNoZWNrRm9yQ3V0UGFydHMpO1xuXG4gICAgICAgIGlmIChjb25zdW1pbmcpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgc29tZSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nU29tZSA6XG4gICAgICAgICAgICAgICAgICAgICBsaW5lYXJTb21lO1xuXG4gICAgcmV0dXJuIHNvbWUodGhpcy5wYXJ0Q2hvaWNlcywgKHBhcnRDaG9pY2UsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnRDaG9pY2UucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcGFydENob2ljZXNTdHJpbmcgPSB0aGlzLnBhcnRDaG9pY2VzLnJlZHVjZSgocGFydENob2ljZXNTdHJpbmcsIHBhcnRDaG9pY2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRDaG9pY2VTdHJpbmcgPSBwYXJ0Q2hvaWNlLmFzU3RyaW5nKCk7XG4gICAgXG4gICAgICAgICAgICBpZiAocGFydENob2ljZXNTdHJpbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcGFydENob2ljZXNTdHJpbmcgPSBwYXJ0Q2hvaWNlU3RyaW5nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGFydENob2ljZXNTdHJpbmcgPSBgJHtwYXJ0Q2hvaWNlc1N0cmluZ30gfCAke3BhcnRDaG9pY2VTdHJpbmd9YDtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHJldHVybiBwYXJ0Q2hvaWNlc1N0cmluZztcbiAgICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgICBzdHJpbmcgPSBgKCAke3BhcnRDaG9pY2VzU3RyaW5nfSApYDtcbiAgICBcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0Q2hvaWNlcyhwYXJ0Q2hvaWNlcykge1xuICAgIGNvbnN0IHR5cGUgPSBDaG9pY2VPZlBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgY2hvaWNlT2ZQYXJ0c1BhcnQgPSBuZXcgQ2hvaWNlT2ZQYXJ0c1BhcnQodHlwZSwgcGFydENob2ljZXMpO1xuXG4gICAgcmV0dXJuIGNob2ljZU9mUGFydHNQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2hvaWNlT2ZQYXJ0c1BhcnQiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydENob2ljZXMiLCJnZXRQYXJ0Q2hvaWNlcyIsImdldFBhcnRzIiwicGFydHMiLCJtYXAiLCJwYXJ0Q2hvaWNlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwiZm9yRWFjaCIsImV2ZXJ5IiwicGFyc2UiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsInNvbWUiLCJicmFuY2hpbmdTb21lIiwibGluZWFyU29tZSIsImFzU3RyaW5nIiwicGFydENob2ljZXNTdHJpbmciLCJyZWR1Y2UiLCJwYXJ0Q2hvaWNlU3RyaW5nIiwic3RyaW5nIiwiZnJvbVBhcnRDaG9pY2VzIiwiQ2hvaWNlT2ZQYXJ0c1BhcnRUeXBlIiwiY2hvaWNlT2ZQYXJ0c1BhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBcUJBOzs7b0VBTk87d0JBRU87MkJBQ0c7MkJBQ0E7Ozs7OztBQUV2QixNQUFNQSwwQkFBMEJDLG9CQUFlO0lBQzVELFlBQVlDLElBQUksRUFBRUMsV0FBVyxDQUFFO1FBQzdCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNELFdBQVc7SUFDekI7SUFFQUUsV0FBVztRQUNULE1BQU1DLFFBQVEsSUFBSSxDQUFDSCxXQUFXLENBQUNJLEdBQUcsQ0FBQyxDQUFDQztZQUNsQyxNQUFNQyxPQUFPRCxXQUFXRSxPQUFPO1lBRS9CLE9BQU9EO1FBQ1Q7UUFFQSxPQUFPSDtJQUNUO0lBRUFLLFlBQVlDLE9BQU8sRUFBRUMsZUFBZSxFQUFFLEVBQUVDLG1CQUFtQixLQUFLLEVBQUU7UUFDaEUsSUFBSUM7UUFFSixJQUFJRCxrQkFBa0I7WUFDcEJDLFlBQVk7WUFFWixJQUFJLENBQUNaLFdBQVcsQ0FBQ2EsT0FBTyxDQUFDLENBQUNSO2dCQUN4Qk8sWUFBWVAsV0FBV0csV0FBVyxDQUFDQyxTQUFTQyxjQUFjQyxxQkFBcUJDO1lBQ2pGO1FBQ0YsT0FBTztZQUNMQSxZQUFZLElBQUksQ0FBQ1osV0FBVyxDQUFDYyxLQUFLLENBQUMsQ0FBQ1Q7Z0JBQ2xDLE1BQU1PLFlBQVlQLFdBQVdHLFdBQVcsQ0FBQ0MsU0FBU0MsY0FBY0M7Z0JBRWhFLElBQUlDLFdBQVc7b0JBQ2IsT0FBTztnQkFDVDtZQUNGO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFHLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNQyxZQUFZSCxNQUFNSSxXQUFXLElBQzdCQyxPQUFPRixZQUNFRyxlQUFhLEdBQ1hDLFlBQVU7UUFFM0IsT0FBT0YsS0FBSyxJQUFJLENBQUN0QixXQUFXLEVBQUUsQ0FBQ0ssWUFBWVcsT0FBT0MsT0FBT0MsU0FBU0M7WUFDaEUsT0FBT2QsV0FBV1UsS0FBSyxDQUFDQyxPQUFPQyxPQUFPQyxTQUFTQztRQUNqRCxHQUFHSCxPQUFPQyxPQUFPQyxTQUFTQztJQUM1QjtJQUVBTSxXQUFXO1FBQ1QsTUFBTUMsb0JBQW9CLElBQUksQ0FBQzFCLFdBQVcsQ0FBQzJCLE1BQU0sQ0FBQyxDQUFDRCxtQkFBbUJyQjtZQUM5RCxNQUFNdUIsbUJBQW1CdkIsV0FBV29CLFFBQVE7WUFFNUMsSUFBSUMsc0JBQXNCLE1BQU07Z0JBQzlCQSxvQkFBb0JFO1lBQ3RCLE9BQU87Z0JBQ0xGLG9CQUFvQixHQUFHQSxrQkFBa0IsR0FBRyxFQUFFRSxrQkFBa0I7WUFDbEU7WUFFQSxPQUFPRjtRQUNULEdBQUcsT0FDSEcsU0FBUyxDQUFDLEVBQUUsRUFBRUgsa0JBQWtCLEVBQUUsQ0FBQztRQUV6QyxPQUFPRztJQUNUO0lBRUEsT0FBT0MsZ0JBQWdCOUIsV0FBVyxFQUFFO1FBQ2xDLE1BQU1ELE9BQU9nQyxnQ0FBcUIsRUFDNUJDLG9CQUFvQixJQUFJbkMsa0JBQWtCRSxNQUFNQztRQUV0RCxPQUFPZ0M7SUFDVDtBQUNGIn0=
@@ -25,8 +25,8 @@ class IsolatedPartPart extends _nonTerminal.default {
25
25
  getPart() {
26
26
  return this.part;
27
27
  }
28
- isConsuming(ruleMap, visitedRules = []) {
29
- return this.part.isConsuming(ruleMap, visitedRules);
28
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
29
+ return this.part.isConsuming(ruleMap, visitedRules, checkForCutParts);
30
30
  }
31
31
  parse(frame, state, forward, back) {
32
32
  return this.part.parse(frame, state, (frame, state, back)=>{
@@ -49,4 +49,4 @@ class IsolatedPartPart extends _nonTerminal.default {
49
49
  }
50
50
  }
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2lzb2xhdGVkUGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZyYW1lIGZyb20gXCIuLi8uLi9mcmFtZVwiO1xuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBJU09MQVRFRF9QUkVDRURFTkNFIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSXNvbGF0ZWRQYXJ0UGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElzb2xhdGVkUGFydFBhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICB9XG5cbiAgZ2V0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10pIHsgcmV0dXJuIHRoaXMucGFydC5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpOyB9XG5cbiAgcGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIChmcmFtZSwgc3RhdGUsIGJhY2spID0+IHtcbiAgICAgIGZyYW1lID0gdGhpcy5jb21wb3NlKGZyYW1lKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UoZnJhbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gZnJhbWUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBJU09MQVRFRF9QUkVDRURFTkNFO1xuXG4gICAgZnJhbWUgPSBGcmFtZS5mcm9tQ2hpbGROb2Rlc0FuZFByZWNlZGVuY2UoY2hpbGROb2RlcywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gdGhpcy5wYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gYCggJHtwYXJ0U3RyaW5nfSApYDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhcnQocGFydCkge1xuICAgIGNvbnN0IHR5cGUgPSBJc29sYXRlZFBhcnRQYXJ0VHlwZSxcbiAgICAgICAgICBpc29sYXRlZFBhcnRQYXJ0ID0gbmV3IElzb2xhdGVkUGFydFBhcnQodHlwZSwgcGFydCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZWRQYXJ0UGFydDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIklzb2xhdGVkUGFydFBhcnQiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImNvbXBvc2UiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJJU09MQVRFRF9QUkVDRURFTkNFIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2Rlc0FuZFByZWNlZGVuY2UiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIklzb2xhdGVkUGFydFBhcnRUeXBlIiwiaXNvbGF0ZWRQYXJ0UGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUFxQkE7Ozs4REFOSDtvRUFDVTsyQkFFUTsyQkFDQzs7Ozs7O0FBRXRCLE1BQU1BLHlCQUF5QkMsb0JBQWU7SUFDM0QsWUFBWUMsSUFBSSxFQUFFQyxJQUFJLENBQUU7UUFDdEIsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxZQUFZQyxPQUFPLEVBQUVDLGVBQWUsRUFBRSxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUNKLElBQUksQ0FBQ0UsV0FBVyxDQUFDQyxTQUFTQztJQUFlO0lBRS9GQyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsT0FBTyxJQUFJLENBQUNULElBQUksQ0FBQ0ssS0FBSyxDQUFDQyxPQUFPQyxPQUFPLENBQUNELE9BQU9DLE9BQU9FO1lBQ2xESCxRQUFRLElBQUksQ0FBQ0ksT0FBTyxDQUFDSjtZQUVyQixPQUFPRSxRQUFRRixPQUFPQyxPQUFPRTtRQUMvQixHQUFHQTtJQUNMO0lBRUFDLFFBQVFKLEtBQUssRUFBRTtRQUNiLE1BQU1LLGFBQWFMLE1BQU1NLGFBQWEsSUFDaENDLGFBQWFDLDhCQUFtQjtRQUV0Q1IsUUFBUVMsY0FBSyxDQUFDQywyQkFBMkIsQ0FBQ0wsWUFBWUU7UUFFdEQsT0FBT1A7SUFDVDtJQUVBVyxXQUFXO1FBQ1QsTUFBTUMsYUFBYSxJQUFJLENBQUNsQixJQUFJLENBQUNpQixRQUFRLElBQy9CRSxTQUFTLENBQUMsRUFBRSxFQUFFRCxXQUFXLEVBQUUsQ0FBQztRQUVsQyxPQUFPQztJQUNUO0lBRUEsT0FBT0MsU0FBU3BCLElBQUksRUFBRTtRQUNwQixNQUFNRCxPQUFPc0IsK0JBQW9CLEVBQzNCQyxtQkFBbUIsSUFBSXpCLGlCQUFpQkUsTUFBTUM7UUFFcEQsT0FBT3NCO0lBQ1Q7QUFDRiJ9
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL2lzb2xhdGVkUGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZyYW1lIGZyb20gXCIuLi8uLi9mcmFtZVwiO1xuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBJU09MQVRFRF9QUkVDRURFTkNFIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSXNvbGF0ZWRQYXJ0UGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElzb2xhdGVkUGFydFBhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICB9XG5cbiAgZ2V0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10sIGNoZWNrRm9yQ3V0UGFydHMgPSBmYWxzZSkgeyByZXR1cm4gdGhpcy5wYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cyk7IH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0LnBhcnNlKGZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UoZnJhbWUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZSwgc3RhdGUsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgY29tcG9zZShmcmFtZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IElTT0xBVEVEX1BSRUNFREVOQ0U7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHBhcnRTdHJpbmcgPSB0aGlzLnBhcnQuYXNTdHJpbmcoKSxcbiAgICAgICAgICBzdHJpbmcgPSBgKCAke3BhcnRTdHJpbmd9IClgO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydChwYXJ0KSB7XG4gICAgY29uc3QgdHlwZSA9IElzb2xhdGVkUGFydFBhcnRUeXBlLFxuICAgICAgICAgIGlzb2xhdGVkUGFydFBhcnQgPSBuZXcgSXNvbGF0ZWRQYXJ0UGFydCh0eXBlLCBwYXJ0KTtcblxuICAgIHJldHVybiBpc29sYXRlZFBhcnRQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiSXNvbGF0ZWRQYXJ0UGFydCIsIk5vblRlcm1pbmFsUGFydCIsInR5cGUiLCJwYXJ0IiwiZ2V0UGFydCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNoZWNrRm9yQ3V0UGFydHMiLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImNvbXBvc2UiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJJU09MQVRFRF9QUkVDRURFTkNFIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2Rlc0FuZFByZWNlZGVuY2UiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIklzb2xhdGVkUGFydFBhcnRUeXBlIiwiaXNvbGF0ZWRQYXJ0UGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUFxQkE7Ozs4REFOSDtvRUFDVTsyQkFFUTsyQkFDQzs7Ozs7O0FBRXRCLE1BQU1BLHlCQUF5QkMsb0JBQWU7SUFDM0QsWUFBWUMsSUFBSSxFQUFFQyxJQUFJLENBQUU7UUFDdEIsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxZQUFZQyxPQUFPLEVBQUVDLGVBQWUsRUFBRSxFQUFFQyxtQkFBbUIsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUNMLElBQUksQ0FBQ0UsV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztJQUFtQjtJQUUzSUMsTUFBTUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pDLE9BQU8sSUFBSSxDQUFDVixJQUFJLENBQUNNLEtBQUssQ0FBQ0MsT0FBT0MsT0FBTyxDQUFDRCxPQUFPQyxPQUFPRTtZQUNsREgsUUFBUSxJQUFJLENBQUNJLE9BQU8sQ0FBQ0o7WUFFckIsT0FBT0UsUUFBUUYsT0FBT0MsT0FBT0U7UUFDL0IsR0FBR0E7SUFDTDtJQUVBQyxRQUFRSixLQUFLLEVBQUU7UUFDYixNQUFNSyxhQUFhTCxNQUFNTSxhQUFhLElBQ2hDQyxhQUFhQyw4QkFBbUI7UUFFdENSLFFBQVFTLGNBQUssQ0FBQ0MsMkJBQTJCLENBQUNMLFlBQVlFO1FBRXRELE9BQU9QO0lBQ1Q7SUFFQVcsV0FBVztRQUNULE1BQU1DLGFBQWEsSUFBSSxDQUFDbkIsSUFBSSxDQUFDa0IsUUFBUSxJQUMvQkUsU0FBUyxDQUFDLEVBQUUsRUFBRUQsV0FBVyxFQUFFLENBQUM7UUFFbEMsT0FBT0M7SUFDVDtJQUVBLE9BQU9DLFNBQVNyQixJQUFJLEVBQUU7UUFDcEIsTUFBTUQsT0FBT3VCLCtCQUFvQixFQUMzQkMsbUJBQW1CLElBQUkxQixpQkFBaUJFLE1BQU1DO1FBRXBELE9BQU91QjtJQUNUO0FBQ0YifQ==
@@ -27,8 +27,8 @@ class OneOrMorePartsPart extends _nonTerminal.default {
27
27
  getPart() {
28
28
  return this.part;
29
29
  }
30
- isConsuming(ruleMap, visitedRules = []) {
31
- return this.part.isConsuming(ruleMap, visitedRules);
30
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
31
+ return this.part.isConsuming(ruleMap, visitedRules, checkForCutParts);
32
32
  }
33
33
  parse(frame, state, forward, back) {
34
34
  const limit = Infinity, strict = true, branching = state.isBranching(), repeatedly = branching ? _branching.repeatedly : _linear.repeatedly;
@@ -46,4 +46,4 @@ class OneOrMorePartsPart extends _nonTerminal.default {
46
46
  }
47
47
  }
48
48
 
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL29uZU9yTW9yZVBhcnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzcGVjaWFsU3ltYm9scyB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcblxuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBPbmVPck1vcmVQYXJ0c1BhcnRUeXBlIH0gZnJvbSBcIi4uLy4uL3BhcnRUeXBlc1wiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBsaW5lYXJSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IHJlcGVhdGVkbHkgYXMgYnJhbmNoaW5nUmVwZWF0ZWRseSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5cbmNvbnN0IHsgcGx1cyB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZU9yTW9yZVBhcnRzUGFydCBleHRlbmRzIE5vblRlcm1pbmFsUGFydCB7XG4gIGNvbnN0cnVjdG9yKHR5cGUsIHBhcnQpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMucGFydCA9IHBhcnQ7XG4gIH1cblxuICBnZXRQYXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnQ7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSkgeyByZXR1cm4gdGhpcy5wYXJ0LmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyk7IH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsaW1pdCA9IEluZmluaXR5LFxuICAgICAgICAgIHN0cmljdCA9IHRydWUsXG4gICAgICAgICAgYnJhbmNoaW5nID0gc3RhdGUuaXNCcmFuY2hpbmcoKSxcbiAgICAgICAgICByZXBlYXRlZGx5ID0gYnJhbmNoaW5nID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdSZXBlYXRlZGx5IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhclJlcGVhdGVkbHk7XG5cbiAgICByZXR1cm4gcmVwZWF0ZWRseSh0aGlzLnBhcnQsIGxpbWl0LCBzdHJpY3QsIChwYXJ0LCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBwYXJ0LnBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHBhcnRTdHJpbmcgPSB0aGlzLnBhcnQuYXNTdHJpbmcoKSxcbiAgICAgICAgICBzdHJpbmcgPSBgJHtwYXJ0U3RyaW5nfSR7cGx1c31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydChwYXJ0KSB7XG4gICAgY29uc3QgdHlwZSA9IE9uZU9yTW9yZVBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgb25lT3JNb3JlUGFydHNQYXJ0ID0gbmV3IE9uZU9yTW9yZVBhcnRzUGFydCh0eXBlLCBwYXJ0KTtcblxuICAgIHJldHVybiBvbmVPck1vcmVQYXJ0c1BhcnQ7XG4gIH1cbn0iXSwibmFtZXMiOlsiT25lT3JNb3JlUGFydHNQYXJ0IiwicGx1cyIsInNwZWNpYWxTeW1ib2xzIiwiTm9uVGVybWluYWxQYXJ0IiwidHlwZSIsInBhcnQiLCJnZXRQYXJ0IiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwicGFyc2UiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJsaW1pdCIsIkluZmluaXR5Iiwic3RyaWN0IiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJyZXBlYXRlZGx5IiwiYnJhbmNoaW5nUmVwZWF0ZWRseSIsImxpbmVhclJlcGVhdGVkbHkiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIk9uZU9yTW9yZVBhcnRzUGFydFR5cGUiLCJvbmVPck1vcmVQYXJ0c1BhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBcUJBOzs7NkJBVlU7b0VBRUg7MkJBRVc7d0JBQ1E7MkJBQ0c7Ozs7OztBQUVsRCxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQywyQkFBYztBQUVoQixNQUFNRiwyQkFBMkJHLG9CQUFlO0lBQzdELFlBQVlDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3RCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLElBQUksR0FBR0E7SUFDZDtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7SUFDbEI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDSixJQUFJLENBQUNFLFdBQVcsQ0FBQ0MsU0FBU0M7SUFBZTtJQUUvRkMsTUFBTUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pDLE1BQU1DLFFBQVFDLFVBQ1JDLFNBQVMsTUFDVEMsWUFBWU4sTUFBTU8sV0FBVyxJQUM3QkMsYUFBYUYsWUFDRUcscUJBQW1CLEdBQ2pCQyxrQkFBZ0I7UUFFdkMsT0FBT0YsV0FBVyxJQUFJLENBQUNmLElBQUksRUFBRVUsT0FBT0UsUUFBUSxDQUFDWixNQUFNTSxPQUFPQyxPQUFPQyxTQUFTQztZQUN4RSxPQUFPVCxLQUFLSyxLQUFLLENBQUNDLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdILE9BQU9DLE9BQU9DLFNBQVNDO0lBQzVCO0lBRUFTLFdBQVc7UUFDVCxNQUFNQyxhQUFhLElBQUksQ0FBQ25CLElBQUksQ0FBQ2tCLFFBQVEsSUFDL0JFLFNBQVMsR0FBR0QsYUFBYXZCLE1BQU07UUFFckMsT0FBT3dCO0lBQ1Q7SUFFQSxPQUFPQyxTQUFTckIsSUFBSSxFQUFFO1FBQ3BCLE1BQU1ELE9BQU91QixpQ0FBc0IsRUFDN0JDLHFCQUFxQixJQUFJNUIsbUJBQW1CSSxNQUFNQztRQUV4RCxPQUFPdUI7SUFDVDtBQUNGIn0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL29uZU9yTW9yZVBhcnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzcGVjaWFsU3ltYm9scyB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcblxuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBPbmVPck1vcmVQYXJ0c1BhcnRUeXBlIH0gZnJvbSBcIi4uLy4uL3BhcnRUeXBlc1wiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBsaW5lYXJSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IHJlcGVhdGVkbHkgYXMgYnJhbmNoaW5nUmVwZWF0ZWRseSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5cbmNvbnN0IHsgcGx1cyB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZU9yTW9yZVBhcnRzUGFydCBleHRlbmRzIE5vblRlcm1pbmFsUGFydCB7XG4gIGNvbnN0cnVjdG9yKHR5cGUsIHBhcnQpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMucGFydCA9IHBhcnQ7XG4gIH1cblxuICBnZXRQYXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnQ7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMgPSBbXSwgY2hlY2tGb3JDdXRQYXJ0cyA9IGZhbHNlKSB7IHJldHVybiB0aGlzLnBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzLCBjaGVja0ZvckN1dFBhcnRzKTsgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxpbWl0ID0gSW5maW5pdHksXG4gICAgICAgICAgc3RyaWN0ID0gdHJ1ZSxcbiAgICAgICAgICBicmFuY2hpbmcgPSBzdGF0ZS5pc0JyYW5jaGluZygpLFxuICAgICAgICAgIHJlcGVhdGVkbHkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaGluZ1JlcGVhdGVkbHkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFyUmVwZWF0ZWRseTtcblxuICAgIHJldHVybiByZXBlYXRlZGx5KHRoaXMucGFydCwgbGltaXQsIHN0cmljdCwgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcGFydFN0cmluZyA9IHRoaXMucGFydC5hc1N0cmluZygpLFxuICAgICAgICAgIHN0cmluZyA9IGAke3BhcnRTdHJpbmd9JHtwbHVzfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0KHBhcnQpIHtcbiAgICBjb25zdCB0eXBlID0gT25lT3JNb3JlUGFydHNQYXJ0VHlwZSxcbiAgICAgICAgICBvbmVPck1vcmVQYXJ0c1BhcnQgPSBuZXcgT25lT3JNb3JlUGFydHNQYXJ0KHR5cGUsIHBhcnQpO1xuXG4gICAgcmV0dXJuIG9uZU9yTW9yZVBhcnRzUGFydDtcbiAgfVxufSJdLCJuYW1lcyI6WyJPbmVPck1vcmVQYXJ0c1BhcnQiLCJwbHVzIiwic3BlY2lhbFN5bWJvbHMiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwicGFyc2UiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJsaW1pdCIsIkluZmluaXR5Iiwic3RyaWN0IiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJyZXBlYXRlZGx5IiwiYnJhbmNoaW5nUmVwZWF0ZWRseSIsImxpbmVhclJlcGVhdGVkbHkiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIk9uZU9yTW9yZVBhcnRzUGFydFR5cGUiLCJvbmVPck1vcmVQYXJ0c1BhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBcUJBOzs7NkJBVlU7b0VBRUg7MkJBRVc7d0JBQ1E7MkJBQ0c7Ozs7OztBQUVsRCxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQywyQkFBYztBQUVoQixNQUFNRiwyQkFBMkJHLG9CQUFlO0lBQzdELFlBQVlDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3RCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLElBQUksR0FBR0E7SUFDZDtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7SUFDbEI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDTCxJQUFJLENBQUNFLFdBQVcsQ0FBQ0MsU0FBU0MsY0FBY0M7SUFBbUI7SUFFM0lDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNQyxRQUFRQyxVQUNSQyxTQUFTLE1BQ1RDLFlBQVlOLE1BQU1PLFdBQVcsSUFDN0JDLGFBQWFGLFlBQ0VHLHFCQUFtQixHQUNqQkMsa0JBQWdCO1FBRXZDLE9BQU9GLFdBQVcsSUFBSSxDQUFDaEIsSUFBSSxFQUFFVyxPQUFPRSxRQUFRLENBQUNiLE1BQU1PLE9BQU9DLE9BQU9DLFNBQVNDO1lBQ3hFLE9BQU9WLEtBQUtNLEtBQUssQ0FBQ0MsT0FBT0MsT0FBT0MsU0FBU0M7UUFDM0MsR0FBR0gsT0FBT0MsT0FBT0MsU0FBU0M7SUFDNUI7SUFFQVMsV0FBVztRQUNULE1BQU1DLGFBQWEsSUFBSSxDQUFDcEIsSUFBSSxDQUFDbUIsUUFBUSxJQUMvQkUsU0FBUyxHQUFHRCxhQUFheEIsTUFBTTtRQUVyQyxPQUFPeUI7SUFDVDtJQUVBLE9BQU9DLFNBQVN0QixJQUFJLEVBQUU7UUFDcEIsTUFBTUQsT0FBT3dCLGlDQUFzQixFQUM3QkMscUJBQXFCLElBQUk3QixtQkFBbUJJLE1BQU1DO1FBRXhELE9BQU93QjtJQUNUO0FBQ0YifQ==
@@ -27,8 +27,11 @@ class OptionalPartPart extends _nonTerminal.default {
27
27
  getPart() {
28
28
  return this.part;
29
29
  }
30
- isConsuming(ruleMap, visitedRules = []) {
30
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
31
31
  const consuming = false;
32
+ if (checkForCutParts) {
33
+ this.part.isConsuming(ruleMap, visitedRules, checkForCutParts);
34
+ }
32
35
  return consuming;
33
36
  }
34
37
  parse(frame, state, forward, back) {
@@ -47,4 +50,4 @@ class OptionalPartPart extends _nonTerminal.default {
47
50
  }
48
51
  }
49
52
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL29wdGlvbmFsUGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgT3B0aW9uYWxQYXJ0UGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyByZXBlYXRlZGx5IGFzIGxpbmVhclJlcGVhdGVkbHkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBicmFuY2hpbmdSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuY29uc3QgeyBxdWVzdGlvbk1hcmsgfSA9IHNwZWNpYWxTeW1ib2xzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcHRpb25hbFBhcnRQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydCkge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5wYXJ0ID0gcGFydDtcbiAgfVxuXG4gIGdldFBhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydDtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29uc3VtaW5nID0gZmFsc2U7XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgcGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGltaXQgPSAxLFxuICAgICAgICAgIHN0cmljdCA9IGZhbHNlLFxuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgcmVwZWF0ZWRseSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nUmVwZWF0ZWRseSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXJSZXBlYXRlZGx5O1xuXG4gICAgcmV0dXJuIHJlcGVhdGVkbHkodGhpcy5wYXJ0LCBsaW1pdCwgc3RyaWN0LCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gdGhpcy5wYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gYCR7cGFydFN0cmluZ30ke3F1ZXN0aW9uTWFya31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydChwYXJ0KSB7XG4gICAgY29uc3QgdHlwZSA9IE9wdGlvbmFsUGFydFBhcnRUeXBlLFxuICAgICAgICAgIG9wdGlvbmFsUGFydFBhcnQgPSBuZXcgT3B0aW9uYWxQYXJ0UGFydCh0eXBlLCBwYXJ0KTtcblxuICAgIHJldHVybiBvcHRpb25hbFBhcnRQYXJ0O1xuICB9XG59Il0sIm5hbWVzIjpbIk9wdGlvbmFsUGFydFBhcnQiLCJxdWVzdGlvbk1hcmsiLCJzcGVjaWFsU3ltYm9scyIsIk5vblRlcm1pbmFsUGFydCIsInR5cGUiLCJwYXJ0IiwiZ2V0UGFydCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNvbnN1bWluZyIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwibGltaXQiLCJzdHJpY3QiLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsInJlcGVhdGVkbHkiLCJicmFuY2hpbmdSZXBlYXRlZGx5IiwibGluZWFyUmVwZWF0ZWRseSIsImFzU3RyaW5nIiwicGFydFN0cmluZyIsInN0cmluZyIsImZyb21QYXJ0IiwiT3B0aW9uYWxQYXJ0UGFydFR5cGUiLCJvcHRpb25hbFBhcnRQYXJ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXFCQTs7OzZCQVZVO29FQUVIOzJCQUVTO3dCQUNVOzJCQUNHOzs7Ozs7QUFFbEQsTUFBTSxFQUFFQyxZQUFZLEVBQUUsR0FBR0MsMkJBQWM7QUFFeEIsTUFBTUYseUJBQXlCRyxvQkFBZTtJQUMzRCxZQUFZQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN0QixLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO0lBQ2xCO0lBRUFFLFlBQVlDLE9BQU8sRUFBRUMsZUFBZSxFQUFFLEVBQUU7UUFDdEMsTUFBTUMsWUFBWTtRQUVsQixPQUFPQTtJQUNUO0lBRUFDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNQyxRQUFRLEdBQ1JDLFNBQVMsT0FDVEMsWUFBWUwsTUFBTU0sV0FBVyxJQUM3QkMsYUFBYUYsWUFDRUcscUJBQW1CLEdBQ2pCQyxrQkFBZ0I7UUFFdkMsT0FBT0YsV0FBVyxJQUFJLENBQUNmLElBQUksRUFBRVcsT0FBT0MsUUFBUSxDQUFDWixNQUFNTyxPQUFPQyxPQUFPQyxTQUFTQztZQUN4RSxPQUFPVixLQUFLTSxLQUFLLENBQUNDLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdILE9BQU9DLE9BQU9DLFNBQVNDO0lBQzVCO0lBRUFRLFdBQVc7UUFDVCxNQUFNQyxhQUFhLElBQUksQ0FBQ25CLElBQUksQ0FBQ2tCLFFBQVEsSUFDL0JFLFNBQVMsR0FBR0QsYUFBYXZCLGNBQWM7UUFFN0MsT0FBT3dCO0lBQ1Q7SUFFQSxPQUFPQyxTQUFTckIsSUFBSSxFQUFFO1FBQ3BCLE1BQU1ELE9BQU91QiwrQkFBb0IsRUFDM0JDLG1CQUFtQixJQUFJNUIsaUJBQWlCSSxNQUFNQztRQUVwRCxPQUFPdUI7SUFDVDtBQUNGIn0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL29wdGlvbmFsUGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgT3B0aW9uYWxQYXJ0UGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyByZXBlYXRlZGx5IGFzIGxpbmVhclJlcGVhdGVkbHkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBicmFuY2hpbmdSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuY29uc3QgeyBxdWVzdGlvbk1hcmsgfSA9IHNwZWNpYWxTeW1ib2xzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcHRpb25hbFBhcnRQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydCkge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5wYXJ0ID0gcGFydDtcbiAgfVxuXG4gIGdldFBhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydDtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdLCBjaGVja0ZvckN1dFBhcnRzID0gZmFsc2UpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSBmYWxzZTtcblxuICAgIGlmIChjaGVja0ZvckN1dFBhcnRzKSB7XG4gICAgICB0aGlzLnBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzLCBjaGVja0ZvckN1dFBhcnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgcGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGltaXQgPSAxLFxuICAgICAgICAgIHN0cmljdCA9IGZhbHNlLFxuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgcmVwZWF0ZWRseSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nUmVwZWF0ZWRseSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXJSZXBlYXRlZGx5O1xuXG4gICAgcmV0dXJuIHJlcGVhdGVkbHkodGhpcy5wYXJ0LCBsaW1pdCwgc3RyaWN0LCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gdGhpcy5wYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gYCR7cGFydFN0cmluZ30ke3F1ZXN0aW9uTWFya31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydChwYXJ0KSB7XG4gICAgY29uc3QgdHlwZSA9IE9wdGlvbmFsUGFydFBhcnRUeXBlLFxuICAgICAgICAgIG9wdGlvbmFsUGFydFBhcnQgPSBuZXcgT3B0aW9uYWxQYXJ0UGFydCh0eXBlLCBwYXJ0KTtcblxuICAgIHJldHVybiBvcHRpb25hbFBhcnRQYXJ0O1xuICB9XG59Il0sIm5hbWVzIjpbIk9wdGlvbmFsUGFydFBhcnQiLCJxdWVzdGlvbk1hcmsiLCJzcGVjaWFsU3ltYm9scyIsIk5vblRlcm1pbmFsUGFydCIsInR5cGUiLCJwYXJ0IiwiZ2V0UGFydCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNoZWNrRm9yQ3V0UGFydHMiLCJjb25zdW1pbmciLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImxpbWl0Iiwic3RyaWN0IiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJyZXBlYXRlZGx5IiwiYnJhbmNoaW5nUmVwZWF0ZWRseSIsImxpbmVhclJlcGVhdGVkbHkiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIk9wdGlvbmFsUGFydFBhcnRUeXBlIiwib3B0aW9uYWxQYXJ0UGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFxQkE7Ozs2QkFWVTtvRUFFSDsyQkFFUzt3QkFDVTsyQkFDRzs7Ozs7O0FBRWxELE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdDLDJCQUFjO0FBRXhCLE1BQU1GLHlCQUF5Qkcsb0JBQWU7SUFDM0QsWUFBWUMsSUFBSSxFQUFFQyxJQUFJLENBQUU7UUFDdEIsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxZQUFZQyxPQUFPLEVBQUVDLGVBQWUsRUFBRSxFQUFFQyxtQkFBbUIsS0FBSyxFQUFFO1FBQ2hFLE1BQU1DLFlBQVk7UUFFbEIsSUFBSUQsa0JBQWtCO1lBQ3BCLElBQUksQ0FBQ0wsSUFBSSxDQUFDRSxXQUFXLENBQUNDLFNBQVNDLGNBQWNDO1FBQy9DO1FBRUEsT0FBT0M7SUFDVDtJQUVBQyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsUUFBUSxHQUNSQyxTQUFTLE9BQ1RDLFlBQVlMLE1BQU1NLFdBQVcsSUFDN0JDLGFBQWFGLFlBQ0VHLHFCQUFtQixHQUNqQkMsa0JBQWdCO1FBRXZDLE9BQU9GLFdBQVcsSUFBSSxDQUFDaEIsSUFBSSxFQUFFWSxPQUFPQyxRQUFRLENBQUNiLE1BQU1RLE9BQU9DLE9BQU9DLFNBQVNDO1lBQ3hFLE9BQU9YLEtBQUtPLEtBQUssQ0FBQ0MsT0FBT0MsT0FBT0MsU0FBU0M7UUFDM0MsR0FBR0gsT0FBT0MsT0FBT0MsU0FBU0M7SUFDNUI7SUFFQVEsV0FBVztRQUNULE1BQU1DLGFBQWEsSUFBSSxDQUFDcEIsSUFBSSxDQUFDbUIsUUFBUSxJQUMvQkUsU0FBUyxHQUFHRCxhQUFheEIsY0FBYztRQUU3QyxPQUFPeUI7SUFDVDtJQUVBLE9BQU9DLFNBQVN0QixJQUFJLEVBQUU7UUFDcEIsTUFBTUQsT0FBT3dCLCtCQUFvQixFQUMzQkMsbUJBQW1CLElBQUk3QixpQkFBaUJJLE1BQU1DO1FBRXBELE9BQU93QjtJQUNUO0FBQ0YifQ==
@@ -27,12 +27,12 @@ class RuleNamePart extends _nonTerminal.default {
27
27
  const ruleNamePart = true;
28
28
  return ruleNamePart;
29
29
  }
30
- isConsuming(ruleMap, visitedRules = []) {
30
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
31
31
  const rule = ruleMap[this.ruleName] || null;
32
32
  if (rule == null) {
33
33
  throw new Error(`The '${this.ruleName}' rule is missing.`);
34
34
  }
35
- const consuming = rule.isConsuming(ruleMap, visitedRules);
35
+ const consuming = rule.isConsuming(ruleMap, visitedRules, checkForCutParts);
36
36
  return consuming;
37
37
  }
38
38
  parse(frame, state, forward, back) {
@@ -52,4 +52,4 @@ class RuleNamePart extends _nonTerminal.default {
52
52
  }
53
53
  }
54
54
 
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3J1bGVOYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxQYXJ0IGZyb20gXCIuLi8uLi9wYXJ0L25vblRlcm1pbmFsXCI7XG5cbmltcG9ydCB7IFJ1bGVOYW1lUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGVOYW1lUGFydCBleHRlbmRzIE5vblRlcm1pbmFsUGFydCB7XG4gIGNvbnN0cnVjdG9yKHR5cGUsIHJ1bGVOYW1lKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGlzUnVsZU5hbWVQYXJ0KCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lUGFydCA9IHRydWU7XG5cbiAgICByZXR1cm4gcnVsZU5hbWVQYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10pIHtcbiAgICBjb25zdCBydWxlID0gcnVsZU1hcFt0aGlzLnJ1bGVOYW1lXSB8fCBudWxsO1xuXG4gICAgaWYgKHJ1bGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgICcke3RoaXMucnVsZU5hbWV9JyBydWxlIGlzIG1pc3NpbmcuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3VtaW5nID0gcnVsZS5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpO1xuXG4gICAgcmV0dXJuIGNvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGUgPSBzdGF0ZS5maW5kUnVsZSh0aGlzLnJ1bGVOYW1lKTtcblxuICAgIGlmIChydWxlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBydWxlLnBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBgJHt0aGlzLnJ1bGVOYW1lfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZShydWxlTmFtZSkge1xuICAgIGNvbnN0IHR5cGUgPSBSdWxlTmFtZVBhcnRUeXBlLFxuICAgICAgICAgIHJ1bGVOYW1lUGFydCA9IG5ldyBSdWxlTmFtZVBhcnQodHlwZSwgcnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHJ1bGVOYW1lUGFydDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlJ1bGVOYW1lUGFydCIsIk5vblRlcm1pbmFsUGFydCIsInR5cGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiaXNSdWxlTmFtZVBhcnQiLCJydWxlTmFtZVBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJydWxlIiwiRXJyb3IiLCJjb25zdW1pbmciLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImZpbmRSdWxlIiwiYXNTdHJpbmciLCJzdHJpbmciLCJmcm9tUnVsZU5hbWUiLCJSdWxlTmFtZVBhcnRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O29FQUpPOzJCQUVLOzs7Ozs7QUFFbEIsTUFBTUEscUJBQXFCQyxvQkFBZTtJQUN2RCxZQUFZQyxJQUFJLEVBQUVDLFFBQVEsQ0FBRTtRQUMxQixLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxRQUFRLEdBQUdBO0lBQ2xCO0lBRUFDLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0QsUUFBUTtJQUN0QjtJQUVBRSxpQkFBaUI7UUFDZixNQUFNQyxlQUFlO1FBRXJCLE9BQU9BO0lBQ1Q7SUFFQUMsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRTtRQUN0QyxNQUFNQyxPQUFPRixPQUFPLENBQUMsSUFBSSxDQUFDTCxRQUFRLENBQUMsSUFBSTtRQUV2QyxJQUFJTyxRQUFRLE1BQU07WUFDaEIsTUFBTSxJQUFJQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQ1IsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBQzVEO1FBRUEsTUFBTVMsWUFBWUYsS0FBS0gsV0FBVyxDQUFDQyxTQUFTQztRQUU1QyxPQUFPRztJQUNUO0lBRUFDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNUCxPQUFPSyxNQUFNRyxRQUFRLENBQUMsSUFBSSxDQUFDZixRQUFRO1FBRXpDLElBQUlPLFNBQVMsTUFBTTtZQUNqQixPQUFPTztRQUNUO1FBRUEsT0FBT1AsS0FBS0csS0FBSyxDQUFDQyxPQUFPQyxPQUFPQyxTQUFTQztJQUMzQztJQUVBRSxXQUFXO1FBQ1QsTUFBTUMsU0FBUyxHQUFHLElBQUksQ0FBQ2pCLFFBQVEsRUFBRTtRQUVqQyxPQUFPaUI7SUFDVDtJQUVBLE9BQU9DLGFBQWFsQixRQUFRLEVBQUU7UUFDNUIsTUFBTUQsT0FBT29CLDJCQUFnQixFQUN2QmhCLGVBQWUsSUFBSU4sYUFBYUUsTUFBTUM7UUFFNUMsT0FBT0c7SUFDVDtBQUNGIn0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3J1bGVOYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxQYXJ0IGZyb20gXCIuLi8uLi9wYXJ0L25vblRlcm1pbmFsXCI7XG5cbmltcG9ydCB7IFJ1bGVOYW1lUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGVOYW1lUGFydCBleHRlbmRzIE5vblRlcm1pbmFsUGFydCB7XG4gIGNvbnN0cnVjdG9yKHR5cGUsIHJ1bGVOYW1lKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGlzUnVsZU5hbWVQYXJ0KCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lUGFydCA9IHRydWU7XG5cbiAgICByZXR1cm4gcnVsZU5hbWVQYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10sIGNoZWNrRm9yQ3V0UGFydHMgPSBmYWxzZSkge1xuICAgIGNvbnN0IHJ1bGUgPSBydWxlTWFwW3RoaXMucnVsZU5hbWVdIHx8IG51bGw7XG5cbiAgICBpZiAocnVsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAgJyR7dGhpcy5ydWxlTmFtZX0nIHJ1bGUgaXMgbWlzc2luZy5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25zdW1pbmcgPSBydWxlLmlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcywgY2hlY2tGb3JDdXRQYXJ0cyk7XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgcGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcnVsZSA9IHN0YXRlLmZpbmRSdWxlKHRoaXMucnVsZU5hbWUpO1xuXG4gICAgaWYgKHJ1bGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGUucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IGAke3RoaXMucnVsZU5hbWV9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lKHJ1bGVOYW1lKSB7XG4gICAgY29uc3QgdHlwZSA9IFJ1bGVOYW1lUGFydFR5cGUsXG4gICAgICAgICAgcnVsZU5hbWVQYXJ0ID0gbmV3IFJ1bGVOYW1lUGFydCh0eXBlLCBydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gcnVsZU5hbWVQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiUnVsZU5hbWVQYXJ0IiwiTm9uVGVybWluYWxQYXJ0IiwidHlwZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJpc1J1bGVOYW1lUGFydCIsInJ1bGVOYW1lUGFydCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNoZWNrRm9yQ3V0UGFydHMiLCJydWxlIiwiRXJyb3IiLCJjb25zdW1pbmciLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImZpbmRSdWxlIiwiYXNTdHJpbmciLCJzdHJpbmciLCJmcm9tUnVsZU5hbWUiLCJSdWxlTmFtZVBhcnRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O29FQUpPOzJCQUVLOzs7Ozs7QUFFbEIsTUFBTUEscUJBQXFCQyxvQkFBZTtJQUN2RCxZQUFZQyxJQUFJLEVBQUVDLFFBQVEsQ0FBRTtRQUMxQixLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxRQUFRLEdBQUdBO0lBQ2xCO0lBRUFDLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0QsUUFBUTtJQUN0QjtJQUVBRSxpQkFBaUI7UUFDZixNQUFNQyxlQUFlO1FBRXJCLE9BQU9BO0lBQ1Q7SUFFQUMsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUNoRSxNQUFNQyxPQUFPSCxPQUFPLENBQUMsSUFBSSxDQUFDTCxRQUFRLENBQUMsSUFBSTtRQUV2QyxJQUFJUSxRQUFRLE1BQU07WUFDaEIsTUFBTSxJQUFJQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQ1QsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBQzVEO1FBRUEsTUFBTVUsWUFBWUYsS0FBS0osV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztRQUUxRCxPQUFPRztJQUNUO0lBRUFDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNUCxPQUFPSyxNQUFNRyxRQUFRLENBQUMsSUFBSSxDQUFDaEIsUUFBUTtRQUV6QyxJQUFJUSxTQUFTLE1BQU07WUFDakIsT0FBT087UUFDVDtRQUVBLE9BQU9QLEtBQUtHLEtBQUssQ0FBQ0MsT0FBT0MsT0FBT0MsU0FBU0M7SUFDM0M7SUFFQUUsV0FBVztRQUNULE1BQU1DLFNBQVMsR0FBRyxJQUFJLENBQUNsQixRQUFRLEVBQUU7UUFFakMsT0FBT2tCO0lBQ1Q7SUFFQSxPQUFPQyxhQUFhbkIsUUFBUSxFQUFFO1FBQzVCLE1BQU1ELE9BQU9xQiwyQkFBZ0IsRUFDdkJqQixlQUFlLElBQUlOLGFBQWFFLE1BQU1DO1FBRTVDLE9BQU9HO0lBQ1Q7QUFDRiJ9
@@ -26,9 +26,9 @@ class SequenceOfPartsPart extends _nonTerminal.default {
26
26
  getParts() {
27
27
  return this.parts;
28
28
  }
29
- isConsuming(ruleMap, visitedRules = []) {
29
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
30
30
  const consuming = this.parts.some((part)=>{
31
- const consuming = part.isConsuming(ruleMap, visitedRules);
31
+ const consuming = part.isConsuming(ruleMap, visitedRules, checkForCutParts);
32
32
  if (consuming) {
33
33
  return true;
34
34
  }
@@ -62,4 +62,4 @@ class SequenceOfPartsPart extends _nonTerminal.default {
62
62
  }
63
63
  }
64
64
 
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3NlcXVlbmNlT2ZQYXJ0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBlbXB0eUZyYW1lIH0gZnJvbSBcIi4uLy4uL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgZXZlcnkgYXMgYnJhbmNoaW5nRXZlcnkgIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcbmltcG9ydCB7IFNlcXVlbmNlT2ZQYXJ0c1BhcnRUeXBlIH0gZnJvbSBcIi4uLy4uL3BhcnRUeXBlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXF1ZW5jZU9mUGFydHNQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydHMpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGdldFBhcnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnRzO1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10pIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2Uoc2F2ZWRGcmFtZSwgZnJhbWUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZSwgc3RhdGUsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcGFydHNTdHJpbmcgPSB0aGlzLnBhcnRzLnJlZHVjZSgocGFydHNTdHJpbmcsIHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRTdHJpbmcgPSBwYXJ0LmFzU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChwYXJ0c1N0cmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBwYXJ0c1N0cmluZyA9IHBhcnRTdHJpbmc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJ0c1N0cmluZyA9IGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhcnRzU3RyaW5nO1xuICAgICAgICAgIH0sIG51bGwpLFxuICAgICAgICAgIHN0cmluZyA9IGAoICR7cGFydHNTdHJpbmd9IClgO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMocGFydHMpIHtcbiAgICBjb25zdCB0eXBlID0gU2VxdWVuY2VPZlBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgc2VxdWVuY2VPZlBhcnRzUGFydCA9IG5ldyBTZXF1ZW5jZU9mUGFydHNQYXJ0KHR5cGUsIHBhcnRzKTtcblxuICAgIHJldHVybiBzZXF1ZW5jZU9mUGFydHNQYXJ0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2VxdWVuY2VPZlBhcnRzUGFydCIsIk5vblRlcm1pbmFsUGFydCIsInR5cGUiLCJwYXJ0cyIsImdldFBhcnRzIiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsInNhdmVkRnJhbWUiLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsImV2ZXJ5IiwiYnJhbmNoaW5nRXZlcnkiLCJsaW5lYXJFdmVyeSIsImVtcHR5RnJhbWUiLCJjb21wb3NlIiwiYXNTdHJpbmciLCJwYXJ0c1N0cmluZyIsInJlZHVjZSIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydHMiLCJTZXF1ZW5jZU9mUGFydHNQYXJ0VHlwZSIsInNlcXVlbmNlT2ZQYXJ0c1BhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBcUJBOzs7b0VBUE87dUJBRUQ7d0JBQ1c7MkJBQ0c7MkJBQ0Q7Ozs7OztBQUV6QixNQUFNQSw0QkFBNEJDLG9CQUFlO0lBQzlELFlBQVlDLElBQUksRUFBRUMsS0FBSyxDQUFFO1FBQ3ZCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRTtRQUN0QyxNQUFNQyxZQUFZLElBQUksQ0FBQ0wsS0FBSyxDQUFDTSxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS0wsV0FBVyxDQUFDQyxTQUFTQztZQUU1QyxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsYUFBYUosT0FDYkssWUFBWUosTUFBTUssV0FBVyxJQUM3QkMsUUFBUUYsWUFDRUcsZ0JBQWMsR0FDWkMsYUFBVztRQUU3QixPQUFPRixNQUFNLElBQUksQ0FBQ2hCLEtBQUssRUFBRSxDQUFDTyxNQUFNRSxPQUFPQyxPQUFPQyxTQUFTQztZQUNyRCxPQUFPTCxLQUFLQyxLQUFLLENBQUNDLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdPLGlCQUFVLEVBQUVULE9BQU8sQ0FBQ0QsT0FBT0MsT0FBT0U7WUFDbkNILFFBQVEsSUFBSSxDQUFDVyxPQUFPLENBQUNQLFlBQVlKO1lBRWpDLE9BQU9FLFFBQVFGLE9BQU9DLE9BQU9FO1FBQy9CLEdBQUdBO0lBQ0w7SUFFQVMsV0FBVztRQUNULE1BQU1DLGNBQWMsSUFBSSxDQUFDdEIsS0FBSyxDQUFDdUIsTUFBTSxDQUFDLENBQUNELGFBQWFmO1lBQzVDLE1BQU1pQixhQUFhakIsS0FBS2MsUUFBUTtZQUVoQyxJQUFJQyxnQkFBZ0IsTUFBTTtnQkFDeEJBLGNBQWNFO1lBQ2hCLE9BQU87Z0JBQ0xGLGNBQWMsR0FBR0EsWUFBWSxDQUFDLEVBQUVFLFlBQVk7WUFDOUM7WUFFQSxPQUFPRjtRQUNULEdBQUcsT0FDSEcsU0FBUyxDQUFDLEVBQUUsRUFBRUgsWUFBWSxFQUFFLENBQUM7UUFFbkMsT0FBT0c7SUFDVDtJQUVBLE9BQU9DLFVBQVUxQixLQUFLLEVBQUU7UUFDdEIsTUFBTUQsT0FBTzRCLGtDQUF1QixFQUM5QkMsc0JBQXNCLElBQUkvQixvQkFBb0JFLE1BQU1DO1FBRTFELE9BQU80QjtJQUNUO0FBQ0YifQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3NlcXVlbmNlT2ZQYXJ0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5vblRlcm1pbmFsUGFydCBmcm9tIFwiLi4vLi4vcGFydC9ub25UZXJtaW5hbFwiO1xuXG5pbXBvcnQgeyBlbXB0eUZyYW1lIH0gZnJvbSBcIi4uLy4uL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgZXZlcnkgYXMgYnJhbmNoaW5nRXZlcnkgIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcbmltcG9ydCB7IFNlcXVlbmNlT2ZQYXJ0c1BhcnRUeXBlIH0gZnJvbSBcIi4uLy4uL3BhcnRUeXBlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXF1ZW5jZU9mUGFydHNQYXJ0IGV4dGVuZHMgTm9uVGVybWluYWxQYXJ0IHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGFydHMpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGdldFBhcnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnRzO1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10sIGNoZWNrRm9yQ3V0UGFydHMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNvbnN1bWluZyA9IHRoaXMucGFydHMuc29tZSgocGFydCkgPT4ge1xuICAgICAgY29uc3QgY29uc3VtaW5nID0gcGFydC5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMsIGNoZWNrRm9yQ3V0UGFydHMpO1xuXG4gICAgICBpZiAoY29uc3VtaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNhdmVkRnJhbWUgPSBmcmFtZSwgLy8vXG4gICAgICAgICAgYnJhbmNoaW5nID0gc3RhdGUuaXNCcmFuY2hpbmcoKSxcbiAgICAgICAgICBldmVyeSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgIGJyYW5jaGluZ0V2ZXJ5IDpcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lYXJFdmVyeTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLnBhcnRzLCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGVtcHR5RnJhbWUsIHN0YXRlLCAoZnJhbWUsIHN0YXRlLCBiYWNrKSA9PiB7XG4gICAgICBmcmFtZSA9IHRoaXMuY29tcG9zZShzYXZlZEZyYW1lLCBmcmFtZSk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGZyYW1lLCBzdGF0ZSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0c1N0cmluZyA9IHRoaXMucGFydHMucmVkdWNlKChwYXJ0c1N0cmluZywgcGFydCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydFN0cmluZyA9IHBhcnQuYXNTdHJpbmcoKTtcblxuICAgICAgICAgICAgaWYgKHBhcnRzU3RyaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHBhcnRzU3RyaW5nID0gcGFydFN0cmluZztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhcnRzU3RyaW5nID0gYCR7cGFydHNTdHJpbmd9ICR7cGFydFN0cmluZ31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFydHNTdHJpbmc7XG4gICAgICAgICAgfSwgbnVsbCksXG4gICAgICAgICAgc3RyaW5nID0gYCggJHtwYXJ0c1N0cmluZ30gKWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0cyhwYXJ0cykge1xuICAgIGNvbnN0IHR5cGUgPSBTZXF1ZW5jZU9mUGFydHNQYXJ0VHlwZSxcbiAgICAgICAgICBzZXF1ZW5jZU9mUGFydHNQYXJ0ID0gbmV3IFNlcXVlbmNlT2ZQYXJ0c1BhcnQodHlwZSwgcGFydHMpO1xuXG4gICAgcmV0dXJuIHNlcXVlbmNlT2ZQYXJ0c1BhcnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTZXF1ZW5jZU9mUGFydHNQYXJ0IiwiTm9uVGVybWluYWxQYXJ0IiwidHlwZSIsInBhcnRzIiwiZ2V0UGFydHMiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsInNhdmVkRnJhbWUiLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsImV2ZXJ5IiwiYnJhbmNoaW5nRXZlcnkiLCJsaW5lYXJFdmVyeSIsImVtcHR5RnJhbWUiLCJjb21wb3NlIiwiYXNTdHJpbmciLCJwYXJ0c1N0cmluZyIsInJlZHVjZSIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydHMiLCJTZXF1ZW5jZU9mUGFydHNQYXJ0VHlwZSIsInNlcXVlbmNlT2ZQYXJ0c1BhcnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBcUJBOzs7b0VBUE87dUJBRUQ7d0JBQ1c7MkJBQ0c7MkJBQ0Q7Ozs7OztBQUV6QixNQUFNQSw0QkFBNEJDLG9CQUFlO0lBQzlELFlBQVlDLElBQUksRUFBRUMsS0FBSyxDQUFFO1FBQ3ZCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUNoRSxNQUFNQyxZQUFZLElBQUksQ0FBQ04sS0FBSyxDQUFDTyxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS04sV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztZQUUxRCxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsYUFBYUosT0FDYkssWUFBWUosTUFBTUssV0FBVyxJQUM3QkMsUUFBUUYsWUFDRUcsZ0JBQWMsR0FDWkMsYUFBVztRQUU3QixPQUFPRixNQUFNLElBQUksQ0FBQ2pCLEtBQUssRUFBRSxDQUFDUSxNQUFNRSxPQUFPQyxPQUFPQyxTQUFTQztZQUNyRCxPQUFPTCxLQUFLQyxLQUFLLENBQUNDLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdPLGlCQUFVLEVBQUVULE9BQU8sQ0FBQ0QsT0FBT0MsT0FBT0U7WUFDbkNILFFBQVEsSUFBSSxDQUFDVyxPQUFPLENBQUNQLFlBQVlKO1lBRWpDLE9BQU9FLFFBQVFGLE9BQU9DLE9BQU9FO1FBQy9CLEdBQUdBO0lBQ0w7SUFFQVMsV0FBVztRQUNULE1BQU1DLGNBQWMsSUFBSSxDQUFDdkIsS0FBSyxDQUFDd0IsTUFBTSxDQUFDLENBQUNELGFBQWFmO1lBQzVDLE1BQU1pQixhQUFhakIsS0FBS2MsUUFBUTtZQUVoQyxJQUFJQyxnQkFBZ0IsTUFBTTtnQkFDeEJBLGNBQWNFO1lBQ2hCLE9BQU87Z0JBQ0xGLGNBQWMsR0FBR0EsWUFBWSxDQUFDLEVBQUVFLFlBQVk7WUFDOUM7WUFFQSxPQUFPRjtRQUNULEdBQUcsT0FDSEcsU0FBUyxDQUFDLEVBQUUsRUFBRUgsWUFBWSxFQUFFLENBQUM7UUFFbkMsT0FBT0c7SUFDVDtJQUVBLE9BQU9DLFVBQVUzQixLQUFLLEVBQUU7UUFDdEIsTUFBTUQsT0FBTzZCLGtDQUF1QixFQUM5QkMsc0JBQXNCLElBQUloQyxvQkFBb0JFLE1BQU1DO1FBRTFELE9BQU82QjtJQUNUO0FBQ0YifQ==
@@ -27,8 +27,11 @@ class ZeroOrMorePartsPart extends _nonTerminal.default {
27
27
  getPart() {
28
28
  return this.part;
29
29
  }
30
- isConsuming(ruleMap, visitedRules = []) {
30
+ isConsuming(ruleMap, visitedRules = [], checkForCutParts = false) {
31
31
  const consuming = false;
32
+ if (checkForCutParts) {
33
+ this.part.isConsuming(ruleMap, visitedRules, checkForCutParts);
34
+ }
32
35
  return consuming;
33
36
  }
34
37
  parse(frame, state, forward, back) {
@@ -47,4 +50,4 @@ class ZeroOrMorePartsPart extends _nonTerminal.default {
47
50
  }
48
51
  }
49
52
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3plcm9Pck1vcmVQYXJ0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgWmVyb09yTW9yZVBhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyByZXBlYXRlZGx5IGFzIGxpbmVhclJlcGVhdGVkbHkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBicmFuY2hpbmdSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuY29uc3QgeyBhc3RlcmlzayB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFplcm9Pck1vcmVQYXJ0c1BhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICB9XG5cbiAgZ2V0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10pIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSBmYWxzZTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsaW1pdCA9IEluZmluaXR5LFxuICAgICAgICAgIHN0cmljdCA9IGZhbHNlLFxuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgcmVwZWF0ZWRseSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nUmVwZWF0ZWRseSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXJSZXBlYXRlZGx5O1xuXG4gICAgcmV0dXJuIHJlcGVhdGVkbHkodGhpcy5wYXJ0LCBsaW1pdCwgc3RyaWN0LCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gdGhpcy5wYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gYCR7cGFydFN0cmluZ30ke2FzdGVyaXNrfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0KHBhcnQpIHtcbiAgICBjb25zdCB0eXBlID0gWmVyb09yTW9yZVBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgemVyb09yTW9yZVBhcnRzUGFydCA9IG5ldyBaZXJvT3JNb3JlUGFydHNQYXJ0KHR5cGUsIHBhcnQpO1xuXG4gICAgcmV0dXJuIHplcm9Pck1vcmVQYXJ0c1BhcnQ7XG4gIH1cbn0iXSwibmFtZXMiOlsiWmVyb09yTW9yZVBhcnRzUGFydCIsImFzdGVyaXNrIiwic3BlY2lhbFN5bWJvbHMiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjb25zdW1pbmciLCJwYXJzZSIsImZyYW1lIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImxpbWl0IiwiSW5maW5pdHkiLCJzdHJpY3QiLCJicmFuY2hpbmciLCJpc0JyYW5jaGluZyIsInJlcGVhdGVkbHkiLCJicmFuY2hpbmdSZXBlYXRlZGx5IiwibGluZWFyUmVwZWF0ZWRseSIsImFzU3RyaW5nIiwicGFydFN0cmluZyIsInN0cmluZyIsImZyb21QYXJ0IiwiWmVyb09yTW9yZVBhcnRzUGFydFR5cGUiLCJ6ZXJvT3JNb3JlUGFydHNQYXJ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXFCQTs7OzZCQVZVO29FQUVIOzJCQUVZO3dCQUNPOzJCQUNHOzs7Ozs7QUFFbEQsTUFBTSxFQUFFQyxRQUFRLEVBQUUsR0FBR0MsMkJBQWM7QUFFcEIsTUFBTUYsNEJBQTRCRyxvQkFBZTtJQUM5RCxZQUFZQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN0QixLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO0lBQ2xCO0lBRUFFLFlBQVlDLE9BQU8sRUFBRUMsZUFBZSxFQUFFLEVBQUU7UUFDdEMsTUFBTUMsWUFBWTtRQUVsQixPQUFPQTtJQUNUO0lBRUFDLE1BQU1DLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUNqQyxNQUFNQyxRQUFRQyxVQUNSQyxTQUFTLE9BQ1RDLFlBQVlOLE1BQU1PLFdBQVcsSUFDN0JDLGFBQWFGLFlBQ0VHLHFCQUFtQixHQUNqQkMsa0JBQWdCO1FBRXZDLE9BQU9GLFdBQVcsSUFBSSxDQUFDaEIsSUFBSSxFQUFFVyxPQUFPRSxRQUFRLENBQUNiLE1BQU1PLE9BQU9DLE9BQU9DLFNBQVNDO1lBQ3hFLE9BQU9WLEtBQUtNLEtBQUssQ0FBQ0MsT0FBT0MsT0FBT0MsU0FBU0M7UUFDM0MsR0FBR0gsT0FBT0MsT0FBT0MsU0FBU0M7SUFDNUI7SUFFQVMsV0FBVztRQUNULE1BQU1DLGFBQWEsSUFBSSxDQUFDcEIsSUFBSSxDQUFDbUIsUUFBUSxJQUMvQkUsU0FBUyxHQUFHRCxhQUFheEIsVUFBVTtRQUV6QyxPQUFPeUI7SUFDVDtJQUVBLE9BQU9DLFNBQVN0QixJQUFJLEVBQUU7UUFDcEIsTUFBTUQsT0FBT3dCLGtDQUF1QixFQUM5QkMsc0JBQXNCLElBQUk3QixvQkFBb0JJLE1BQU1DO1FBRTFELE9BQU93QjtJQUNUO0FBQ0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJ0L25vblRlcm1pbmFsL3plcm9Pck1vcmVQYXJ0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCBOb25UZXJtaW5hbFBhcnQgZnJvbSBcIi4uLy4uL3BhcnQvbm9uVGVybWluYWxcIjtcblxuaW1wb3J0IHsgWmVyb09yTW9yZVBhcnRzUGFydFR5cGUgfSBmcm9tIFwiLi4vLi4vcGFydFR5cGVzXCI7XG5pbXBvcnQgeyByZXBlYXRlZGx5IGFzIGxpbmVhclJlcGVhdGVkbHkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2xpbmVhclwiO1xuaW1wb3J0IHsgcmVwZWF0ZWRseSBhcyBicmFuY2hpbmdSZXBlYXRlZGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuY29uc3QgeyBhc3RlcmlzayB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFplcm9Pck1vcmVQYXJ0c1BhcnQgZXh0ZW5kcyBOb25UZXJtaW5hbFBhcnQge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBwYXJ0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLnBhcnQgPSBwYXJ0O1xuICB9XG5cbiAgZ2V0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0O1xuICB9XG5cbiAgaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzID0gW10sIGNoZWNrRm9yQ3V0UGFydHMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNvbnN1bWluZyA9IGZhbHNlO1xuXG4gICAgaWYgKGNoZWNrRm9yQ3V0UGFydHMpIHtcbiAgICAgIHRoaXMucGFydC5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMsIGNoZWNrRm9yQ3V0UGFydHMpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsaW1pdCA9IEluZmluaXR5LFxuICAgICAgICAgIHN0cmljdCA9IGZhbHNlLFxuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgcmVwZWF0ZWRseSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nUmVwZWF0ZWRseSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXJSZXBlYXRlZGx5O1xuXG4gICAgcmV0dXJuIHJlcGVhdGVkbHkodGhpcy5wYXJ0LCBsaW1pdCwgc3RyaWN0LCAocGFydCwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFydC5wYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gdGhpcy5wYXJ0LmFzU3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gYCR7cGFydFN0cmluZ30ke2FzdGVyaXNrfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0KHBhcnQpIHtcbiAgICBjb25zdCB0eXBlID0gWmVyb09yTW9yZVBhcnRzUGFydFR5cGUsXG4gICAgICAgICAgemVyb09yTW9yZVBhcnRzUGFydCA9IG5ldyBaZXJvT3JNb3JlUGFydHNQYXJ0KHR5cGUsIHBhcnQpO1xuXG4gICAgcmV0dXJuIHplcm9Pck1vcmVQYXJ0c1BhcnQ7XG4gIH1cbn0iXSwibmFtZXMiOlsiWmVyb09yTW9yZVBhcnRzUGFydCIsImFzdGVyaXNrIiwic3BlY2lhbFN5bWJvbHMiLCJOb25UZXJtaW5hbFBhcnQiLCJ0eXBlIiwicGFydCIsImdldFBhcnQiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwicGFyc2UiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJsaW1pdCIsIkluZmluaXR5Iiwic3RyaWN0IiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJyZXBlYXRlZGx5IiwiYnJhbmNoaW5nUmVwZWF0ZWRseSIsImxpbmVhclJlcGVhdGVkbHkiLCJhc1N0cmluZyIsInBhcnRTdHJpbmciLCJzdHJpbmciLCJmcm9tUGFydCIsIlplcm9Pck1vcmVQYXJ0c1BhcnRUeXBlIiwiemVyb09yTW9yZVBhcnRzUGFydCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFxQkE7Ozs2QkFWVTtvRUFFSDsyQkFFWTt3QkFDTzsyQkFDRzs7Ozs7O0FBRWxELE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLDJCQUFjO0FBRXBCLE1BQU1GLDRCQUE0Qkcsb0JBQWU7SUFDOUQsWUFBWUMsSUFBSSxFQUFFQyxJQUFJLENBQUU7UUFDdEIsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxZQUFZQyxPQUFPLEVBQUVDLGVBQWUsRUFBRSxFQUFFQyxtQkFBbUIsS0FBSyxFQUFFO1FBQ2hFLE1BQU1DLFlBQVk7UUFFbEIsSUFBSUQsa0JBQWtCO1lBQ3BCLElBQUksQ0FBQ0wsSUFBSSxDQUFDRSxXQUFXLENBQUNDLFNBQVNDLGNBQWNDO1FBQy9DO1FBRUEsT0FBT0M7SUFDVDtJQUVBQyxNQUFNQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakMsTUFBTUMsUUFBUUMsVUFDUkMsU0FBUyxPQUNUQyxZQUFZTixNQUFNTyxXQUFXLElBQzdCQyxhQUFhRixZQUNFRyxxQkFBbUIsR0FDakJDLGtCQUFnQjtRQUV2QyxPQUFPRixXQUFXLElBQUksQ0FBQ2pCLElBQUksRUFBRVksT0FBT0UsUUFBUSxDQUFDZCxNQUFNUSxPQUFPQyxPQUFPQyxTQUFTQztZQUN4RSxPQUFPWCxLQUFLTyxLQUFLLENBQUNDLE9BQU9DLE9BQU9DLFNBQVNDO1FBQzNDLEdBQUdILE9BQU9DLE9BQU9DLFNBQVNDO0lBQzVCO0lBRUFTLFdBQVc7UUFDVCxNQUFNQyxhQUFhLElBQUksQ0FBQ3JCLElBQUksQ0FBQ29CLFFBQVEsSUFDL0JFLFNBQVMsR0FBR0QsYUFBYXpCLFVBQVU7UUFFekMsT0FBTzBCO0lBQ1Q7SUFFQSxPQUFPQyxTQUFTdkIsSUFBSSxFQUFFO1FBQ3BCLE1BQU1ELE9BQU95QixrQ0FBdUIsRUFDOUJDLHNCQUFzQixJQUFJOUIsb0JBQW9CSSxNQUFNQztRQUUxRCxPQUFPeUI7SUFDVDtBQUNGIn0=