occam-parsers 23.3.67 → 23.3.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/definition.js CHANGED
@@ -137,10 +137,10 @@ class Definition {
137
137
  }
138
138
  function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state) {
139
139
  let nonTerminalNode;
140
- const opacity = rule.getOpacity(), ruleName = rule.getName(), childNodes = frame.getChildNodes(), precedence = frame.getPrecedence(definition), NonTerminalNode = state.NonTerminalNodeFromRuleName(ruleName);
140
+ const opacity = rule.getOpacity(), ruleName = rule.getName(), childNodes = frame.getChildNodes(), precedence = frame.getPrecedence(definition), NonTerminalNode = rule.NonTerminalNodeFromRuleName(ruleName, state);
141
141
  nonTerminalNode = NonTerminalNode.fromRuleNameChildNodesPrecedenceAndOpacity(ruleName, childNodes, precedence, opacity);
142
142
  nonTerminalNode = nonTerminalNode.rewrite(state);
143
143
  return nonTerminalNode;
144
144
  }
145
145
 
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJ0cywgcHJlY2VkZW5jZSkge1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByZWNlZGVuY2U7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpLFxuICAgICAgICAgIHVucGFsYXRhYmxlID0gbm9uVGVybWluYWxOb2RlLmlzVW5wYWxhdGFibGUoKTtcblxuICAgIGlmICh1bnBhbGF0YWJsZSkge1xuICAgICAgZnJhbWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGUgPSBub25UZXJtaW5hbE5vZGU7ICAvLy9cblxuICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSk7IC8vL1xuXG4gICAgICBmcmFtZSA9IHNhdmVkRnJhbWUubWVyZ2UoZnJhbWUpOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgcGFydHNTdHJpbmcgPSB0aGlzLnBhcnRzLnJlZHVjZSgocGFydHNTdHJpbmcsIHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IHBhcnRTdHJpbmcgPSBwYXJ0LmFzU3RyaW5nKCk7XG5cbiAgICAgIGlmIChwYXJ0c1N0cmluZyA9PT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgICAgIHBhcnRzU3RyaW5nID0gcGFydFN0cmluZzsgLy8vXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0c1N0cmluZyA9IGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnRzU3RyaW5nO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICBzdHJpbmcgPSBwYXJ0c1N0cmluZzsgLy8vXG5cbiAgICBpZiAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcmVjZWRlbmNlID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBQ0VfQ0hBUkFDVEVSIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVjZWRlbmNlO1xuXG4gICAgICBzdHJpbmcgPSBgJHtzdHJpbmd9ICgke3ByZWNlZGVuY2V9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMoQ2xhc3MsIHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0c0FuZFByZWNlZGVuY2UoQ2xhc3MsIHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgaWYgKHByZWNlZGVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHBhcnRzOyAvLy9cblxuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBjb25zdCBvcGFjaXR5ID0gcnVsZS5nZXRPcGFjaXR5KCksXG4gICAgICAgIHJ1bGVOYW1lID0gcnVsZS5nZXROYW1lKCksXG4gICAgICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZWNlZGVuY2UgPSBmcmFtZS5nZXRQcmVjZWRlbmNlKGRlZmluaXRpb24pLFxuICAgICAgICBOb25UZXJtaW5hbE5vZGUgPSBzdGF0ZS5Ob25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkocnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZS5yZXdyaXRlKHN0YXRlKTtcblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJTUEFDRV9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwicGFydHMiLCJwcmVjZWRlbmNlIiwiZ2V0UGFydHMiLCJnZXRQcmVjZWRlbmNlIiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlIiwidW5wYWxhdGFibGUiLCJpc1VucGFsYXRhYmxlIiwiY2hpbGROb2RlIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2RlIiwibWVyZ2UiLCJhc1N0cmluZyIsInN0cmluZyIsInBhcnRzU3RyaW5nIiwicmVkdWNlIiwicGFydFN0cmluZyIsIkVNUFRZX1NUUklORyIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0UiLCJmcm9tUGFydHMiLCJDbGFzcyIsInVuZGVmaW5lZCIsImZyb21QYXJ0c0FuZFByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0T3BhY2l0eSIsInJ1bGVOYW1lIiwiZ2V0TmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiTm9uVGVybWluYWxOb2RlIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicmV3cml0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYTTsrREFFVDt3QkFHb0I7MkJBQ0c7MkJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxNQUFNLEVBQUVDLGVBQWUsRUFBRSxHQUFHQyxxQkFBVTtBQUV2QixNQUFNRjtJQUNuQixZQUFZRyxLQUFLLEVBQUVDLFVBQVUsQ0FBRTtRQUM3QixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLFlBQVlDLE9BQU8sRUFBRUMsWUFBWSxFQUFFO1FBQ2pDLE1BQU1DLFlBQVksSUFBSSxDQUFDUCxLQUFLLENBQUNRLElBQUksQ0FBQyxDQUFDQztZQUNqQyxNQUFNRixZQUFZRSxLQUFLTCxXQUFXLENBQUNDLFNBQVNDO1lBRTVDLElBQUlDLFdBQVc7Z0JBQ2IsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFHLE1BQU1DLElBQUksRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3ZDLE1BQU1DLGFBQWFKLE9BQ2JLLFlBQVlKLE1BQU1LLFdBQVcsSUFDN0JDLFFBQVFGLFlBQ0VHLGdCQUFjLEdBQ1pDLGFBQVc7UUFFN0IsT0FBT0YsTUFBTSxJQUFJLENBQUNuQixLQUFLLEVBQUUsQ0FBQ1MsTUFBTUcs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
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBsaW5lYXJFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBldmVyeSBhcyBicmFuY2hpbmdFdmVyeSAgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFRSQU5TUEFSRU5UX1BSRUNFREVOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJ0cywgcHJlY2VkZW5jZSkge1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0UGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnByZWNlZGVuY2U7XG4gIH1cblxuICBpc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpLFxuICAgICAgICAgIHVucGFsYXRhYmxlID0gbm9uVGVybWluYWxOb2RlLmlzVW5wYWxhdGFibGUoKTtcblxuICAgIGlmICh1bnBhbGF0YWJsZSkge1xuICAgICAgZnJhbWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGUgPSBub25UZXJtaW5hbE5vZGU7ICAvLy9cblxuICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSk7IC8vL1xuXG4gICAgICBmcmFtZSA9IHNhdmVkRnJhbWUubWVyZ2UoZnJhbWUpOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgcGFydHNTdHJpbmcgPSB0aGlzLnBhcnRzLnJlZHVjZSgocGFydHNTdHJpbmcsIHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IHBhcnRTdHJpbmcgPSBwYXJ0LmFzU3RyaW5nKCk7XG5cbiAgICAgIGlmIChwYXJ0c1N0cmluZyA9PT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgICAgIHBhcnRzU3RyaW5nID0gcGFydFN0cmluZzsgLy8vXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0c1N0cmluZyA9IGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnRzU3RyaW5nO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICBzdHJpbmcgPSBwYXJ0c1N0cmluZzsgLy8vXG5cbiAgICBpZiAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcmVjZWRlbmNlID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gVFJBTlNQQVJFTlRfUFJFQ0VERU5DRSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBQ0VfQ0hBUkFDVEVSIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVjZWRlbmNlO1xuXG4gICAgICBzdHJpbmcgPSBgJHtzdHJpbmd9ICgke3ByZWNlZGVuY2V9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMoQ2xhc3MsIHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0c0FuZFByZWNlZGVuY2UoQ2xhc3MsIHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgaWYgKHByZWNlZGVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHBhcnRzOyAvLy9cblxuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBjb25zdCBvcGFjaXR5ID0gcnVsZS5nZXRPcGFjaXR5KCksXG4gICAgICAgIHJ1bGVOYW1lID0gcnVsZS5nZXROYW1lKCksXG4gICAgICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZWNlZGVuY2UgPSBmcmFtZS5nZXRQcmVjZWRlbmNlKGRlZmluaXRpb24pLFxuICAgICAgICBOb25UZXJtaW5hbE5vZGUgPSBydWxlLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSwgc3RhdGUpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkocnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZS5yZXdyaXRlKHN0YXRlKTtcblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJTUEFDRV9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwicGFydHMiLCJwcmVjZWRlbmNlIiwiZ2V0UGFydHMiLCJnZXRQcmVjZWRlbmNlIiwiaXNDb25zdW1pbmciLCJydWxlTWFwIiwidmlzaXRlZFJ1bGVzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlIiwidW5wYWxhdGFibGUiLCJpc1VucGFsYXRhYmxlIiwiY2hpbGROb2RlIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2RlIiwibWVyZ2UiLCJhc1N0cmluZyIsInN0cmluZyIsInBhcnRzU3RyaW5nIiwicmVkdWNlIiwicGFydFN0cmluZyIsIkVNUFRZX1NUUklORyIsIlRSQU5TUEFSRU5UX1BSRUNFREVOQ0UiLCJmcm9tUGFydHMiLCJDbGFzcyIsInVuZGVmaW5lZCIsImZyb21QYXJ0c0FuZFByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0T3BhY2l0eSIsInJ1bGVOYW1lIiwiZ2V0TmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiTm9uVGVybWluYWxOb2RlIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwicmV3cml0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYTTsrREFFVDt3QkFHb0I7MkJBQ0c7MkJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxNQUFNLEVBQUVDLGVBQWUsRUFBRSxHQUFHQyxxQkFBVTtBQUV2QixNQUFNRjtJQUNuQixZQUFZRyxLQUFLLEVBQUVDLFVBQVUsQ0FBRTtRQUM3QixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLFlBQVlDLE9BQU8sRUFBRUMsWUFBWSxFQUFFO1FBQ2pDLE1BQU1DLFlBQVksSUFBSSxDQUFDUCxLQUFLLENBQUNRLElBQUksQ0FBQyxDQUFDQztZQUNqQyxNQUFNRixZQUFZRSxLQUFLTCxXQUFXLENBQUNDLFNBQVNDO1lBRTVDLElBQUlDLFdBQVc7Z0JBQ2IsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFHLE1BQU1DLElBQUksRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3ZDLE1BQU1DLGFBQWFKLE9BQ2JLLFlBQVlKLE1BQU1LLFdBQVcsSUFDN0JDLFFBQVFGLFlBQ0VHLGdCQUFjLEdBQ1pDLGFBQVc7UUFFN0IsT0FBT0YsTUFBTSxJQUFJLENBQUNuQixLQUFLLEVBQUUsQ0FBQ1Ms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
package/lib/rule.js CHANGED
@@ -65,7 +65,7 @@ class Rule {
65
65
  return consuming;
66
66
  }
