occam-parsers 23.0.120 → 23.0.122

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.
@@ -163,6 +163,62 @@ function sliceChildNodes(startIndex) {
163
163
  var childNodes = this.childNodes.slice(startIndex, endIndex);
164
164
  return childNodes;
165
165
  }
166
+ function getAncestorNodes() {
167
+ var ancestorNodes = [];
168
+ var ancestorNode = this.parentNode; ///
169
+ while(ancestorNode !== null){
170
+ ancestorNodes.push(ancestorNode);
171
+ var parentNode = ancestorNode.getParentNode();
172
+ ancestorNode = parentNode; ///
173
+ }
174
+ return ancestorNodes;
175
+ }
176
+ function mapAncestorNode(callback) {
177
+ var ancestorNodes = this.getAncestorNodes();
178
+ return ancestorNodes.map(callback);
179
+ }
180
+ function someAncestorNode(callback) {
181
+ var result = false;
182
+ var index = 0, ancestorNode = this.parentNode; ///
183
+ while(ancestorNode !== null){
184
+ result = callback(ancestorNode, index);
185
+ if (result) {
186
+ break;
187
+ }
188
+ var parentNode = node.getParentNode();
189
+ ancestorNode = parentNode; ///
190
+ index++;
191
+ }
192
+ return result;
193
+ }
194
+ function findAncestorNode(callback) {
195
+ var index = 0, ancestorNode = this.parentNode; ///
196
+ while(ancestorNode !== null){
197
+ var result = callback(ancestorNode, index);
198
+ if (result) {
199
+ return ancestorNode;
200
+ }
201
+ var parentNode = node.getParentNode();
202
+ ancestorNode = parentNode; ///
203
+ index++;
204
+ }
205
+ }
206
+ function everyAncestorNode(callback) {
207
+ var ancestorNodes = this.getAncestorNodes();
208
+ return ancestorNodes.every(callback);
209
+ }
210
+ function filterAncestorNode(callback) {
211
+ var ancestorNodes = this.getAncestorNodes();
212
+ return ancestorNodes.filter(callback);
213
+ }
214
+ function reduceAncestorNode(callback, initialValue) {
215
+ var ancestorNodes = this.getAncestorNodes();
216
+ return ancestorNodes.reduce(callback, initialValue);
217
+ }
218
+ function forEachAncestorNode(callback) {
219
+ var ancestorNodes = this.getAncestorNodes();
220
+ ancestorNodes.forEach(callback);
221
+ }
166
222
  var nodeMixins = {
167
223
  getMultiplicity: getMultiplicity,
168
224
  mapChildNode: mapChildNode,
@@ -188,8 +244,16 @@ var nodeMixins = {
188
244
  prependChildNode: prependChildNode,
189
245
  prependChildNodes: prependChildNodes,
190
246
  spliceChildNodes: spliceChildNodes,
191
- sliceChildNodes: sliceChildNodes
247
+ sliceChildNodes: sliceChildNodes,
248
+ getAncestorNodes: getAncestorNodes,
249
+ mapAncestorNode: mapAncestorNode,
250
+ someAncestorNode: someAncestorNode,
251
+ findAncestorNode: findAncestorNode,
252
+ everyAncestorNode: everyAncestorNode,
253
+ filterAncestorNode: filterAncestorNode,
254
+ reduceAncestorNode: reduceAncestorNode,
255
+ forEachAncestorNode: forEachAncestorNode
192
256
  };
193
257
  var _default = nodeMixins;
194
258
 
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGZvcndhcmRzU29tZSwgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmZ1bmN0aW9uIGdldE11bHRpcGxpY2l0eSgpIHtcbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICByZXR1cm4gbXVsdGlwbGljaXR5O1xufVxuXG5mdW5jdGlvbiBtYXBDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoY2FsbGJhY2spOyB9XG5cbmZ1bmN0aW9uIHNvbWVDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5zb21lKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBmaW5kQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmluZChjYWxsYmFjayk7IH1cblxuZnVuY3Rpb24gZXZlcnlDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5ldmVyeShjYWxsYmFjayk7IH1cblxuZnVuY3Rpb24gZmlsdGVyQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiByZWR1Y2VDaGlsZE5vZGUoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTsgfVxuXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBmb3J3YXJkc1NvbWVDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIGZvcndhcmRzU29tZSh0aGlzLmNoaWxkTm9kZXMsIGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBiYWNrd2FyZHNTb21lQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiBiYWNrd2FyZHNTb21lKHRoaXMuY2hpbGROb2RlcywgY2FsbGJhY2spOyB9XG5cbmZ1bmN0aW9uIGluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpOyB9XG5cbmZ1bmN0aW9uIHNldENoaWxkTm9kZXNQYXJlbnROb2RlKGNoaWxkTm9kZXMpIHtcbiAgaWYgKGNoaWxkTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNoaWxkTm9kZXMgPSBbXG4gICAgICAuLi50aGlzLmNoaWxkTm9kZXNcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXM7XG5cbiAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICBjaGlsZE5vZGUuc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoY2hpbGROb2Rlcykge1xuICBpZiAoY2hpbGROb2RlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2hpbGROb2RlcyA9IFtcbiAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgIF07XG4gIH1cblxuICBjb25zdCBwYXJlbnROb2RlID0gbnVsbDtcblxuICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNoaWxkTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQ2hpbGROb2RlKGFkZGVkQ2hpbGROb2RlLCBzdGFydEluZGV4KSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IFtcbiAgICBhZGRlZENoaWxkTm9kZVxuICBdO1xuXG4gIHRoaXMuYWRkQ2hpbGROb2RlcyhhZGRlZENoaWxkTm9kZXMsIHN0YXJ0SW5kZXgpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCkge1xuICBjb25zdCBkZWxldGVDb3VudCA9IDA7XG5cbiAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZE5vZGUocmVtb3ZlZENoaWxkTm9kZSkge1xuICBsZXQgcmVtb3ZlZENoaWxkTm9kZXM7XG5cbiAgcmVtb3ZlZENoaWxkTm9kZXMgPSBbXG4gICAgcmVtb3ZlZENoaWxkTm9kZVxuICBdO1xuXG4gIHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcblxuICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpIHtcbiAgaWYgKHJlbW92ZWRDaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZW1vdmVkQ2hpbGROb2RlcyA9IFtcbiAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgIF07XG4gIH1cblxuICBjb25zdCByZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlbW92ZWRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAocmVtb3ZlZENoaWxkTm9kZXNMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmaXJzdFJlcGxhY2VkQ2hpbGROb2RlID0gZmlyc3QocmVtb3ZlZENoaWxkTm9kZXMpLFxuICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksIC8vL1xuICAgICAgICBkZWxldGVDb3VudCA9IHJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoLCAvLy9cbiAgICAgICAgYWRkZWRDaGlsZE5vZGVzID0gW107XG5cbiAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG5cbiAgcmV0dXJuIHJlbW92ZWRDaGlsZE5vZGVzO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2hpbGROb2RlKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpIHtcbiAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGVzID0gW1xuICAgIHJlcGxhY2VkQ2hpbGROb2RlXG4gIF07XG5cbiAgdGhpcy5yZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZXMsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlcywgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlcGxhY2VkQ2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgIGZpcnN0UmVwbGFjZWRDaGlsZE5vZGUgPSBmaXJzdChyZXBsYWNlZENoaWxkTm9kZXMpLFxuICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksIC8vL1xuICAgICAgICBkZWxldGVDb3VudCA9IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aDsgLy8vXG5cbiAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCByZXBsYWNlbWVudENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZE5vZGUoYXBwZW5kZWRDaGlsZE5vZGUpIHtcbiAgY29uc3QgYXBwZW5kZWRDaGlsZE5vZGVzID0gW1xuICAgIGFwcGVuZGVkQ2hpbGROb2RlXG4gIF07XG5cbiAgdGhpcy5hcHBlbmRDaGlsZE5vZGVzKGFwcGVuZGVkQ2hpbGROb2Rlcyk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkTm9kZXMoYXBwZW5kZWRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IGFwcGVuZGVkQ2hpbGROb2RlcywgLy8vXG4gICAgICAgIG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgIHN0YXJ0SW5kZXggPSBtdWx0aXBsaWNpdHk7ICAvLy9cblxuICB0aGlzLmFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KTtcbn1cblxuZnVuY3Rpb24gcHJlcGVuZENoaWxkTm9kZShwcmVwZW5kZWRDaGlsZE5vZGUpIHtcbiAgY29uc3QgcHJlcGVuZGVkQ2hpbGROb2RlcyA9IFtcbiAgICBwcmVwZW5kZWRDaGlsZE5vZGVcbiAgXTtcblxuICB0aGlzLnByZXBlbmRDaGlsZE5vZGVzKHByZXBlbmRlZENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kQ2hpbGROb2RlcyhwcmVwZW5kZWRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IHByZXBlbmRlZENoaWxkTm9kZXMsICAvLy9cbiAgICAgICAgc3RhcnRJbmRleCA9IDA7XG5cbiAgdGhpcy5hZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2RlcyA9IFtdKSB7XG4gIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5jaGlsZE5vZGVzLnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCwgLi4uYWRkZWRDaGlsZE5vZGVzKTtcblxuICB0aGlzLnJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gIHRoaXMuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoYWRkZWRDaGlsZE5vZGVzKTtcblxuICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG59XG5cbmZ1bmN0aW9uIHNsaWNlQ2hpbGROb2RlcyhzdGFydEluZGV4LCBlbmRJbmRleCA9IEluZmluaXR5KSB7XG4gIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLmNoaWxkTm9kZXMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuXG5jb25zdCBub2RlTWl4aW5zID0ge1xuICBnZXRNdWx0aXBsaWNpdHksXG4gIG1hcENoaWxkTm9kZSxcbiAgc29tZUNoaWxkTm9kZSxcbiAgZmluZENoaWxkTm9kZSxcbiAgZXZlcnlDaGlsZE5vZGUsXG4gIGZpbHRlckNoaWxkTm9kZSxcbiAgcmVkdWNlQ2hpbGROb2RlLFxuICBmb3JFYWNoQ2hpbGROb2RlLFxuICBmb3J3YXJkc1NvbWVDaGlsZE5vZGUsXG4gIGJhY2t3YXJkc1NvbWVDaGlsZE5vZGUsXG4gIGluZGV4T2ZDaGlsZE5vZGUsXG4gIHNldENoaWxkTm9kZXNQYXJlbnROb2RlLFxuICByZXNldENoaWxkTm9kZXNQYXJlbnROb2RlLFxuICBhZGRDaGlsZE5vZGUsXG4gIGFkZENoaWxkTm9kZXMsXG4gIHJlbW92ZUNoaWxkTm9kZSxcbiAgcmVtb3ZlQ2hpbGROb2RlcyxcbiAgcmVwbGFjZUNoaWxkTm9kZSxcbiAgcmVwbGFjZUNoaWxkTm9kZXMsXG4gIGFwcGVuZENoaWxkTm9kZSxcbiAgYXBwZW5kQ2hpbGROb2RlcyxcbiAgcHJlcGVuZENoaWxkTm9kZSxcbiAgcHJlcGVuZENoaWxkTm9kZXMsXG4gIHNwbGljZUNoaWxkTm9kZXMsXG4gIHNsaWNlQ2hpbGROb2Rlc1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbm9kZU1peGlucztcbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsImdldE11bHRpcGxpY2l0eSIsImNoaWxkTm9kZXNMZW5ndGgiLCJjaGlsZE5vZGVzIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwibWFwQ2hpbGROb2RlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lQ2hpbGROb2RlIiwic29tZSIsImZpbmRDaGlsZE5vZGUiLCJmaW5kIiwiZXZlcnlDaGlsZE5vZGUiLCJldmVyeSIsImZpbHRlckNoaWxkTm9kZSIsImZpbHRlciIsInJlZHVjZUNoaWxkTm9kZSIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsImZvckVhY2hDaGlsZE5vZGUiLCJmb3JFYWNoIiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImluZGV4T2ZDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJpbmRleE9mIiwic2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJ1bmRlZmluZWQiLCJwYXJlbnROb2RlIiwic2V0UGFyZW50Tm9kZSIsInJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJhZGRDaGlsZE5vZGUiLCJhZGRlZENoaWxkTm9kZSIsInN0YXJ0SW5kZXgiLCJhZGRlZENoaWxkTm9kZXMiLCJhZGRDaGlsZE5vZGVzIiwiZGVsZXRlQ291bnQiLCJzcGxpY2VDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlIiwicmVtb3ZlZENoaWxkTm9kZSIsInJlbW92ZWRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlcyIsInJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoIiwiZmlyc3RSZXBsYWNlZENoaWxkTm9kZSIsInJlcGxhY2VDaGlsZE5vZGUiLCJyZXBsYWNlZENoaWxkTm9kZSIsInJlcGxhY2VtZW50Q2hpbGROb2RlcyIsInJlcGxhY2VkQ2hpbGROb2RlcyIsInJlcGxhY2VDaGlsZE5vZGVzIiwicmVwbGFjZWRDaGlsZE5vZGVzTGVuZ3RoIiwiYXBwZW5kQ2hpbGROb2RlIiwiYXBwZW5kZWRDaGlsZE5vZGUiLCJhcHBlbmRlZENoaWxkTm9kZXMiLCJhcHBlbmRDaGlsZE5vZGVzIiwicHJlcGVuZENoaWxkTm9kZSIsInByZXBlbmRlZENoaWxkTm9kZSIsInByZXBlbmRlZENoaWxkTm9kZXMiLCJwcmVwZW5kQ2hpbGROb2RlcyIsInNwbGljZSIsInNsaWNlQ2hpbGROb2RlcyIsImVuZEluZGV4IiwiSW5maW5pdHkiLCJzbGljZSIsIm5vZGVNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTBNQTs7O2VBQUE7Ozt5QkF4TStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvQixJQUFRQSxRQUF1Q0MseUJBQWMsQ0FBckRELE9BQU9FLGVBQWdDRCx5QkFBYyxDQUE5Q0MsY0FBY0MsZ0JBQWtCRix5QkFBYyxDQUFoQ0U7QUFFN0IsU0FBU0M7SUFDUCxJQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyxVQUFVLENBQUNDLE1BQU0sRUFDekNDLGVBQWVILGtCQUFtQixHQUFHO0lBRTNDLE9BQU9HO0FBQ1Q7QUFFQSxTQUFTQyxhQUFhQyxRQUFRO0lBQUksT0FBTyxJQUFJLENBQUNKLFVBQVUsQ0FBQ0ssR0FBRyxDQUFDRDtBQUFXO0FBRXhFLFNBQVNFLGNBQWNGLFFBQVE7SUFBSSxPQUFPLElBQUksQ0FBQ0osVUFBVSxDQUFDTyxJQUFJLENBQUNIO0FBQVc7QUFFMUUsU0FBU0ksY0FBY0osUUFBUTtJQUFJLE9BQU8sSUFBSSxDQUFDSixVQUFVLENBQUNTLElBQUksQ0FBQ0w7QUFBVztBQUUxRSxTQUFTTSxlQUFlTixRQUFRO0lBQUksT0FBTyxJQUFJLENBQUNKLFVBQVUsQ0FBQ1csS0FBSyxDQUFDUDtBQUFXO0FBRTVFLFNBQVNRLGdCQUFnQlIsUUFBUTtJQUFJLE9BQU8sSUFBSSxDQUFDSixVQUFVLENBQUNhLE1BQU0sQ0FBQ1Q7QUFBVztBQUU5RSxTQUFTVSxnQkFBZ0JWLFFBQVEsRUFBRVcsWUFBWTtJQUFJLE9BQU8sSUFBSSxDQUFDZixVQUFVLENBQUNnQixNQUFNLENB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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGZvcndhcmRzU29tZSwgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmZ1bmN0aW9uIGdldE11bHRpcGxpY2l0eSgpIHtcbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICByZXR1cm4gbXVsdGlwbGljaXR5O1xufVxuXG5mdW5jdGlvbiBtYXBDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoY2FsbGJhY2spOyB9XG5cbmZ1bmN0aW9uIHNvbWVDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5zb21lKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBmaW5kQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmluZChjYWxsYmFjayk7IH1cblxuZnVuY3Rpb24gZXZlcnlDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5ldmVyeShjYWxsYmFjayk7IH1cblxuZnVuY3Rpb24gZmlsdGVyQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiByZWR1Y2VDaGlsZE5vZGUoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTsgfVxuXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBmb3J3YXJkc1NvbWVDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIGZvcndhcmRzU29tZSh0aGlzLmNoaWxkTm9kZXMsIGNhbGxiYWNrKTsgfVxuXG5mdW5jdGlvbiBiYWNrd2FyZHNTb21lQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiBiYWNrd2FyZHNTb21lKHRoaXMuY2hpbGROb2RlcywgY2FsbGJhY2spOyB9XG5cbmZ1bmN0aW9uIGluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpOyB9XG5cbmZ1bmN0aW9uIHNldENoaWxkTm9kZXNQYXJlbnROb2RlKGNoaWxkTm9kZXMpIHtcbiAgaWYgKGNoaWxkTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNoaWxkTm9kZXMgPSBbXG4gICAgICAuLi50aGlzLmNoaWxkTm9kZXNcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXM7XG5cbiAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICBjaGlsZE5vZGUuc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoY2hpbGROb2Rlcykge1xuICBpZiAoY2hpbGROb2RlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2hpbGROb2RlcyA9IFtcbiAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgIF07XG4gIH1cblxuICBjb25zdCBwYXJlbnROb2RlID0gbnVsbDtcblxuICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNoaWxkTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQ2hpbGROb2RlKGFkZGVkQ2hpbGROb2RlLCBzdGFydEluZGV4KSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IFtcbiAgICBhZGRlZENoaWxkTm9kZVxuICBdO1xuXG4gIHRoaXMuYWRkQ2hpbGROb2RlcyhhZGRlZENoaWxkTm9kZXMsIHN0YXJ0SW5kZXgpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCkge1xuICBjb25zdCBkZWxldGVDb3VudCA9IDA7XG5cbiAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZE5vZGUocmVtb3ZlZENoaWxkTm9kZSkge1xuICBsZXQgcmVtb3ZlZENoaWxkTm9kZXM7XG5cbiAgcmVtb3ZlZENoaWxkTm9kZXMgPSBbXG4gICAgcmVtb3ZlZENoaWxkTm9kZVxuICBdO1xuXG4gIHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcblxuICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpIHtcbiAgaWYgKHJlbW92ZWRDaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZW1vdmVkQ2hpbGROb2RlcyA9IFtcbiAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgIF07XG4gIH1cblxuICBjb25zdCByZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlbW92ZWRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAocmVtb3ZlZENoaWxkTm9kZXNMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmaXJzdFJlcGxhY2VkQ2hpbGROb2RlID0gZmlyc3QocmVtb3ZlZENoaWxkTm9kZXMpLFxuICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksIC8vL1xuICAgICAgICBkZWxldGVDb3VudCA9IHJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoLCAvLy9cbiAgICAgICAgYWRkZWRDaGlsZE5vZGVzID0gW107XG5cbiAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG5cbiAgcmV0dXJuIHJlbW92ZWRDaGlsZE5vZGVzO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2hpbGROb2RlKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpIHtcbiAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGVzID0gW1xuICAgIHJlcGxhY2VkQ2hpbGROb2RlXG4gIF07XG5cbiAgdGhpcy5yZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZXMsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlcywgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlcGxhY2VkQ2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgIGZpcnN0UmVwbGFjZWRDaGlsZE5vZGUgPSBmaXJzdChyZXBsYWNlZENoaWxkTm9kZXMpLFxuICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksIC8vL1xuICAgICAgICBkZWxldGVDb3VudCA9IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aDsgLy8vXG5cbiAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCByZXBsYWNlbWVudENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZE5vZGUoYXBwZW5kZWRDaGlsZE5vZGUpIHtcbiAgY29uc3QgYXBwZW5kZWRDaGlsZE5vZGVzID0gW1xuICAgIGFwcGVuZGVkQ2hpbGROb2RlXG4gIF07XG5cbiAgdGhpcy5hcHBlbmRDaGlsZE5vZGVzKGFwcGVuZGVkQ2hpbGROb2Rlcyk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkTm9kZXMoYXBwZW5kZWRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IGFwcGVuZGVkQ2hpbGROb2RlcywgLy8vXG4gICAgICAgIG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgIHN0YXJ0SW5kZXggPSBtdWx0aXBsaWNpdHk7ICAvLy9cblxuICB0aGlzLmFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KTtcbn1cblxuZnVuY3Rpb24gcHJlcGVuZENoaWxkTm9kZShwcmVwZW5kZWRDaGlsZE5vZGUpIHtcbiAgY29uc3QgcHJlcGVuZGVkQ2hpbGROb2RlcyA9IFtcbiAgICBwcmVwZW5kZWRDaGlsZE5vZGVcbiAgXTtcblxuICB0aGlzLnByZXBlbmRDaGlsZE5vZGVzKHByZXBlbmRlZENoaWxkTm9kZXMpO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kQ2hpbGROb2RlcyhwcmVwZW5kZWRDaGlsZE5vZGVzKSB7XG4gIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IHByZXBlbmRlZENoaWxkTm9kZXMsICAvLy9cbiAgICAgICAgc3RhcnRJbmRleCA9IDA7XG5cbiAgdGhpcy5hZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2RlcyA9IFtdKSB7XG4gIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5jaGlsZE5vZGVzLnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCwgLi4uYWRkZWRDaGlsZE5vZGVzKTtcblxuICB0aGlzLnJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gIHRoaXMuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoYWRkZWRDaGlsZE5vZGVzKTtcblxuICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG59XG5cbmZ1bmN0aW9uIHNsaWNlQ2hpbGROb2RlcyhzdGFydEluZGV4LCBlbmRJbmRleCA9IEluZmluaXR5KSB7XG4gIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLmNoaWxkTm9kZXMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuXG5mdW5jdGlvbiBnZXRBbmNlc3Rvck5vZGVzKCkge1xuICBjb25zdCBhbmNlc3Rvck5vZGVzID0gW107XG5cbiAgbGV0IGFuY2VzdG9yTm9kZSA9IHRoaXMucGFyZW50Tm9kZTsgLy8vXG5cbiAgd2hpbGUgKGFuY2VzdG9yTm9kZSAhPT0gbnVsbCkge1xuICAgIGFuY2VzdG9yTm9kZXMucHVzaChhbmNlc3Rvck5vZGUpO1xuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IGFuY2VzdG9yTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYW5jZXN0b3JOb2Rlcztcbn1cblxuZnVuY3Rpb24gbWFwQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSB0aGlzLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5tYXAoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBzb21lQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gIGxldCByZXN1bHQgPSBmYWxzZTtcblxuICBsZXQgaW5kZXggPSAwLFxuICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICB3aGlsZSAoYW5jZXN0b3JOb2RlICE9PSBudWxsKSB7XG4gICAgcmVzdWx0ID0gY2FsbGJhY2soYW5jZXN0b3JOb2RlLCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gbm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZmluZEFuY2VzdG9yTm9kZShjYWxsYmFjaykge1xuICBsZXQgaW5kZXggPSAwLFxuICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICB3aGlsZSAoYW5jZXN0b3JOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2soYW5jZXN0b3JOb2RlLCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gYW5jZXN0b3JOb2RlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgIGFuY2VzdG9yTm9kZSA9IHBhcmVudE5vZGU7ICAvLy9cblxuICAgIGluZGV4Kys7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZlcnlBbmNlc3Rvck5vZGUoY2FsbGJhY2spIHtcbiAgY29uc3QgYW5jZXN0b3JOb2RlcyA9IHRoaXMuZ2V0QW5jZXN0b3JOb2RlcygpO1xuXG4gIHJldHVybiBhbmNlc3Rvck5vZGVzLmV2ZXJ5KGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSB0aGlzLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5maWx0ZXIoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VBbmNlc3Rvck5vZGUoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgcmV0dXJuIGFuY2VzdG9yTm9kZXMucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSB0aGlzLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICBhbmNlc3Rvck5vZGVzLmZvckVhY2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBub2RlTWl4aW5zID0ge1xuICBnZXRNdWx0aXBsaWNpdHksXG4gIG1hcENoaWxkTm9kZSxcbiAgc29tZUNoaWxkTm9kZSxcbiAgZmluZENoaWxkTm9kZSxcbiAgZXZlcnlDaGlsZE5vZGUsXG4gIGZpbHRlckNoaWxkTm9kZSxcbiAgcmVkdWNlQ2hpbGROb2RlLFxuICBmb3JFYWNoQ2hpbGROb2RlLFxuICBmb3J3YXJkc1NvbWVDaGlsZE5vZGUsXG4gIGJhY2t3YXJkc1NvbWVDaGlsZE5vZGUsXG4gIGluZGV4T2ZDaGlsZE5vZGUsXG4gIHNldENoaWxkTm9kZXNQYXJlbnROb2RlLFxuICByZXNldENoaWxkTm9kZXNQYXJlbnROb2RlLFxuICBhZGRDaGlsZE5vZGUsXG4gIGFkZENoaWxkTm9kZXMsXG4gIHJlbW92ZUNoaWxkTm9kZSxcbiAgcmVtb3ZlQ2hpbGROb2RlcyxcbiAgcmVwbGFjZUNoaWxkTm9kZSxcbiAgcmVwbGFjZUNoaWxkTm9kZXMsXG4gIGFwcGVuZENoaWxkTm9kZSxcbiAgYXBwZW5kQ2hpbGROb2RlcyxcbiAgcHJlcGVuZENoaWxkTm9kZSxcbiAgcHJlcGVuZENoaWxkTm9kZXMsXG4gIHNwbGljZUNoaWxkTm9kZXMsXG4gIHNsaWNlQ2hpbGROb2RlcyxcbiAgZ2V0QW5jZXN0b3JOb2RlcyxcbiAgbWFwQW5jZXN0b3JOb2RlLFxuICBzb21lQW5jZXN0b3JOb2RlLFxuICBmaW5kQW5jZXN0b3JOb2RlLFxuICBldmVyeUFuY2VzdG9yTm9kZSxcbiAgZmlsdGVyQW5jZXN0b3JOb2RlLFxuICByZWR1Y2VBbmNlc3Rvck5vZGUsXG4gIGZvckVhY2hBbmNlc3Rvck5vZGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG5vZGVNaXhpbnM7XG4iXSwibmFtZXMiOlsiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImZvcndhcmRzU29tZSIsImJhY2t3YXJkc1NvbWUiLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsIm1hcENoaWxkTm9kZSIsImNhbGxiYWNrIiwibWFwIiwic29tZUNoaWxkTm9kZSIsInNvbWUiLCJmaW5kQ2hpbGROb2RlIiwiZmluZCIsImV2ZXJ5Q2hpbGROb2RlIiwiZXZlcnkiLCJmaWx0ZXJDaGlsZE5vZGUiLCJmaWx0ZXIiLCJyZWR1Y2VDaGlsZE5vZGUiLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2UiLCJmb3JFYWNoQ2hpbGROb2RlIiwiZm9yRWFjaCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJpbmRleE9mQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwiaW5kZXhPZiIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwidW5kZWZpbmVkIiwicGFyZW50Tm9kZSIsInNldFBhcmVudE5vZGUiLCJyZXNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiYWRkQ2hpbGROb2RlIiwiYWRkZWRDaGlsZE5vZGUiLCJzdGFydEluZGV4IiwiYWRkZWRDaGlsZE5vZGVzIiwiYWRkQ2hpbGROb2RlcyIsImRlbGV0ZUNvdW50Iiwic3BsaWNlQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkTm9kZSIsInJlbW92ZWRDaGlsZE5vZGUiLCJyZW1vdmVkQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkTm9kZXMiLCJyZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0UmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlQ2hpbGROb2RlIiwicmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZXMiLCJyZXBsYWNlZENoaWxkTm9kZXMiLCJyZXBsYWNlQ2hpbGROb2RlcyIsInJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aCIsImFwcGVuZENoaWxkTm9kZSIsImFwcGVuZGVkQ2hpbGROb2RlIiwiYXBwZW5kZWRDaGlsZE5vZGVzIiwiYXBwZW5kQ2hpbGROb2RlcyIsInByZXBlbmRDaGlsZE5vZGUiLCJwcmVwZW5kZWRDaGlsZE5vZGUiLCJwcmVwZW5kZWRDaGlsZE5vZGVzIiwicHJlcGVuZENoaWxkTm9kZXMiLCJzcGxpY2UiLCJzbGljZUNoaWxkTm9kZXMiLCJlbmRJbmRleCIsIkluZmluaXR5Iiwic2xpY2UiLCJnZXRBbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JOb2RlcyIsImFuY2VzdG9yTm9kZSIsInB1c2giLCJnZXRQYXJlbnROb2RlIiwibWFwQW5jZXN0b3JOb2RlIiwic29tZUFuY2VzdG9yTm9kZSIsInJlc3VsdCIsImluZGV4Iiwibm9kZSIsImZpbmRBbmNlc3Rvck5vZGUiLCJldmVyeUFuY2VzdG9yTm9kZSIsImZpbHRlckFuY2VzdG9yTm9kZSIsInJlZHVjZUFuY2VzdG9yTm9kZSIsImZvckVhY2hBbmNlc3Rvck5vZGUiLCJub2RlTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEwU0E7OztlQUFBOzs7eUJBeFMrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBUUEsUUFBdUNDLHlCQUFjLENBQXJERCxPQUFPRSxlQUFnQ0QseUJBQWMsQ0FBOUNDLGNBQWNDLGdCQUFrQkYseUJBQWMsQ0FBaENFO0FBRTdCLFNBQVNDO0lBQ1AsSUFBTUMsbUJBQW1CLElBQUksQ0FBQ0MsVUFBVSxDQUFDQyxNQUFNLEVBQ3pDQyxlQUFlSCxrQkFBbUIsR0FBRztJQUUzQyxPQUFPRztBQUNUO0FBRUEsU0FBU0MsYUFBYUMsUUFBUTtJQUFJLE9BQU8sSUFBSSxDQUFDSixVQUFVLENBQUNL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
@@ -254,19 +254,6 @@ var NonTerminalNode = /*#__PURE__*/ function() {
254
254
  return descendantNodes;
255
255
  }
256
256
  },