67
67
  areDefinitionsConsuming(ruleMap, visitedRules) {
68
- const definitionsConsuming = each(this.definitions, (definition)=>{
68
+ const definitionsConsuming = this.definitions.every((definition)=>{
69
69
  const definitionConsuming = definition.isConsuming(ruleMap, visitedRules);
70
70
  if (definitionConsuming) {
71
71
  return true;
@@ -73,6 +73,9 @@ class Rule {
73
73
  });
74
74
  return definitionsConsuming;
75
75
  }
76
+ NonTerminalNodeFromRuleName(ruleName, state) {
77
+ return state.NonTerminalNodeFromRuleName(ruleName);
78
+ }
76
79
  parse(frame, state, forward, back) {
77
80
  const rule = this, branching = state.isBranching(), some = branching ? _branching.some : _linear.some;
78
81
  return some(this.definitions, (definition, frame, state, forward, back)=>{
@@ -98,14 +101,6 @@ ${this.name}${opacityString}${marginString} ::= ${definitionsString}${semicolonS
98
101
  return rule;
99
102
  }
100
103
  }
101
- function each(array, callback) {
102
- let success = false;
103
- const arrayLength = array.length;
104
- if (arrayLength > 0) {
105
- success = array.every(callback);
106
- }
107
- return success;
108
- }
109
104
  function opacityStringFromOpacity(opacity) {
110
105
  const opacityString = opacity !== null ? opacity : _constants.EMPTY_STRING;
111
106
  return opacityString;
@@ -131,4 +126,4 @@ ${marginString} | ${definitionString}` : `${definitionsString} | ${definitionS
131
126
  return definitionsString;
132
127
  }
133
128
 
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzcGVjaWFsU3ltYm9scyB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzb21lIGFzIGxpbmVhclNvbWUgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBzb21lIGFzIGJyYW5jaGluZ1NvbWUgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGggfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5cbmNvbnN0IHsgb3BhcXVlOiBvcGFxdWVTcGVjaWFsU3ltYm9sLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGUge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBvcGFjaXR5LCBkZWZpbml0aW9ucykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICB0aGlzLmRlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRPcGFjaXR5KCkge1xuICAgIHJldHVybiB0aGlzLm9wYWNpdHk7XG4gIH1cblxuICBnZXREZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9ucztcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRPcGFjaXR5KG9wYWNpdHkpIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICB9XG5cbiAgc2V0RGVmaW5pdGlvbnMoZGVmaW5pdGlvbnMpIHtcbiAgICB0aGlzLmRlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdKSB7XG4gICAgbGV0IGNvbnN1bWluZyA9IGZhbHNlO1xuXG4gICAgY29uc3QgcnVsZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICB2aXNpdGVkUnVsZXNJbmNsdWRlc1J1bGUgPSB2aXNpdGVkUnVsZXMuaW5jbHVkZXMocnVsZSk7XG5cbiAgICBpZiAoIXZpc2l0ZWRSdWxlc0luY2x1ZGVzUnVsZSkge1xuICAgICAgY29uc3QgdmlzaXRlZFJ1bGUgPSBydWxlLCAvLy9cbiAgICAgICAgICAgIGRlZmluaXRpb25zQ29uc3VtaW5nID0gdGhpcy5hcmVEZWZpbml0aW9uc0NvbnN1bWluZyhydWxlTWFwLCBbXG4gICAgICAgICAgICAgIC4uLnZpc2l0ZWRSdWxlcyxcbiAgICAgICAgICAgICAgdmlzaXRlZFJ1bGVcbiAgICAgICAgICAgIF0pO1xuXG4gICAgICBpZiAoZGVmaW5pdGlvbnNDb25zdW1pbmcpIHtcbiAgICAgICAgY29uc3VtaW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgYXJlRGVmaW5pdGlvbnNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKSB7XG4gICAgY29uc3QgZGVmaW5pdGlvbnNDb25zdW1pbmcgPSBlYWNoKHRoaXMuZGVmaW5pdGlvbnMsIChkZWZpbml0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbml0aW9uQ29uc3VtaW5nID0gZGVmaW5pdGlvbi5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpO1xuXG4gICAgICBpZiAoZGVmaW5pdGlvbkNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uc0NvbnN1bWluZztcbiAgfVxuXG4gIHBhcnNlKGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLFxuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgc29tZSA9IGJyYW5jaGluZyA/XG4gICAgICAgICAgICAgICAgICBicmFuY2hpbmdTb21lIDpcbiAgICAgICAgICAgICAgICAgICAgbGluZWFyU29tZTtcblxuICAgIHJldHVybiBzb21lKHRoaXMuZGVmaW5pdGlvbnMsIChkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBkZWZpbml0aW9uLnBhcnNlKHJ1bGUsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIGFzU3RyaW5nKG1heGltdW1SdWxlTmFtZUxlbmd0aCwgbXVsdGlMaW5lID0gdHJ1ZSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25zTGVuZ3RoID0gdGhpcy5kZWZpbml0aW9ucy5sZW5ndGg7XG5cbiAgICBtdWx0aUxpbmUgPSBtdWx0aUxpbmUgJiYgKGRlZmluaXRpb25zTGVuZ3RoID4gMSk7ICAvLy9cblxuICAgIGNvbnN0IG9wYWNpdHlTdHJpbmcgPSBvcGFjaXR5U3RyaW5nRnJvbU9wYWNpdHkodGhpcy5vcGFjaXR5KSxcbiAgICAgICAgICBzZW1pY29sb25TdHJpbmcgPSBzZW1pY29sb25TdHJpbmdGcm9tTXVsdGlsaW5lQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoKG11bHRpTGluZSwgbWF4aW11bVJ1bGVOYW1lTGVuZ3RoKSxcbiAgICAgICAgICBkZWZpbml0aW9uc1N0cmluZyA9IGRlZmluaXRpb25zU3RyaW5nRnJvbU11bHRpbGluZURlZmluaXRpb25zQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoKG11bHRpTGluZSwgdGhpcy5kZWZpbml0aW9ucywgbWF4aW11bVJ1bGVOYW1lTGVuZ3RoKSxcbiAgICAgICAgICBydWxlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgcnVsZU5hbWVMZW5ndGggPSBydWxlTmFtZS5sZW5ndGgsXG4gICAgICAgICAgb3BhY2l0eVN0cmluZ0xlbmd0aCA9IG9wYWNpdHlTdHJpbmcubGVuZ3RoLFxuICAgICAgICAgIG1hcmdpbldpZHRoID0gbWF4aW11bVJ1bGVOYW1lTGVuZ3RoIC0gcnVsZU5hbWVMZW5ndGggLSBvcGFjaXR5U3RyaW5nTGVuZ3RoLFxuICAgICAgICAgIG1hcmdpblN0cmluZyA9IG1hcmdpblN0cmluZ0Zyb21NYXJnaW5XaWR0aChtYXJnaW5XaWR0aCksXG4gICAgICAgICAgc3RyaW5nID0gYFxuXG4ke3RoaXMubmFtZX0ke29wYWNpdHlTdHJpbmd9JHttYXJnaW5TdHJpbmd9IDo6PSAke2RlZmluaXRpb25zU3RyaW5nfSR7c2VtaWNvbG9uU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lT3BhY2l0eUFuZERlZmluaXRpb25zKENsYXNzLCBuYW1lLCBvcGFjaXR5LCBkZWZpbml0aW9ucykge1xuICAgIGlmIChkZWZpbml0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWZpbml0aW9ucyA9IG9wYWNpdHk7ICAvLy9cblxuICAgICAgb3BhY2l0eSA9IG5hbWU7IC8vL1xuXG4gICAgICBuYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFJ1bGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgQ2xhc3MobmFtZSwgb3BhY2l0eSwgZGVmaW5pdGlvbnMpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoYXJyYXlMZW5ndGggPiAwKSB7XG4gICAgc3VjY2VzcyA9IGFycmF5LmV2ZXJ5KGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJldHVybiBzdWNjZXNzXG59XG5cbmZ1bmN0aW9uIG9wYWNpdHlTdHJpbmdGcm9tT3BhY2l0eShvcGFjaXR5KSB7XG4gIGNvbnN0IG9wYWNpdHlTdHJpbmcgPSAob3BhY2l0eSAhPT0gbnVsbCk/XG4gICAgICAgICAgb3BhY2l0eTogLy8vXG4gICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIG9wYWNpdHlTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHNlbWljb2xvblN0cmluZ0Zyb21NdWx0aWxpbmVBbmRNYXhpbXVtUnVsZU5hbWVMZW5ndGgobXVsdGlMaW5lLCBtYXhpbXVtUnVsZU5hbWVMZW5ndGgpIHtcbiAgY29uc3QgbWFyZ2luV2lkdGggPSBtYXhpbXVtUnVsZU5hbWVMZW5ndGgsICAvLy9cbiAgICAgICAgbWFyZ2luU3RyaW5nID0gbWFyZ2luU3RyaW5nRnJvbU1hcmdpbldpZHRoKG1hcmdpbldpZHRoKSxcbiAgICAgICAgc2VtaWNvbG9uU3RyaW5nID0gbXVsdGlMaW5lID9cbiAgICAgIGBcblxuJHttYXJnaW5TdHJpbmd9ICAgO2AgOlxuICAgICAgXCIgO1wiO1xuXG4gIHJldHVybiBzZW1pY29sb25TdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGRlZmluaXRpb25zU3RyaW5nRnJvbU11bHRpbGluZURlZmluaXRpb25zQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoKG11bHRpTGluZSwgZGVmaW5pdGlvbnMsIG1heGltdW1SdWxlTmFtZUxlbmd0aCkge1xuICBjb25zdCBtYXJnaW5XaWR0aCA9IG1heGltdW1SdWxlTmFtZUxlbmd0aCwgIC8vL1xuICAgICAgICBtYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobWFyZ2luV2lkdGgpLFxuICAgICAgICBkZWZpbml0aW9uc1N0cmluZyA9IGRlZmluaXRpb25zLnJlZHVjZSgoZGVmaW5pdGlvbnNTdHJpbmcsIGRlZmluaXRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkZWZpbml0aW9uU3RyaW5nID0gZGVmaW5pdGlvbi5hc1N0cmluZygpO1xuXG4gICAgICAgICAgaWYgKGRlZmluaXRpb25zU3RyaW5nID09PSBFTVBUWV9TVFJJTkcpIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zU3RyaW5nID0gZGVmaW5pdGlvblN0cmluZzsgLy8vXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zU3RyaW5nID0gbXVsdGlMaW5lID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2RlZmluaXRpb25zU3RyaW5nfVxuICAgIFxuJHttYXJnaW5TdHJpbmd9ICAgfCAke2RlZmluaXRpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2RlZmluaXRpb25zU3RyaW5nfSB8ICR7ZGVmaW5pdGlvblN0cmluZ31gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uc1N0cmluZztcbiAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gZGVmaW5pdGlvbnNTdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiUnVsZSIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsIm5hbWUiLCJvcGFjaXR5IiwiZGVmaW5pdGlvbnMiLCJnZXROYW1lIiwiZ2V0T3BhY2l0eSIsImdldERlZmluaXRpb25zIiwic2V0TmFtZSIsInNldE9wYWNpdHkiLCJzZXREZWZpbml0aW9ucyIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNvbnN1bWluZyIsInJ1bGUiLCJ2aXNpdGVkUnVsZXNJbmNsdWRlc1J1bGUiLCJpbmNsdWRlcyIsInZpc2l0ZWRSdWxlIiwiZGVmaW5pdGlvbnNDb25zdW1pbmciLCJhcmVEZWZpbml0aW9uc0NvbnN1bWluZyIsImVhY2giLCJkZWZpbml0aW9uIiwiZGVmaW5pdGlvbkNvbnN1bWluZyIsInBhcnNlIiwiZnJhbWUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJzb21lIiwiYnJhbmNoaW5nU29tZSIsImxpbmVhclNvbWUiLCJhc1N0cmluZyIsIm1heGltdW1SdWxlTmFtZUxlbmd0aCIsIm11bHRpTGluZSIsImRlZmluaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwib3BhY2l0eVN0cmluZyIsIm9wYWNpdHlTdHJpbmdGcm9tT3BhY2l0eSIsInNlbWljb2xvblN0cmluZyIsInNlbWljb2xvblN0cmluZ0Zyb21NdWx0aWxpbmVBbmRNYXhpbXVtUnVsZU5hbWVMZW5ndGgiLCJkZWZpbml0aW9uc1N0cmluZyIsImRlZmluaXRpb25zU3RyaW5nRnJvbU11bHRpbGluZURlZmluaXRpb25zQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoIiwicnVsZU5hbWUiLCJydWxlTmFtZUxlbmd0aCIsIm9wYWNpdHlTdHJpbmdMZW5ndGgiLCJtYXJnaW5XaWR0aCIsIm1hcmdpblN0cmluZyIsIm1hcmdpblN0cmluZ0Zyb21NYXJnaW5XaWR0aCIsInN0cmluZyIsImZyb21OYW1lT3BhY2l0eUFuZERlZmluaXRpb25zIiwiQ2xhc3MiLCJ1bmRlZmluZWQiLCJhcnJheSIsImNhbGxiYWNrIiwic3VjY2VzcyIsImFycmF5TGVuZ3RoIiwiZXZlcnkiLCJFTVBUWV9TVFJJTkciLCJyZWR1Y2UiLCJkZWZpbml0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQXFCQTs7OzZCQVRVOzJCQUVGO3dCQUNNOzJCQUNHO3dCQUNNO0FBRTVDLE1BQU0sRUFBRUMsUUFBUUMsbUJBQW1CLEVBQUVDLFlBQVlDLHVCQUF1QixFQUFFLEdBQUdDLDJCQUFjO0FBRTVFLE1BQU1MO0lBQ25CLFlBQVlNLElBQUksRUFBRUMsT0FBTyxFQUFFQyxXQUFXLENBQUU7UUFDdEMsSUFBSSxDQUFDRixJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUNILE9BQU87SUFDckI7SUFFQUksaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDekI7SUFFQUksUUFBUU4sSUFBSSxFQUFFO1FBQ1osSUFBSSxDQUFDQSxJQUFJLEdBQUdBO0lBQ2Q7SUFFQU8sV0FBV04sT0FBTyxFQUFFO1FBQ2xCLElBQUksQ0FBQ0EsT0FBTyxHQUFHQTtJQUNqQjtJQUVBTyxlQUFlTixXQUFXLEVBQUU7UUFDMUIsSUFBSSxDQUFDQSxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFPLFdBQVc7UUFDVCxNQUFNZCxTQUFVLElBQUksQ0FBQ00sT0FBTyxLQUFLTDtRQUVqQyxPQUFPRDtJQUNUO0lBRUFlLGVBQWU7UUFDYixNQUFNYixhQUFjLElBQUksQ0FBQ0ksT0FBTyxLQUFLSDtRQUVyQyxP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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzcGVjaWFsU3ltYm9scyB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzb21lIGFzIGxpbmVhclNvbWUgfSBmcm9tIFwiLi91dGlsaXRpZXMvbGluZWFyXCI7XG5pbXBvcnQgeyBzb21lIGFzIGJyYW5jaGluZ1NvbWUgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhbmNoaW5nXCI7XG5pbXBvcnQgeyBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGggfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5cbmNvbnN0IHsgb3BhcXVlOiBvcGFxdWVTcGVjaWFsU3ltYm9sLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGUge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBvcGFjaXR5LCBkZWZpbml0aW9ucykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICB0aGlzLmRlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRPcGFjaXR5KCkge1xuICAgIHJldHVybiB0aGlzLm9wYWNpdHk7XG4gIH1cblxuICBnZXREZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9ucztcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRPcGFjaXR5KG9wYWNpdHkpIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICB9XG5cbiAgc2V0RGVmaW5pdGlvbnMoZGVmaW5pdGlvbnMpIHtcbiAgICB0aGlzLmRlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdKSB7XG4gICAgbGV0IGNvbnN1bWluZyA9IGZhbHNlO1xuXG4gICAgY29uc3QgcnVsZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICB2aXNpdGVkUnVsZXNJbmNsdWRlc1J1bGUgPSB2aXNpdGVkUnVsZXMuaW5jbHVkZXMocnVsZSk7XG5cbiAgICBpZiAoIXZpc2l0ZWRSdWxlc0luY2x1ZGVzUnVsZSkge1xuICAgICAgY29uc3QgdmlzaXRlZFJ1bGUgPSBydWxlLCAvLy9cbiAgICAgICAgICAgIGRlZmluaXRpb25zQ29uc3VtaW5nID0gdGhpcy5hcmVEZWZpbml0aW9uc0NvbnN1bWluZyhydWxlTWFwLCBbXG4gICAgICAgICAgICAgIC4uLnZpc2l0ZWRSdWxlcyxcbiAgICAgICAgICAgICAgdmlzaXRlZFJ1bGVcbiAgICAgICAgICAgIF0pO1xuXG4gICAgICBpZiAoZGVmaW5pdGlvbnNDb25zdW1pbmcpIHtcbiAgICAgICAgY29uc3VtaW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3VtaW5nO1xuICB9XG5cbiAgYXJlRGVmaW5pdGlvbnNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzKSB7XG4gICAgY29uc3QgZGVmaW5pdGlvbnNDb25zdW1pbmcgPSB0aGlzLmRlZmluaXRpb25zLmV2ZXJ5KChkZWZpbml0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbml0aW9uQ29uc3VtaW5nID0gZGVmaW5pdGlvbi5pc0NvbnN1bWluZyhydWxlTWFwLCB2aXNpdGVkUnVsZXMpO1xuXG4gICAgICBpZiAoZGVmaW5pdGlvbkNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uc0NvbnN1bWluZztcbiAgfVxuXG4gIE5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSwgc3RhdGUpIHsgcmV0dXJuIHN0YXRlLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSk7IH1cblxuICBwYXJzZShmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlID0gdGhpcyxcbiAgICAgICAgICBicmFuY2hpbmcgPSBzdGF0ZS5pc0JyYW5jaGluZygpLFxuICAgICAgICAgIHNvbWUgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgYnJhbmNoaW5nU29tZSA6XG4gICAgICAgICAgICAgICAgICAgIGxpbmVhclNvbWU7XG5cbiAgICByZXR1cm4gc29tZSh0aGlzLmRlZmluaXRpb25zLCAoZGVmaW5pdGlvbiwgZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZGVmaW5pdGlvbi5wYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhc1N0cmluZyhtYXhpbXVtUnVsZU5hbWVMZW5ndGgsIG11bHRpTGluZSA9IHRydWUpIHtcbiAgICBjb25zdCBkZWZpbml0aW9uc0xlbmd0aCA9IHRoaXMuZGVmaW5pdGlvbnMubGVuZ3RoO1xuXG4gICAgbXVsdGlMaW5lID0gbXVsdGlMaW5lICYmIChkZWZpbml0aW9uc0xlbmd0aCA+IDEpOyAgLy8vXG5cbiAgICBjb25zdCBvcGFjaXR5U3RyaW5nID0gb3BhY2l0eVN0cmluZ0Zyb21PcGFjaXR5KHRoaXMub3BhY2l0eSksXG4gICAgICAgICAgc2VtaWNvbG9uU3RyaW5nID0gc2VtaWNvbG9uU3RyaW5nRnJvbU11bHRpbGluZUFuZE1heGltdW1SdWxlTmFtZUxlbmd0aChtdWx0aUxpbmUsIG1heGltdW1SdWxlTmFtZUxlbmd0aCksXG4gICAgICAgICAgZGVmaW5pdGlvbnNTdHJpbmcgPSBkZWZpbml0aW9uc1N0cmluZ0Zyb21NdWx0aWxpbmVEZWZpbml0aW9uc0FuZE1heGltdW1SdWxlTmFtZUxlbmd0aChtdWx0aUxpbmUsIHRoaXMuZGVmaW5pdGlvbnMsIG1heGltdW1SdWxlTmFtZUxlbmd0aCksXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLm5hbWUsIC8vL1xuICAgICAgICAgIHJ1bGVOYW1lTGVuZ3RoID0gcnVsZU5hbWUubGVuZ3RoLFxuICAgICAgICAgIG9wYWNpdHlTdHJpbmdMZW5ndGggPSBvcGFjaXR5U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgICBtYXJnaW5XaWR0aCA9IG1heGltdW1SdWxlTmFtZUxlbmd0aCAtIHJ1bGVOYW1lTGVuZ3RoIC0gb3BhY2l0eVN0cmluZ0xlbmd0aCxcbiAgICAgICAgICBtYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobWFyZ2luV2lkdGgpLFxuICAgICAgICAgIHN0cmluZyA9IGBcblxuJHt0aGlzLm5hbWV9JHtvcGFjaXR5U3RyaW5nfSR7bWFyZ2luU3RyaW5nfSA6Oj0gJHtkZWZpbml0aW9uc1N0cmluZ30ke3NlbWljb2xvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZU9wYWNpdHlBbmREZWZpbml0aW9ucyhDbGFzcywgbmFtZSwgb3BhY2l0eSwgZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmaW5pdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5pdGlvbnMgPSBvcGFjaXR5OyAgLy8vXG5cbiAgICAgIG9wYWNpdHkgPSBuYW1lOyAvLy9cblxuICAgICAgbmFtZSA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBSdWxlOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBydWxlID0gbmV3IENsYXNzKG5hbWUsIG9wYWNpdHksIGRlZmluaXRpb25zKTtcblxuICAgIHJldHVybiBydWxlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9wYWNpdHlTdHJpbmdGcm9tT3BhY2l0eShvcGFjaXR5KSB7XG4gIGNvbnN0IG9wYWNpdHlTdHJpbmcgPSAob3BhY2l0eSAhPT0gbnVsbCk/XG4gICAgICAgICAgb3BhY2l0eTogLy8vXG4gICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIG9wYWNpdHlTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHNlbWljb2xvblN0cmluZ0Zyb21NdWx0aWxpbmVBbmRNYXhpbXVtUnVsZU5hbWVMZW5ndGgobXVsdGlMaW5lLCBtYXhpbXVtUnVsZU5hbWVMZW5ndGgpIHtcbiAgY29uc3QgbWFyZ2luV2lkdGggPSBtYXhpbXVtUnVsZU5hbWVMZW5ndGgsICAvLy9cbiAgICAgICAgbWFyZ2luU3RyaW5nID0gbWFyZ2luU3RyaW5nRnJvbU1hcmdpbldpZHRoKG1hcmdpbldpZHRoKSxcbiAgICAgICAgc2VtaWNvbG9uU3RyaW5nID0gbXVsdGlMaW5lID9cbiAgICAgIGBcblxuJHttYXJnaW5TdHJpbmd9ICAgO2AgOlxuICAgICAgXCIgO1wiO1xuXG4gIHJldHVybiBzZW1pY29sb25TdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGRlZmluaXRpb25zU3RyaW5nRnJvbU11bHRpbGluZURlZmluaXRpb25zQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoKG11bHRpTGluZSwgZGVmaW5pdGlvbnMsIG1heGltdW1SdWxlTmFtZUxlbmd0aCkge1xuICBjb25zdCBtYXJnaW5XaWR0aCA9IG1heGltdW1SdWxlTmFtZUxlbmd0aCwgIC8vL1xuICAgICAgICBtYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobWFyZ2luV2lkdGgpLFxuICAgICAgICBkZWZpbml0aW9uc1N0cmluZyA9IGRlZmluaXRpb25zLnJlZHVjZSgoZGVmaW5pdGlvbnNTdHJpbmcsIGRlZmluaXRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkZWZpbml0aW9uU3RyaW5nID0gZGVmaW5pdGlvbi5hc1N0cmluZygpO1xuXG4gICAgICAgICAgaWYgKGRlZmluaXRpb25zU3RyaW5nID09PSBFTVBUWV9TVFJJTkcpIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zU3RyaW5nID0gZGVmaW5pdGlvblN0cmluZzsgLy8vXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zU3RyaW5nID0gbXVsdGlMaW5lID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2RlZmluaXRpb25zU3RyaW5nfVxuICAgIFxuJHttYXJnaW5TdHJpbmd9ICAgfCAke2RlZmluaXRpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2RlZmluaXRpb25zU3RyaW5nfSB8ICR7ZGVmaW5pdGlvblN0cmluZ31gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uc1N0cmluZztcbiAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gZGVmaW5pdGlvbnNTdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiUnVsZSIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsIm5hbWUiLCJvcGFjaXR5IiwiZGVmaW5pdGlvbnMiLCJnZXROYW1lIiwiZ2V0T3BhY2l0eSIsImdldERlZmluaXRpb25zIiwic2V0TmFtZSIsInNldE9wYWNpdHkiLCJzZXREZWZpbml0aW9ucyIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzQ29uc3VtaW5nIiwicnVsZU1hcCIsInZpc2l0ZWRSdWxlcyIsImNvbnN1bWluZyIsInJ1bGUiLCJ2aXNpdGVkUnVsZXNJbmNsdWRlc1J1bGUiLCJpbmNsdWRlcyIsInZpc2l0ZWRSdWxlIiwiZGVmaW5pdGlvbnNDb25zdW1pbmciLCJhcmVEZWZpbml0aW9uc0NvbnN1bWluZyIsImV2ZXJ5IiwiZGVmaW5pdGlvbiIsImRlZmluaXRpb25Db25zdW1pbmciLCJOb25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUiLCJydWxlTmFtZSIsInN0YXRlIiwicGFyc2UiLCJmcmFtZSIsImZvcndhcmQiLCJiYWNrIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJzb21lIiwiYnJhbmNoaW5nU29tZSIsImxpbmVhclNvbWUiLCJhc1N0cmluZyIsIm1heGltdW1SdWxlTmFtZUxlbmd0aCIsIm11bHRpTGluZSIsImRlZmluaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwib3BhY2l0eVN0cmluZyIsIm9wYWNpdHlTdHJpbmdGcm9tT3BhY2l0eSIsInNlbWljb2xvblN0cmluZyIsInNlbWljb2xvblN0cmluZ0Zyb21NdWx0aWxpbmVBbmRNYXhpbXVtUnVsZU5hbWVMZW5ndGgiLCJkZWZpbml0aW9uc1N0cmluZyIsImRlZmluaXRpb25zU3RyaW5nRnJvbU11bHRpbGluZURlZmluaXRpb25zQW5kTWF4aW11bVJ1bGVOYW1lTGVuZ3RoIiwicnVsZU5hbWVMZW5ndGgiLCJvcGFjaXR5U3RyaW5nTGVuZ3RoIiwibWFyZ2luV2lkdGgiLCJtYXJnaW5TdHJpbmciLCJtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgiLCJzdHJpbmciLCJmcm9tTmFtZU9wYWNpdHlBbmREZWZpbml0aW9ucyIsIkNsYXNzIiwidW5kZWZpbmVkIiwiRU1QVFlfU1RSSU5HIiwicmVkdWNlIiwiZGVmaW5pdGlvblN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFxQkE7Ozs2QkFUVTsyQkFFRjt3QkFDTTsyQkFDRzt3QkFDTTtBQUU1QyxNQUFNLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFFQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU1RSxNQUFNTDtJQUNuQixZQUFZTSxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsV0FBVyxDQUFFO1FBQ3RDLElBQUksQ0FBQ0YsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDSCxPQUFPO0lBQ3JCO0lBRUFJLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDSCxXQUFXO0lBQ3pCO0lBRUFJLFFBQVFOLElBQUksRUFBRTtRQUNaLElBQUksQ0FBQ0EsSUFBSSxHQUFHQTtJQUNkO0lBRUFPLFdBQVdOLE9BQU8sRUFBRTtRQUNsQixJQUFJLENBQUNBLE9BQU8sR0FBR0E7SUFDakI7SUFFQU8sZUFBZU4sV0FBVyxFQUFFO1FBQzFCLElBQUksQ0FBQ0EsV0FBVyxHQUFHQTtJQUNyQjtJQUVBTyxXQUFXO1FBQ1QsTUFBTWQsU0FBVSxJQUFJLENBQUNNLE9BQU8sS0FBS0w7UUFFakMsT0FBT0Q7SUFDVDtJQUVBZSxlQUFlO1FBQ2IsTUFBTWIsYUFBYyxJQUFJLENBQUNJLE9BQU8sS0FBS0g7UUFFckMsT0FBT0Q7SUFDVDtJQUVBYyxnQkFBZ0I7UUFDZCxNQUFNZCxhQUFjLElBQUksQ0FBQ0ksT0FBTyxLQUFLO1FBRXJDLE9BQU9KO0lBQ1Q7SUFFQWUsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-parsers",
3
3
  "author": "James Smith",
4
- "version": "23.3.67",
4
+ "version": "23.3.69",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
package/src/definition.js CHANGED
@@ -139,7 +139,7 @@ function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame,
139
139
  ruleName = rule.getName(),
140
140
  childNodes = frame.getChildNodes(),
141
141
  precedence = frame.getPrecedence(definition),
142
- NonTerminalNode = state.NonTerminalNodeFromRuleName(ruleName);
142
+ NonTerminalNode = rule.NonTerminalNodeFromRuleName(ruleName, state);
143
143
 
144
144
  nonTerminalNode = NonTerminalNode.fromRuleNameChildNodesPrecedenceAndOpacity(ruleName, childNodes, precedence, opacity);
145
145
 
package/src/rule.js CHANGED
@@ -80,7 +80,7 @@ export default class Rule {
80
80
  }
81
81
 
82
82
  areDefinitionsConsuming(ruleMap, visitedRules) {
83
- const definitionsConsuming = each(this.definitions, (definition) => {
83
+ const definitionsConsuming = this.definitions.every((definition) => {
84
84
  const definitionConsuming = definition.isConsuming(ruleMap, visitedRules);
85
85
 
86
86
  if (definitionConsuming) {
@@ -91,6 +91,8 @@ export default class Rule {
91
91
  return definitionsConsuming;
92
92
  }
93
93
 
94
+ NonTerminalNodeFromRuleName(ruleName, state) { return state.NonTerminalNodeFromRuleName(ruleName); }
95
+
94
96
  parse(frame, state, forward, back) {
95
97
  const rule = this,
96
98
  branching = state.isBranching(),
@@ -140,18 +142,6 @@ ${this.name}${opacityString}${marginString} ::= ${definitionsString}${semicolonS
140
142
  }
141
143
  }
142
144
 
143
- function each(array, callback) {
144
- let success = false;
145
-
146
- const arrayLength = array.length;
147
-
148
- if (arrayLength > 0) {
149
- success = array.every(callback);
150
- }
151
-
152
- return success
153
- }
154
-
155
145
  function opacityStringFromOpacity(opacity) {
156
146
  const opacityString = (opacity !== null)?
157
147
  opacity: ///