257
- {
258
- key: "getAncestorNodes",
259
- value: function getAncestorNodes() {
260
- var ancestorNodes = [];
261
- var parentNode = this.parentNode;
262
- while(parentNode !== null){
263
- var ancestorNode = parentNode; ///
264
- ancestorNodes.push(ancestorNode);
265
- parentNode = parentNode.getParentNode();
266
- }
267
- return ancestorNodes;
268
- }
269
- },
270
257
  {
271
258
  key: "getMultiplicity",
272
259
  value: function getMultiplicity() {
@@ -430,4 +417,4 @@ function cloneChildNodes(childNodes) {
430
417
  }
431
418
  Object.assign(NonTerminalNode.prototype, _node.default);
432
419
 
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuY29uc3QgeyBmaXJzdCwgbWF0Y2ggfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBvcGFxdWU6IG9wYXF1ZVNwZWNpYWxTeW1ib2wgLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGdldENoaWxkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BhY2l0eTtcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldFJ1bGVOYW1lKHJ1bGVOYW1lKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICB9XG5cbiAgc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgfVxuXG4gIHNldENoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAwLFxuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gSW5maW5pdHksXG4gICAgICAgICAgYWRkZWRDaGlsZE5vZGVzID0gY2hpbGROb2RlczsgIC8vL1xuXG4gICAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIHNldFByZWNlZGVuY2UocHJlY2VkZW5jZSkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5mb3J3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAoZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5iYWNrd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnROb2RlID0gdGhpczsgLy8vXG5cbiAgICBkZXNjZW5kYW50Tm9kZXMucHVzaChkZXNjZW5kYW50Tm9kZSk7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGU7ICAvLy9cblxuICAgICAgICBub25UZXJtaW5hbE5vZGUuZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGVzO1xuICB9XG5cbiAgZ2V0QW5jZXN0b3JOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gW107XG5cbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMucGFyZW50Tm9kZTtcblxuICAgIHdoaWxlIChwYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICAgIGFuY2VzdG9yTm9kZXMucHVzaChhbmNlc3Rvck5vZGUpO1xuXG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5nZXRQYXJlbnROb2RlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yTm9kZXM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gKG11bHRpcGxpY2l0eSA9PT0gMSk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc0xvd2VyUHJlY2VkZW5jZShydWxlTmFtZSwgcHJlY2VkZW5jZSkge1xuICAgIGxldCBsb3dlclByZWNlZGVuY2U7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gZmlyc3QodGhpcy5jaGlsZE5vZGVzKTtcblxuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmlyc3RDaGlsZE5vZGUuaXNMb3dlclByZWNlZGVuY2UocnVsZU5hbWUsIHByZWNlZGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSAoKHRoaXMucnVsZU5hbWUgPT09IHJ1bGVOYW1lKSAmJiAodGhpcy5wcmVjZWRlbmNlIDwgcHJlY2VkZW5jZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBsb3dlclByZWNlZGVuY2U7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKHRoaXMucnVsZU5hbWUsIHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBpZiAodGhpcy5ydWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlT3BhY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRPcGFjaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gbm9uVGVybWluYWxOb2RlT3BhY2l0eSkge1xuICAgICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlID0gbm9uVGVybWluYWxOb2RlLmdldFByZWNlZGVuY2UoKTtcblxuICAgICAgICAgIGlmIChwcmVjZWRlbmNlID09PSBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2godGhpcy5jaGlsZE5vZGVzLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAoY2hpbGROb2RlLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlID0gY2hpbGROb2RlLm1hdGNoKG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSwgZGVwdGgsIGV4YWN0bHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICByZXdyaXRlKCkge1xuICAgIGNvbnN0IHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSA9IG51bGw7XG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGw7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gbnVsbDtcbiAgfVxuXG4gIGNsb25lKC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IENsYXNzID0gdGhpcy5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBydWxlTmFtZSA9IHRoaXMucnVsZU5hbWUsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIG9wYWNpdHkgPSB0aGlzLm9wYWNpdHksXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZSxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc0FuZE9wYWNpdHkoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcGFjaXR5ID0gY2hpbGROb2RlczsgLy8vXG5cbiAgICAgIGNoaWxkTm9kZXMgPSBydWxlTmFtZTsgIC8vL1xuXG4gICAgICBydWxlTmFtZSA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBOb25UZXJtaW5hbE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cblxuT2JqZWN0LmFzc2lnbihOb25UZXJtaW5hbE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcbiJdLCJuYW1lcyI6WyJOb25UZXJtaW5hbE5vZGUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwibWF0Y2giLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0T3BhY2l0eSIsImdldFByZWNlZGVuY2UiLCJzZXRSdWxlTmFtZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwic2V0T3BhY2l0eSIsInNldFByZWNlZGVuY2UiLCJpc09wYXF1ZSIsImlzU2VtaU9wYXF1ZSIsImlzVHJhbnNwYXJlbnQiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsIm5vZGUiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwiZm9yRWFjaCIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlIiwicHVzaCIsImNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImdldEFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JOb2RlIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzRW1wdHkiLCJlbXB0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzTG93ZXJQcmVjZWRlbmNlIiwibG93ZXJQcmVjZWRlbmNlIiwiZmlyc3RDaGlsZE5vZGUiLCJpc1VucHJlY2VkZW50ZWQiLCJ1bnByZWNlZGVudGVkIiwic29tZSIsImNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSIsImFzUGFyc2VUcmVlIiwibm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIiwiTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIiwiZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2VucyIsInBhcnNlVHJlZSIsImRlcHRoIiwiZXhhY3RseSIsIm1hdGNoZXMiLCJub2RlTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVPcGFjaXR5Iiwibm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwicmV3cml0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNvbnN0cnVjdG9yIiwiY2xvbmVDaGlsZE5vZGVzIiwic2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eSIsInVuZGVmaW5lZCIsIm1hcCIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBV3FCQTs7O3lCQVRVOzJCQUNBOzJEQUVSO3NFQUNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJDLElBQVFDLFFBQWlCQyx5QkFBYyxDQUEvQkQsT0FBT0UsUUFBVUQseUJBQWMsQ0FBeEJDLE9BQ1BDLEFBQVFDLHNCQUE4REMsMkJBQWMsQ0FBcEZGLFFBQThCRyxBQUFZQywwQkFBNEJGLDJCQUFjLENBQXREQztBQUV2QixJQUFBLEFBQU1QLGdDQUFOO2FBQU1BLGdCQUNQUyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFVBQVU7Z0NBRDlDYjtRQUVqQixJQUFJLENBQUNTLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFVBQVUsR0FBR0E7O2tCQU5EYjs7WUFTbkJjLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsUUFBUTtZQUN0Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsVUFBVTtZQUN4Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsVUFBVTtZQUN4Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsT0FBTztZQUNyQjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FB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
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuY29uc3QgeyBmaXJzdCwgbWF0Y2ggfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBvcGFxdWU6IG9wYXF1ZVNwZWNpYWxTeW1ib2wgLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGdldENoaWxkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BhY2l0eTtcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldFJ1bGVOYW1lKHJ1bGVOYW1lKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICB9XG5cbiAgc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgfVxuXG4gIHNldENoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAwLFxuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gSW5maW5pdHksXG4gICAgICAgICAgYWRkZWRDaGlsZE5vZGVzID0gY2hpbGROb2RlczsgIC8vL1xuXG4gICAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIHNldFByZWNlZGVuY2UocHJlY2VkZW5jZSkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5mb3J3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAoZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5iYWNrd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnROb2RlID0gdGhpczsgLy8vXG5cbiAgICBkZXNjZW5kYW50Tm9kZXMucHVzaChkZXNjZW5kYW50Tm9kZSk7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGU7ICAvLy9cblxuICAgICAgICBub25UZXJtaW5hbE5vZGUuZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGVzO1xuICB9XG5cbiAgZ2V0TXVsdGlwbGljaXR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIG11bHRpcGxpY2l0eSA9IGNoaWxkTm9kZXNMZW5ndGg7ICAvLy9cblxuICAgIHJldHVybiBtdWx0aXBsaWNpdHk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IG11bHRpcGxpY2l0eSA9IHRoaXMuZ2V0TXVsdGlwbGljaXR5KCksXG4gICAgICAgICAgZW1wdHkgPSAobXVsdGlwbGljaXR5ID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNMb3dlclByZWNlZGVuY2UocnVsZU5hbWUsIHByZWNlZGVuY2UpIHtcbiAgICBsZXQgbG93ZXJQcmVjZWRlbmNlO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gbnVsbCkge1xuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IEluZmluaXR5KSB7XG4gICAgICBjb25zdCBmaXJzdENoaWxkTm9kZSA9IGZpcnN0KHRoaXMuY2hpbGROb2Rlcyk7XG5cbiAgICAgIGxvd2VyUHJlY2VkZW5jZSA9IGZpcnN0Q2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKHJ1bGVOYW1lLCBwcmVjZWRlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gKCh0aGlzLnJ1bGVOYW1lID09PSBydWxlTmFtZSkgJiYgKHRoaXMucHJlY2VkZW5jZSA8IHByZWNlZGVuY2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG93ZXJQcmVjZWRlbmNlO1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSB7XG4gICAgICB1bnByZWNlZGVudGVkID0gdGhpcy5jaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSA9IGNoaWxkTm9kZS5pc0xvd2VyUHJlY2VkZW5jZSh0aGlzLnJ1bGVOYW1lLCB0aGlzLnByZWNlZGVuY2UpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVMb3dlclByZWNlZGVuY2UpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVucHJlY2VkZW50ZWQ7XG4gIH1cblxuICBhc1BhcnNlVHJlZSh0b2tlbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlID0gTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlLmZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZTsgIC8vL1xuXG4gICAgcmV0dXJuIHBhcnNlVHJlZTtcbiAgfVxuXG4gIG1hdGNoKG5vZGUsIGRlcHRoID0gSW5maW5pdHksIGV4YWN0bHkgPSBmYWxzZSkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgaWYgKHRoaXMucnVsZU5hbWUgPT09IG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkgPSBub25UZXJtaW5hbE5vZGUuZ2V0T3BhY2l0eSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkpIHtcbiAgICAgICAgICBjb25zdCBwcmVjZWRlbmNlID0gdGhpcy5nZXRQcmVjZWRlbmNlKCksXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRQcmVjZWRlbmNlKCk7XG5cbiAgICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZGVwdGgtLTtcblxuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoKHRoaXMuY2hpbGROb2Rlcywgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgKGNoaWxkTm9kZSwgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSA9IGNoaWxkTm9kZS5tYXRjaChub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUsIGRlcHRoLCBleGFjdGx5KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcmV3cml0ZSgpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSBudWxsO1xuXG4gICAgcmV0dXJuIHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIHRoaXMuY2hpbGROb2RlcyA9IG51bGw7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIHByZWNlZGVuY2UgPSB0aGlzLnByZWNlZGVuY2UsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNBbmRPcGFjaXR5KENsYXNzLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG9wYWNpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3BhY2l0eSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG5cbk9iamVjdC5hc3NpZ24oTm9uVGVybWluYWxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsIm1hdGNoIiwib3BhcXVlIiwib3BhcXVlU3BlY2lhbFN5bWJvbCIsInNwZWNpYWxTeW1ib2xzIiwic2VtaU9wYXF1ZSIsInNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIiwicnVsZU5hbWUiLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlcyIsIm9wYWNpdHkiLCJwcmVjZWRlbmNlIiwiZ2V0UnVsZU5hbWUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsImdldE9wYWNpdHkiLCJnZXRQcmVjZWRlbmNlIiwic2V0UnVsZU5hbWUiLCJzZXRQYXJlbnROb2RlIiwic2V0Q2hpbGROb2RlcyIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYWRkZWRDaGlsZE5vZGVzIiwic3BsaWNlQ2hpbGROb2RlcyIsInNldE9wYWNpdHkiLCJzZXRQcmVjZWRlbmNlIiwiaXNPcGFxdWUiLCJpc1NlbWlPcGFxdWUiLCJpc1RyYW5zcGFyZW50IiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwidG9rZW5zIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmb3J3YXJkc1NvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJub2RlIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJiYWNrd2FyZHNTb21lQ2hpbGROb2RlIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VucyIsImZvckVhY2giLCJnZXREZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZSIsInB1c2giLCJjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiaXNFbXB0eSIsImVtcHR5IiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNMb3dlclByZWNlZGVuY2UiLCJsb3dlclByZWNlZGVuY2UiLCJmaXJzdENoaWxkTm9kZSIsImlzVW5wcmVjZWRlbnRlZCIsInVucHJlY2VkZW50ZWQiLCJzb21lIiwiY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlIiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwicmV3cml0dGVuTm9uVGVybWluYWxOb2RlIiwiZGVzdHJveSIsImZvckVhY2hDaGlsZE5vZGUiLCJjbG9uZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsIkNsYXNzIiwiY29uc3RydWN0b3IiLCJjbG9uZUNoaWxkTm9kZXMiLCJzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNBbmRPcGFjaXR5IiwidW5kZWZpbmVkIiwibWFwIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFXcUJBOzs7eUJBVFU7MkJBQ0E7MkRBRVI7c0VBQ2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckMsSUFBUUMsUUFBaUJDLHlCQUFjLENBQS9CRCxPQUFPRSxRQUFVRCx5QkFBYyxDQUF4QkMsT0FDUEMsQUFBUUMsc0JBQThEQywyQkFBYyxDQUFwRkYsUUFBOEJHLEFBQVlDLDBCQUE0QkYsMkJB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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.0.120",
4
+ "version": "23.0.122",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
@@ -16,8 +16,8 @@
16
16
  "devDependencies": {
17
17
  "@swc/core": "^1.5.6",
18
18
  "easy": "^23.0.1",
19
- "easy-layout": "^6.0.235",
20
- "easy-with-style": "^3.0.474",
19
+ "easy-layout": "^6.0.236",
20
+ "easy-with-style": "^3.0.476",
21
21
  "esbuild": "^0.9.6",
22
22
  "express": "^4.17.1",
23
23
  "juxtapose": "^4.0.117",
@@ -172,6 +172,94 @@ function sliceChildNodes(startIndex, endIndex = Infinity) {
172
172
  return childNodes;
173
173
  }
174
174
 
175
+ function getAncestorNodes() {
176
+ const ancestorNodes = [];
177
+
178
+ let ancestorNode = this.parentNode; ///
179
+
180
+ while (ancestorNode !== null) {
181
+ ancestorNodes.push(ancestorNode);
182
+
183
+ const parentNode = ancestorNode.getParentNode();
184
+
185
+ ancestorNode = parentNode; ///
186
+ }
187
+
188
+ return ancestorNodes;
189
+ }
190
+
191
+ function mapAncestorNode(callback) {
192
+ const ancestorNodes = this.getAncestorNodes();
193
+
194
+ return ancestorNodes.map(callback);
195
+ }
196
+
197
+ function someAncestorNode(callback) {
198
+ let result = false;
199
+
200
+ let index = 0,
201
+ ancestorNode = this.parentNode; ///
202
+
203
+ while (ancestorNode !== null) {
204
+ result = callback(ancestorNode, index);
205
+
206
+ if (result) {
207
+ break;
208
+ }
209
+
210
+ const parentNode = node.getParentNode();
211
+
212
+ ancestorNode = parentNode; ///
213
+
214
+ index++;
215
+ }
216
+
217
+ return result;
218
+ }
219
+
220
+ function findAncestorNode(callback) {
221
+ let index = 0,
222
+ ancestorNode = this.parentNode; ///
223
+
224
+ while (ancestorNode !== null) {
225
+ const result = callback(ancestorNode, index);
226
+
227
+ if (result) {
228
+ return ancestorNode;
229
+ }
230
+
231
+ const parentNode = node.getParentNode();
232
+
233
+ ancestorNode = parentNode; ///
234
+
235
+ index++;
236
+ }
237
+ }
238
+
239
+ function everyAncestorNode(callback) {
240
+ const ancestorNodes = this.getAncestorNodes();
241
+
242
+ return ancestorNodes.every(callback);
243
+ }
244
+
245
+ function filterAncestorNode(callback) {
246
+ const ancestorNodes = this.getAncestorNodes();
247
+
248
+ return ancestorNodes.filter(callback);
249
+ }
250
+
251
+ function reduceAncestorNode(callback, initialValue) {
252
+ const ancestorNodes = this.getAncestorNodes();
253
+
254
+ return ancestorNodes.reduce(callback, initialValue);
255
+ }
256
+
257
+ function forEachAncestorNode(callback) {
258
+ const ancestorNodes = this.getAncestorNodes();
259
+
260
+ ancestorNodes.forEach(callback);
261
+ }
262
+
175
263
  const nodeMixins = {
176
264
  getMultiplicity,
177
265
  mapChildNode,
@@ -197,7 +285,15 @@ const nodeMixins = {
197
285
  prependChildNode,
198
286
  prependChildNodes,
199
287
  spliceChildNodes,
200
- sliceChildNodes
288
+ sliceChildNodes,
289
+ getAncestorNodes,
290
+ mapAncestorNode,
291
+ someAncestorNode,
292
+ findAncestorNode,
293
+ everyAncestorNode,
294
+ filterAncestorNode,
295
+ reduceAncestorNode,
296
+ forEachAncestorNode
201
297
  };
202
298
 
203
299
  export default nodeMixins;
@@ -150,22 +150,6 @@ export default class NonTerminalNode {
150
150
  return descendantNodes;
151
151
  }
152
152
 
153
- getAncestorNodes() {
154
- const ancestorNodes = [];
155
-
156
- let parentNode = this.parentNode;
157
-
158
- while (parentNode !== null) {
159
- const ancestorNode = parentNode; ///
160
-
161
- ancestorNodes.push(ancestorNode);
162
-
163
- parentNode = parentNode.getParentNode();
164
- }
165
-
166
- return ancestorNodes;
167
- }
168
-
169
153
  getMultiplicity() {
170
154
  const childNodesLength = this.childNodes.length,
171
155
  multiplicity = childNodesLength; ///