@wavemaker/app-ng-runtime 11.5.0-next.24727 → 11.5.0-next.24729

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.
@@ -1767,6 +1767,7 @@
1767
1767
  return v;
1768
1768
  }
1769
1769
  processMethodCall() {
1770
+ var _a;
1770
1771
  const ast = this.cAst;
1771
1772
  const stmts = this.cStmts;
1772
1773
  const _args = [];
@@ -1775,8 +1776,7 @@
1775
1776
  }
1776
1777
  const fn = this.build(ast.receiver, stmts);
1777
1778
  const v = this.createVar();
1778
- const isImplicitReceiver = ast.receiver instanceof compiler.ImplicitReceiver;
1779
- stmts[stmts.length - 1];
1779
+ const isImplicitReceiver = ast.receiver instanceof compiler.ImplicitReceiver || (ast.receiver instanceof compiler.PropertyRead && ((_a = ast.receiver) === null || _a === void 0 ? void 0 : _a.receiver) instanceof compiler.ImplicitReceiver);
1780
1780
  const context = stmts[stmts.length - 1].split('&&')[0].split('=')[1];
1781
1781
  stmts.push(`${v}= ${fn}&&${fn}${isImplicitReceiver ? '.bind(_ctx)' : `.bind(${context})`}(${_args.join(',')})`);
1782
1782
  return v;
@@ -230,8 +230,7 @@ class ASTCompiler {
230
230
  }
231
231
  const fn = this.build(ast.receiver, stmts);
232
232
  const v = this.createVar();
233
- const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver;
234
- const exp = stmts[stmts.length - 1];
233
+ const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver || (ast.receiver instanceof PropertyRead && ast.receiver?.receiver instanceof ImplicitReceiver);
235
234
  const context = stmts[stmts.length - 1].split('&&')[0].split('=')[1];
236
235
  stmts.push(`${v}= ${fn}&&${fn}${isImplicitReceiver ? '.bind(_ctx)' : `.bind(${context})`}(${_args.join(',')})`);
237
236
  return v;
@@ -580,4 +579,4 @@ export const getFnForBindExpr = (expr) => {
580
579
  export const getFnForEventExpr = (expr) => {
581
580
  return fnExecutor(expr, ExpressionType.Action);
582
581
  };
583
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9leHByZXNzaW9uLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBRVgsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLEVBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUl0QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDaEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksU0FBUyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFHLEVBQUU7UUFDVCxLQUFLLEVBQUU7WUFDSCxTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FB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QUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQjtRQUVELFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RCxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztLQUN4QztTQUFNO1FBQ0gsSUFBSSxRQUFRLEtBQUssY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUNyQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDdEM7S0FDSjtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNyQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIExleGVyLFxuICAgIFBhcnNlcixcbiAgICBCaW5kaW5nUGlwZSxcbiAgICBSZWFkUHJvcEV4cHIsXG4gICAgUHJvcGVydHlSZWFkLFxuICAgIEltcGxpY2l0UmVjZWl2ZXIsXG4gICAgTGl0ZXJhbFByaW1pdGl2ZSxcbiAgICBDYWxsLFxuICAgIENvbmRpdGlvbmFsLFxuICAgIEJpbmFyeSxcbiAgICBQcmVmaXhOb3QsXG4gICAgS2V5ZWRSZWFkLFxuICAgIExpdGVyYWxNYXAsXG4gICAgTGl0ZXJhbEFycmF5LFxuICAgIENoYWluLFxuICAgIFByb3BlcnR5V3JpdGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbmNvbnN0IGlzRGVmID0gdiA9PiB2ICE9PSB2b2lkIDA7XG5jb25zdCBpZkRlZiA9ICh2LCBkKSA9PiB2ID09PSB2b2lkIDAgPyBkIDogdjtcbmNvbnN0IHBsdXMgPSAoYSwgYikgPT4gdm9pZCAwID09PSBhID8gYiA6IHZvaWQgMCA9PT0gYiA/IGEgOiBhICsgYjtcbmNvbnN0IG1pbnVzID0gKGEsIGIpID0+IGlmRGVmKGEsIDApIC0gaWZEZWYoYiwgMCk7XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbmV4cG9ydCB0eXBlIFBhcnNlRXhwclJlc3VsdCA9IChkYXRhPzogYW55LCBsb2NhbHM/OiBhbnkpID0+IGFueTtcblxuY29uc3QgZXhwckZuQ2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCBldmVudEZuQ2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCBwdXJlUGlwZXMgPSBuZXcgTWFwKCk7XG5cbmNvbnN0IHByaW1pdGl2ZUVxdWFscyA9IChhLCBiKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYSAhPT0gYSAmJiBiICE9PSBiKSB7IC8vIE5hTiBjYXNlXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gYSA9PT0gYjtcbn07XG5cbmNvbnN0IGRldGVjdENoYW5nZXMgPSAob3YsIG52KSA9PiB7XG4gICAgY29uc3QgbGVuID0gbnYubGVuZ3RoO1xuICAgIGxldCBoYXNDaGFuZ2UgPSBsZW4gPiAxMDtcbiAgICBzd2l0Y2ggKGxlbikge1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls5XSwgbnZbOV0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzhdLCBudls4XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbN10sIG52WzddKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls2XSwgbnZbNl0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzVdLCBudls1XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbNF0sIG52WzRdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdlszXSwgbnZbM10pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzJdLCBudlsyXSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbMV0sIG52WzFdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdlswXSwgbnZbMF0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzQ2hhbmdlO1xufTtcblxuY29uc3QgZ2V0UHVyZVBpcGVWYWwgPSAocGlwZSwgY2FjaGUsIGlkZW50aWZpZXIsIC4uLmFyZ3MpID0+IHtcbiAgICBsZXQgbGFzdFJlc3VsdCA9IGNhY2hlLmdldChpZGVudGlmaWVyKTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmIChsYXN0UmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGlzTW9kaWZpZWQgPSBkZXRlY3RDaGFuZ2VzKGxhc3RSZXN1bHQuYXJncywgYXJncyk7XG4gICAgICAgIGlmICghaXNNb2RpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQucmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IHBpcGUudHJhbnNmb3JtKC4uLmFyZ3MpO1xuICAgIGxhc3RSZXN1bHQgPSB7YXJncywgcmVzdWx0fTtcbiAgICBjYWNoZS5zZXQoaWRlbnRpZmllciwgbGFzdFJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IFNUUl9FU0NBUEVfUkVHRVggPSAvW14gYS16QS1aMC05XS9nO1xuXG5jb25zdCBzdHJpbmdFc2NhcGVGbiA9IHN0ciA9PiB7XG4gICAgcmV0dXJuICdcXFxcdScgKyAoJzAwMDAnICsgc3RyLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7XG59O1xuXG5jbGFzcyBBU1RDb21waWxlciB7XG4gICAgYXN0OyAvLyBhc3QgdG8gYmUgY29tcGlsZWRcbiAgICBkZWNsYXJhdGlvbnM7IC8vIHZhcmlhYmxlIG5hbWVzXG4gICAgc3RtdHM7IC8vIGZ1bmN0aW9uIGJvZHkgc3RhdGVtZW50c1xuICAgIHBpcGVzOyAvLyB1c2VkIHBpcGVzXG4gICAgdklkeDsgLy8gdmFyaWFibGUgbmFtZSBpbmRleFxuICAgIGNBc3Q7IC8vIGN1cnJlbnQgQVNUIG5vZGUgaW4gdGhlIHByb2Nlc3NcbiAgICBjU3RtdHM7XG4gICAgcGlwZU5hbWVWc0lzUHVyZU1hcDtcbiAgICBleHByVHlwZTogRXhwcmVzc2lvblR5cGU7XG5cbiAgICBjb25zdHJ1Y3Rvcihhc3QsIGV4cHJUeXBlLCBwaXBlTmFtZVZzSXNQdXJlTWFwPykge1xuICAgICAgICB0aGlzLmFzdCA9IGFzdDtcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5zdG10cyA9IFtdO1xuICAgICAgICB0aGlzLnBpcGVzID0gW107XG4gICAgICAgIHRoaXMudklkeCA9IDA7XG4gICAgICAgIHRoaXMuZXhwclR5cGUgPSBleHByVHlwZTtcbiAgICAgICAgdGhpcy5waXBlTmFtZVZzSXNQdXJlTWFwID0gcGlwZU5hbWVWc0lzUHVyZU1hcDtcbiAgICB9XG5cbiAgICBjcmVhdGVWYXIoKSB7XG4gICAgICAgIGNvbnN0IHYgPSBgdiR7dGhpcy52SWR4Kyt9YDtcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbnMucHVzaCh2KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0ltcGxpY2l0UmVjZWl2ZXIoKSB7XG4gICAgICAgIHJldHVybiAnY3R4JztcbiAgICB9XG5cbiAgICBwcm9jZXNzTGl0ZXJhbFByaW1pdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICByZXR1cm4gdHlwZW9mIChhc3QudmFsdWUpID09PSAnc3RyaW5nJyA/IGBcIiR7YXN0LnZhbHVlLnJlcGxhY2UoL1wiL2csICdcXFwiJykucmVwbGFjZShTVFJfRVNDQVBFX1JFR0VYLCBzdHJpbmdFc2NhcGVGbil9XCJgIDogYXN0LnZhbHVlO1xuICAgIH1cblxuICAgIHByb2Nlc3NMaXRlcmFsQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFzdC5leHByZXNzaW9ucykge1xuICAgICAgICAgICAgcy5wdXNoKHRoaXMuYnVpbGQoaXRlbSwgc3RtdHMpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PVske3Muam9pbignLCcpfV1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0xpdGVyYWxNYXAoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF92YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBfdmFsdWUgb2YgYXN0LnZhbHVlcykge1xuICAgICAgICAgICAgX3ZhbHVlcy5wdXNoKHRoaXMuYnVpbGQoX3ZhbHVlLCBzdG10cykpO1xuICAgICAgICB9XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09eyR7YXN0LmtleXMubWFwKChrLCBpKSA9PiBgJyR7ay5rZXl9Jzoke192YWx1ZXNbaV19YCl9fWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzUHJvcGVydHlSZWFkKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgc3RtdHMucHVzaChgJHt2fT0ke3J9JiYke3J9LiR7YXN0Lm5hbWV9YCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NLZXllZFJlYWQoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgayA9IHRoaXMuYnVpbGQoYXN0LmtleSwgc3RtdHMpO1xuICAgICAgICBjb25zdCBvID0gdGhpcy5idWlsZChhc3QucmVjZWl2ZXIsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtvfSYmJHtvfVske2t9XWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzUHJlZml4Tm90KCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5leHByZXNzaW9uLCBzdG10cyk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7cn09ISR7cn1gKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgaGFuZGxlQmluYXJ5UGx1c19NaW51cygpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5idWlsZChhc3QubGVmdCwgc3RtdHMpO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmlnaHQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IG0gPSBhc3Qub3BlcmF0aW9uID09PSAnKycgPyAnX3BsdXMnIDogJ19taW51cyc7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHttfSgke2x9LCR7cn0pYCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIGhhbmRsZUJpbmFyeUFORF9PUigpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBfczEgPSBbXTtcbiAgICAgICAgY29uc3QgX3NsID0gW107XG4gICAgICAgIGNvbnN0IF9zciA9IFtdO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5idWlsZChhc3QubGVmdCwgX3NsKTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuYnVpbGQoYXN0LnJpZ2h0LCBfc3IpO1xuXG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuXG4gICAgICAgIGlmIChhc3Qub3BlcmF0aW9uID09PSAnJiYnKSB7XG4gICAgICAgICAgICBfczEucHVzaChcbiAgICAgICAgICAgICAgICBfc2wuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT1mYWxzZWAsXG4gICAgICAgICAgICAgICAgYDtpZigke2x9KXtgLFxuICAgICAgICAgICAgICAgIF9zci5qb2luKCc7JyksXG4gICAgICAgICAgICAgICAgYDske3Z9PSR7cn07YCxcbiAgICAgICAgICAgICAgICBgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfczEucHVzaChcbiAgICAgICAgICAgICAgICBfc2wuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke2x9YCxcbiAgICAgICAgICAgICAgICBgO2lmKCEke2x9KXtgLFxuICAgICAgICAgICAgICAgIF9zci5qb2luKCc7JyksXG4gICAgICAgICAgICAgICAgYDske3Z9PSR7cn07YCxcbiAgICAgICAgICAgICAgICBgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc3RtdHMucHVzaChfczEuam9pbignJykpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBoYW5kbGVCaW5hcnlEZWZhdWx0KCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IGwgPSB0aGlzLmJ1aWxkKGFzdC5sZWZ0LCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5yaWdodCwgc3RtdHMpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgc3RtdHMucHVzaChgJHt2fT0ke2x9JHthc3Qub3BlcmF0aW9ufSR7cn1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0JpbmFyeSgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBvcCA9IGFzdC5vcGVyYXRpb247XG4gICAgICAgIGlmIChvcCA9PT0gJysnIHx8IG9wID09PSAnLScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJpbmFyeVBsdXNfTWludXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3AgPT09ICcmJicgfHwgb3AgPT09ICd8fCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJpbmFyeUFORF9PUigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQmluYXJ5RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByb2Nlc3NDb25kaXRpb25hbCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLmJ1aWxkKGFzdC5jb25kaXRpb24sIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF9zMSA9IFtdO1xuICAgICAgICBjb25zdCBfczIgPSBbXTtcbiAgICAgICAgY29uc3QgX3MzID0gW107XG4gICAgICAgIGNvbnN0IHRydWVFeHAgPSB0aGlzLmJ1aWxkKGFzdC50cnVlRXhwLCBfczIpO1xuICAgICAgICBjb25zdCBmYWxzZUV4cCA9IHRoaXMuYnVpbGQoYXN0LmZhbHNlRXhwLCBfczMpO1xuXG4gICAgICAgIF9zMS5wdXNoKFxuICAgICAgICAgICAgYGlmKCR7Y29uZGl0aW9ufSl7YCxcbiAgICAgICAgICAgIF9zMi5qb2luKCc7JyksXG4gICAgICAgICAgICBgOyR7dn09JHt0cnVlRXhwfTtgLFxuICAgICAgICAgICAgYH1lbHNle2AsXG4gICAgICAgICAgICBfczMuam9pbignOycpLFxuICAgICAgICAgICAgYDske3Z9PSR7ZmFsc2VFeHB9O2AsXG4gICAgICAgICAgICBgfWBcbiAgICAgICAgKTtcblxuICAgICAgICBzdG10cy5wdXNoKF9zMS5qb2luKCcgJykpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzTWV0aG9kQ2FsbCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBfYXJncyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhc3QuYXJncykge1xuICAgICAgICAgICAgX2FyZ3MucHVzaCh0aGlzLmJ1aWxkKGFyZywgc3RtdHMpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbiA9IHRoaXMuYnVpbGQoYXN0LnJlY2VpdmVyLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBpc0ltcGxpY2l0UmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyO1xuICAgICAgICBjb25zdCBleHAgPSBzdG10c1tzdG10cy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHN0bXRzW3N0bXRzLmxlbmd0aCAtIDFdLnNwbGl0KCcmJicpWzBdLnNwbGl0KCc9JylbMV07XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09ICR7Zm59JiYke2ZufSR7aXNJbXBsaWNpdFJlY2VpdmVyID8gJy5iaW5kKF9jdHgpJyA6IGAuYmluZCgke2NvbnRleHR9KWB9KCR7X2FyZ3Muam9pbignLCcpfSlgKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0NoYWluKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIHJldHVybiBhc3QuZXhwcmVzc2lvbnMubWFwKGUgPT4gdGhpcy5idWlsZChlKSkuam9pbignOycpO1xuICAgIH1cblxuICAgIHByb2Nlc3NQcm9wZXJ0eVdyaXRlKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGxldCByZWNlaXZlciwgbGhzO1xuICAgICAgICBpZiAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlcikge1xuICAgICAgICAgICAgbGhzID0gYF9jdHguJHthc3QubmFtZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICAgICAgbGhzID0gYCR7cmVjZWl2ZXJ9JHtyZWNlaXZlci5sZW5ndGggPyAnLicgOiAnJ30ke2FzdC5uYW1lfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByaHMgPSB0aGlzLmJ1aWxkKGFzdC52YWx1ZSwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke2xoc309JHtyaHN9YCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1BpcGUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF9hcmdzID0gW107XG4gICAgICAgIGNvbnN0IF9zMSA9IFtdO1xuICAgICAgICBjb25zdCBfczIgPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gdGhpcy5idWlsZChhc3QuZXhwLCBzdG10cyk7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFzdC5hcmdzKSB7XG4gICAgICAgICAgICBfYXJncy5wdXNoKHRoaXMuYnVpbGQoYXJnLCBfczIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHAgPSBgX3Ake3RoaXMucGlwZXMubGVuZ3RofWA7XG4gICAgICAgIHRoaXMucGlwZXMucHVzaChbYXN0Lm5hbWUsIHBdKTtcblxuICAgICAgICBfYXJncy51bnNoaWZ0KGV4cCk7XG5cbiAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICBfczIubGVuZ3RoID8gX3MyLmpvaW4oJzsnKSArICc7JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5waXBlTmFtZVZzSXNQdXJlTWFwLmdldChhc3QubmFtZSkgPyBgJHt0fT1nZXRQUFZhbCgke3B9LF9wcGMsXCIke3B9XCIsJHtfYXJnc30pYCA6IGAke3R9PSR7cH0udHJhbnNmb3JtKCR7X2FyZ3N9KWBcbiAgICAgICAgKTtcblxuICAgICAgICBzdG10cy5wdXNoKF9zMS5qb2luKCcnKSk7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIGJ1aWxkKGFzdCwgY1N0bXRzPykge1xuICAgICAgICB0aGlzLmNBc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuY1N0bXRzID0gY1N0bXRzIHx8IHRoaXMuc3RtdHM7XG5cbiAgICAgICAgaWYgKGFzdCBpbnN0YW5jZW9mIEltcGxpY2l0UmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgTGl0ZXJhbFByaW1pdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaXRlcmFsQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGl0ZXJhbE1hcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5UmVhZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Byb3BlcnR5UmVhZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5V3JpdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NQcm9wZXJ0eVdyaXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgS2V5ZWRSZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzS2V5ZWRSZWFkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgUHJlZml4Tm90KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUHJlZml4Tm90KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQmluYXJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQmluYXJ5KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb25kaXRpb25hbCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIENhbGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NNZXRob2RDYWxsKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ2hhaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDaGFpbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIEJpbmRpbmdQaXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUGlwZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0ZW5kQ3R4V2l0aExvY2FscygpIHtcbiAgICAgICAgY29uc3QgdjEgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICB0aGlzLnN0bXRzLnB1c2goXG4gICAgICAgICAgICBgJHt2MX09T2JqZWN0LmFzc2lnbih7fSwgbG9jYWxzKWAsXG4gICAgICAgICAgICBgT2JqZWN0LnNldFByb3RvdHlwZU9mKCR7djF9LCBfY3R4KWAsXG4gICAgICAgICAgICBgY3R4PSR7djF9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZuQm9keSgpIHtcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbnMucHVzaCgnY3R4Jyk7XG4gICAgICAgIHJldHVybiAnXCJ1c2Ugc3RyaWN0XCI7XFxudmFyICcgKyB0aGlzLmRlY2xhcmF0aW9ucy5qb2luKCcsJykgKyAnO1xcbicgKyB0aGlzLnN0bXRzLmpvaW4oJzsnKTtcbiAgICB9XG5cbiAgICBmbkFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbJ19wbHVzJywgJ19taW51cycsICdfaXNEZWYnXTtcblxuICAgICAgICBpZiAodGhpcy5leHByVHlwZSA9PT0gRXhwcmVzc2lvblR5cGUuQmluZGluZykge1xuICAgICAgICAgICAgYXJncy5wdXNoKCdnZXRQUFZhbCcsICdfcHBjJyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFssIHBpcGVWYXJdIG9mIHRoaXMucGlwZXMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGlwZVZhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzLnB1c2goJ19jdHgnLCAnbG9jYWxzJyk7XG5cbiAgICAgICAgcmV0dXJuIGFyZ3Muam9pbignLCcpO1xuICAgIH1cblxuICAgIGFkZFJldHVyblN0bXQocmVzdWx0KSB7XG4gICAgICAgIC8vIGlmICh0aGlzLmV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnN0bXRzLnB1c2goYHJldHVybiAke3Jlc3VsdH07YCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjbGVhbnVwKCkge1xuICAgICAgICB0aGlzLmFzdCA9IHRoaXMuY0FzdCA9IHRoaXMuc3RtdHMgPSB0aGlzLmNTdG10cyA9IHRoaXMuZGVjbGFyYXRpb25zID0gdGhpcy5waXBlcyA9IHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb21waWxlKGRlZk9ubHk/KSB7XG4gICAgICAgIHRoaXMuZXh0ZW5kQ3R4V2l0aExvY2FscygpO1xuICAgICAgICB0aGlzLmFkZFJldHVyblN0bXQodGhpcy5idWlsZCh0aGlzLmFzdCkpO1xuICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHtmbkJvZHk6IHRoaXMuZm5Cb2R5KCksIGZuQXJnczogdGhpcy5mbkFyZ3MoKSwgcGlwZXM6IHRoaXMucGlwZXN9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKHRoaXMuZm5BcmdzKCksIHRoaXMuZm5Cb2R5KCkpO1xuICAgICAgICBsZXQgYm91bmRGbjtcbiAgICAgICAgaWYgKHRoaXMuZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgcGx1cywgbWludXMsIGlzRGVmLCBnZXRQdXJlUGlwZVZhbCk7XG4gICAgICAgICAgICBib3VuZEZuLnVzZWRQaXBlcyA9IHRoaXMucGlwZXMuc2xpY2UoMCk7IC8vIGNsb25lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICAgICAgcmV0dXJuIGJvdW5kRm47XG4gICAgfVxufVxuXG5jb25zdCBudWxsUGlwZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IG5vb3BcbiAgICB9O1xufTtcblxubGV0IF9jc3BFbmFibGVkO1xuY29uc3QgaXNDU1BFbmFibGVkID0gKCkgPT4ge1xuICAgIGlmKHR5cGVvZiBfY3NwRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9jc3BFbmFibGVkO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oKTtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gX2NzcEVuYWJsZWQ7XG59O1xuXG5sZXQgcGlwZVByb3ZpZGVyO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGlwZVByb3ZpZGVyKF9waXBlUHJvdmlkZXIpIHtcbiAgICBwaXBlUHJvdmlkZXIgPSBfcGlwZVByb3ZpZGVyO1xufVxuXG5lbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBCaW5kaW5nLFxuICAgIEFjdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXhwcihleHByOiBzdHJpbmcsIGRlZk9ubHk/OiBib29sZWFuKTogUGFyc2VFeHByUmVzdWx0IHtcblxuICAgIGlmICghcGlwZVByb3ZpZGVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXQgcGlwZSBwcm92aWRlcicpO1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIChleHByKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgZXhwciA9IGV4cHIudHJpbSgpO1xuXG4gICAgaWYgKGV4cHIuZW5kc1dpdGgoJzsnKSkge1xuICAgICAgICBleHByID0gZXhwci5zbGljZSgwLCAtMSk7IC8vIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgfVxuXG4gICAgaWYgKCFleHByLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSBleHByRm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGxldCBib3VuZEZuO1xuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBib3VuZEZuID0gZ2V0Rm5Gb3JCaW5kRXhwcihleHByKTtcbiAgICB9XG5cbiAgICAvLyBmYWxsYmFjayB0byBnZW5lcmF0ZSBmdW5jdGlvbiBpbiBydW50aW1lLiBUaGlzIHdpbGwgYnJlYWsgaWYgQ1NQIGlzIGVuYWJsZWRcbiAgICBpZiAoIWJvdW5kRm4pIHtcbiAgICAgICAgLy8gSWYgQ1NQIGVuYWJsZWQsIGZ1bmN0aW9uIGRlZiBub3QgZm91bmQgZnJvbSB0aGUgZ2VuZXJhdGVkIGZuIGV4cHJlc3Npb25zIGZvciB0aGUgcGFnZS5cbiAgICAgICAgLy8gSGFuZGxlIGJpbmQgZXhwcmVzc2lvbnMgdXNlZCBpbnRlcm5hbGx5IGluc2lkZSBXTSBjb21wb25lbnRzLiBlLmcuIHdtQW5jaG9yIHVzZWQgaW5zaWRlIG5hdi5jb21wLmh0bWxcbiAgICAgICAgaWYgKGlzQ1NQRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZnVuY3Rpb24oY3R4LCBsb2NhbHMpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgaW50ZXJuYWwgYmluZGluZ3MgZm9yIHdtIHdpZGdldHMgdXNlZCBpbnNpZGUgYSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8uZ2V0KF9jdHgsIGV4cHIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGFzdCA9IHBhcnNlci5wYXJzZUJpbmRpbmcoZXhwciwgJycsMCk7XG5cbiAgICAgICAgICAgIGlmIChhc3QuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZuID0gbm9vcDtcbiAgICAgICAgICAgICAgICBib3VuZEZuID0gZm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVOYW1lVnNJc1B1cmVNYXAgPSBwaXBlUHJvdmlkZXIuZ2V0UGlwZU5hbWVWc0lzUHVyZU1hcCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzdENvbXBpbGVyID0gbmV3IEFTVENvbXBpbGVyKGFzdC5hc3QsIEV4cHJlc3Npb25UeXBlLkJpbmRpbmcsIHBpcGVOYW1lVnNJc1B1cmVNYXApO1xuICAgICAgICAgICAgICAgIGZuID0gYXN0Q29tcGlsZXIuY29tcGlsZShkZWZPbmx5KTtcbiAgICAgICAgICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLnVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiBmbi51c2VkUGlwZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgLi4ucGlwZUFyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHByRm5DYWNoZS5zZXQoZXhwciwgYm91bmRGbik7XG5cbiAgICByZXR1cm4gYm91bmRGbjtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IoZXhwciwgY3R4LCBsb2NhbHMpIHtcbiAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG5cbiAgICBsZXQgcGFydHMgPSBleHByLnNwbGl0KCcoJyk7XG4gICAgbGV0IGZuTmFtZSA9IHBhcnRzWzBdO1xuICAgIGxldCBjb21wdXRlZEZuID0gXy5nZXQoY3R4LCBmbk5hbWUpO1xuXG4gICAgaWYgKGNvbXB1dGVkRm4pIHtcbiAgICAgICAgbGV0IGFyZ3MgPSBwYXJ0c1sxXS5yZXBsYWNlKCcpJywgJycpO1xuICAgICAgICBhcmdzID0gYXJncy5zcGxpdCgnLCcpO1xuICAgICAgICBsZXQgY29tcHV0ZWRBcmdzID0gW107XG4gICAgICAgIGFyZ3MuZm9yRWFjaCgoYXJnKT0+IHtcbiAgICAgICAgICAgIGFyZyA9IGFyZyAmJiBhcmcudHJpbSgpO1xuICAgICAgICAgICAgY29tcHV0ZWRBcmdzLnB1c2goXy5nZXQoX2N0eCwgYXJnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWRGbi5iaW5kKF9jdHgpKC4uLmNvbXB1dGVkQXJncyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXZlbnQoZXhwciwgZGVmT25seT8pOiBQYXJzZUV4cHJSZXN1bHQge1xuICAgIGlmICh0eXBlb2YgKGV4cHIpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBleHByID0gZXhwci50cmltKCk7XG5cbiAgICBpZiAoIWV4cHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGxldCBmbiA9IGV2ZW50Rm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBmbiA9IGdldEZuRm9yRXZlbnRFeHByKGV4cHIpO1xuICAgIH1cblxuICAgIC8vIGZhbGxiYWNrIHRvIGdlbmVyYXRlIGZ1bmN0aW9uIGluIHJ1bnRpbWUuIFRoaXMgd2lsbCBicmVhayBpZiBDU1AgaXMgZW5hYmxlZFxuICAgIGlmKCFmbikge1xuICAgICAgICBpZiAoaXNDU1BFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGZuID0gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IuYmluZCh1bmRlZmluZWQsIGV4cHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihuZXcgTGV4ZXIpO1xuICAgICAgICAgICAgY29uc3QgYXN0ID0gcGFyc2VyLnBhcnNlQWN0aW9uKGV4cHIsIGZhbHNlLCAnJywwKTtcblxuICAgICAgICAgICAgaWYgKGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhc3RDb21waWxlciA9IG5ldyBBU1RDb21waWxlcihhc3QuYXN0LCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xuICAgICAgICAgICAgZm4gPSBhc3RDb21waWxlci5jb21waWxlKGRlZk9ubHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZlbnRGbkNhY2hlLnNldChleHByLCBmbik7XG4gICAgcmV0dXJuIGZuO1xufVxuXG5jb25zdCBmbk5hbWVNYXAgPSBuZXcgTWFwKCk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlckZuQnlFeHByID0gKGV4cHIsIGZuLCB1c2VkUGlwZXM/KSA9PiB7XG4gICAgZm4udXNlZFBpcGVzID0gdXNlZFBpcGVzIHx8IFtdO1xuICAgIGZuTmFtZU1hcC5zZXQoZXhwciwgZm4pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm5CeUV4cHIgPSAoZXhwcikgPT4gZm5OYW1lTWFwLmdldChleHByKVxuXG5jb25zdCBmbkV4ZWN1dG9yID0gKGV4cHIsIGV4cHJUeXBlKSA9PiB7XG4gICAgbGV0IGZuID0gZ2V0Rm5CeUV4cHIoZXhwcik7XG4gICAgaWYgKCFmbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVzZWRQaXBlcyA9IGZuLnVzZWRQaXBlcyB8fCBbXTtcblxuICAgIGlmKGV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZiwgZ2V0UHVyZVBpcGVWYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgfVxuXG4gICAgaWYgKHVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiB1c2VkUGlwZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIC4uLnBpcGVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm47XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGbkZvckJpbmRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZuRm9yRXZlbnRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xufVxuIl19
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9leHByZXNzaW9uLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBRVgsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLEVBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUl0QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDaEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksU0FBUyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFHLEVBQUU7UUFDVCxLQUFLLEVBQUU7WUFDSCxTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FB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QUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDL0I7UUFFRCxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDeEM7U0FBTTtRQUNILElBQUksUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDckMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3RDO0tBQ0o7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDckMsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ3RDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBMZXhlcixcbiAgICBQYXJzZXIsXG4gICAgQmluZGluZ1BpcGUsXG4gICAgUmVhZFByb3BFeHByLFxuICAgIFByb3BlcnR5UmVhZCxcbiAgICBJbXBsaWNpdFJlY2VpdmVyLFxuICAgIExpdGVyYWxQcmltaXRpdmUsXG4gICAgQ2FsbCxcbiAgICBDb25kaXRpb25hbCxcbiAgICBCaW5hcnksXG4gICAgUHJlZml4Tm90LFxuICAgIEtleWVkUmVhZCxcbiAgICBMaXRlcmFsTWFwLFxuICAgIExpdGVyYWxBcnJheSxcbiAgICBDaGFpbixcbiAgICBQcm9wZXJ0eVdyaXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBpc0RlZiA9IHYgPT4gdiAhPT0gdm9pZCAwO1xuY29uc3QgaWZEZWYgPSAodiwgZCkgPT4gdiA9PT0gdm9pZCAwID8gZCA6IHY7XG5jb25zdCBwbHVzID0gKGEsIGIpID0+IHZvaWQgMCA9PT0gYSA/IGIgOiB2b2lkIDAgPT09IGIgPyBhIDogYSArIGI7XG5jb25zdCBtaW51cyA9IChhLCBiKSA9PiBpZkRlZihhLCAwKSAtIGlmRGVmKGIsIDApO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgdHlwZSBQYXJzZUV4cHJSZXN1bHQgPSAoZGF0YT86IGFueSwgbG9jYWxzPzogYW55KSA9PiBhbnk7XG5cbmNvbnN0IGV4cHJGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgZXZlbnRGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgcHVyZVBpcGVzID0gbmV3IE1hcCgpO1xuXG5jb25zdCBwcmltaXRpdmVFcXVhbHMgPSAoYSwgYikgPT4ge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgeyAvLyBOYU4gY2FzZVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGEgPT09IGI7XG59O1xuXG5jb25zdCBkZXRlY3RDaGFuZ2VzID0gKG92LCBudikgPT4ge1xuICAgIGNvbnN0IGxlbiA9IG52Lmxlbmd0aDtcbiAgICBsZXQgaGFzQ2hhbmdlID0gbGVuID4gMTA7XG4gICAgc3dpdGNoIChsZW4pIHtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbOV0sIG52WzldKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls4XSwgbnZbOF0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzddLCBudls3XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbNl0sIG52WzZdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls1XSwgbnZbNV0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzRdLCBudls0XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbM10sIG52WzNdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdlsyXSwgbnZbMl0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzFdLCBudlsxXSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbMF0sIG52WzBdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZTtcbn07XG5cbmNvbnN0IGdldFB1cmVQaXBlVmFsID0gKHBpcGUsIGNhY2hlLCBpZGVudGlmaWVyLCAuLi5hcmdzKSA9PiB7XG4gICAgbGV0IGxhc3RSZXN1bHQgPSBjYWNoZS5nZXQoaWRlbnRpZmllcik7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAobGFzdFJlc3VsdCkge1xuICAgICAgICBjb25zdCBpc01vZGlmaWVkID0gZGV0ZWN0Q2hhbmdlcyhsYXN0UmVzdWx0LmFyZ3MsIGFyZ3MpO1xuICAgICAgICBpZiAoIWlzTW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0UmVzdWx0LnJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgPSBwaXBlLnRyYW5zZm9ybSguLi5hcmdzKTtcbiAgICBsYXN0UmVzdWx0ID0ge2FyZ3MsIHJlc3VsdH07XG4gICAgY2FjaGUuc2V0KGlkZW50aWZpZXIsIGxhc3RSZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBTVFJfRVNDQVBFX1JFR0VYID0gL1teIGEtekEtWjAtOV0vZztcblxuY29uc3Qgc3RyaW5nRXNjYXBlRm4gPSBzdHIgPT4ge1xuICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIHN0ci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpO1xufTtcblxuY2xhc3MgQVNUQ29tcGlsZXIge1xuICAgIGFzdDsgLy8gYXN0IHRvIGJlIGNvbXBpbGVkXG4gICAgZGVjbGFyYXRpb25zOyAvLyB2YXJpYWJsZSBuYW1lc1xuICAgIHN0bXRzOyAvLyBmdW5jdGlvbiBib2R5IHN0YXRlbWVudHNcbiAgICBwaXBlczsgLy8gdXNlZCBwaXBlc1xuICAgIHZJZHg7IC8vIHZhcmlhYmxlIG5hbWUgaW5kZXhcbiAgICBjQXN0OyAvLyBjdXJyZW50IEFTVCBub2RlIGluIHRoZSBwcm9jZXNzXG4gICAgY1N0bXRzO1xuICAgIHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgZXhwclR5cGU6IEV4cHJlc3Npb25UeXBlO1xuXG4gICAgY29uc3RydWN0b3IoYXN0LCBleHByVHlwZSwgcGlwZU5hbWVWc0lzUHVyZU1hcD8pIHtcbiAgICAgICAgdGhpcy5hc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zID0gW107XG4gICAgICAgIHRoaXMuc3RtdHMgPSBbXTtcbiAgICAgICAgdGhpcy5waXBlcyA9IFtdO1xuICAgICAgICB0aGlzLnZJZHggPSAwO1xuICAgICAgICB0aGlzLmV4cHJUeXBlID0gZXhwclR5cGU7XG4gICAgICAgIHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgfVxuXG4gICAgY3JlYXRlVmFyKCkge1xuICAgICAgICBjb25zdCB2ID0gYHYke3RoaXMudklkeCsrfWA7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zLnB1c2godik7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCkge1xuICAgICAgICByZXR1cm4gJ2N0eCc7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiAoYXN0LnZhbHVlKSA9PT0gJ3N0cmluZycgPyBgXCIke2FzdC52YWx1ZS5yZXBsYWNlKC9cIi9nLCAnXFxcIicpLnJlcGxhY2UoU1RSX0VTQ0FQRV9SRUdFWCwgc3RyaW5nRXNjYXBlRm4pfVwiYCA6IGFzdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzTGl0ZXJhbEFycmF5KCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgICAgIHMucHVzaCh0aGlzLmJ1aWxkKGl0ZW0sIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RtdHMucHVzaChgJHt2fT1bJHtzLmpvaW4oJywnKX1dYCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NMaXRlcmFsTWFwKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfdmFsdWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgX3ZhbHVlIG9mIGFzdC52YWx1ZXMpIHtcbiAgICAgICAgICAgIF92YWx1ZXMucHVzaCh0aGlzLmJ1aWxkKF92YWx1ZSwgc3RtdHMpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PXske2FzdC5rZXlzLm1hcCgoaywgaSkgPT4gYCcke2sua2V5fSc6JHtfdmFsdWVzW2ldfWApfX1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1Byb3BlcnR5UmVhZCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmVjZWl2ZXIsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtyfSYmJHtyfS4ke2FzdC5uYW1lfWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzS2V5ZWRSZWFkKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmJ1aWxkKGFzdC5rZXksIHN0bXRzKTtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMuYnVpbGQoYXN0LnJlY2VpdmVyLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7b30mJiR7b31bJHtrfV1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1ByZWZpeE5vdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QuZXhwcmVzc2lvbiwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3J9PSEke3J9YCk7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGhhbmRsZUJpbmFyeVBsdXNfTWludXMoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuYnVpbGQoYXN0LnJpZ2h0LCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBtID0gYXN0Lm9wZXJhdGlvbiA9PT0gJysnID8gJ19wbHVzJyA6ICdfbWludXMnO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7bX0oJHtsfSwke3J9KWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBoYW5kbGVCaW5hcnlBTkRfT1IoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX3MxID0gW107XG4gICAgICAgIGNvbnN0IF9zbCA9IFtdO1xuICAgICAgICBjb25zdCBfc3IgPSBbXTtcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIF9zbCk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5yaWdodCwgX3NyKTtcblxuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcblxuICAgICAgICBpZiAoYXN0Lm9wZXJhdGlvbiA9PT0gJyYmJykge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09ZmFsc2VgLFxuICAgICAgICAgICAgICAgIGA7aWYoJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09JHtsfWAsXG4gICAgICAgICAgICAgICAgYDtpZighJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHN0bXRzLnB1c2goX3MxLmpvaW4oJycpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgaGFuZGxlQmluYXJ5RGVmYXVsdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5idWlsZChhc3QubGVmdCwgc3RtdHMpO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmlnaHQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtsfSR7YXN0Lm9wZXJhdGlvbn0ke3J9YCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NCaW5hcnkoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgb3AgPSBhc3Qub3BlcmF0aW9uO1xuICAgICAgICBpZiAob3AgPT09ICcrJyB8fCBvcCA9PT0gJy0nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlQbHVzX01pbnVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wID09PSAnJiYnIHx8IG9wID09PSAnfHwnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlBTkRfT1IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJpbmFyeURlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQ29uZGl0aW9uYWwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5idWlsZChhc3QuY29uZGl0aW9uLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfczEgPSBbXTtcbiAgICAgICAgY29uc3QgX3MyID0gW107XG4gICAgICAgIGNvbnN0IF9zMyA9IFtdO1xuICAgICAgICBjb25zdCB0cnVlRXhwID0gdGhpcy5idWlsZChhc3QudHJ1ZUV4cCwgX3MyKTtcbiAgICAgICAgY29uc3QgZmFsc2VFeHAgPSB0aGlzLmJ1aWxkKGFzdC5mYWxzZUV4cCwgX3MzKTtcblxuICAgICAgICBfczEucHVzaChcbiAgICAgICAgICAgIGBpZigke2NvbmRpdGlvbn0pe2AsXG4gICAgICAgICAgICBfczIuam9pbignOycpLFxuICAgICAgICAgICAgYDske3Z9PSR7dHJ1ZUV4cH07YCxcbiAgICAgICAgICAgIGB9ZWxzZXtgLFxuICAgICAgICAgICAgX3MzLmpvaW4oJzsnKSxcbiAgICAgICAgICAgIGA7JHt2fT0ke2ZhbHNlRXhwfTtgLFxuICAgICAgICAgICAgYH1gXG4gICAgICAgICk7XG5cbiAgICAgICAgc3RtdHMucHVzaChfczEuam9pbignICcpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc01ldGhvZENhbGwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX2FyZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2YgYXN0LmFyZ3MpIHtcbiAgICAgICAgICAgIF9hcmdzLnB1c2godGhpcy5idWlsZChhcmcsIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm4gPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgY29uc3QgaXNJbXBsaWNpdFJlY2VpdmVyID0gYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlciB8fCAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgUHJvcGVydHlSZWFkICYmIGFzdC5yZWNlaXZlcj8ucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHN0bXRzW3N0bXRzLmxlbmd0aCAtIDFdLnNwbGl0KCcmJicpWzBdLnNwbGl0KCc9JylbMV07XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09ICR7Zm59JiYke2ZufSR7aXNJbXBsaWNpdFJlY2VpdmVyID8gJy5iaW5kKF9jdHgpJyA6IGAuYmluZCgke2NvbnRleHR9KWB9KCR7X2FyZ3Muam9pbignLCcpfSlgKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0NoYWluKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIHJldHVybiBhc3QuZXhwcmVzc2lvbnMubWFwKGUgPT4gdGhpcy5idWlsZChlKSkuam9pbignOycpO1xuICAgIH1cblxuICAgIHByb2Nlc3NQcm9wZXJ0eVdyaXRlKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGxldCByZWNlaXZlciwgbGhzO1xuICAgICAgICBpZiAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlcikge1xuICAgICAgICAgICAgbGhzID0gYF9jdHguJHthc3QubmFtZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICAgICAgbGhzID0gYCR7cmVjZWl2ZXJ9JHtyZWNlaXZlci5sZW5ndGggPyAnLicgOiAnJ30ke2FzdC5uYW1lfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByaHMgPSB0aGlzLmJ1aWxkKGFzdC52YWx1ZSwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke2xoc309JHtyaHN9YCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1BpcGUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF9hcmdzID0gW107XG4gICAgICAgIGNvbnN0IF9zMSA9IFtdO1xuICAgICAgICBjb25zdCBfczIgPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gdGhpcy5idWlsZChhc3QuZXhwLCBzdG10cyk7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFzdC5hcmdzKSB7XG4gICAgICAgICAgICBfYXJncy5wdXNoKHRoaXMuYnVpbGQoYXJnLCBfczIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHAgPSBgX3Ake3RoaXMucGlwZXMubGVuZ3RofWA7XG4gICAgICAgIHRoaXMucGlwZXMucHVzaChbYXN0Lm5hbWUsIHBdKTtcblxuICAgICAgICBfYXJncy51bnNoaWZ0KGV4cCk7XG5cbiAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICBfczIubGVuZ3RoID8gX3MyLmpvaW4oJzsnKSArICc7JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5waXBlTmFtZVZzSXNQdXJlTWFwLmdldChhc3QubmFtZSkgPyBgJHt0fT1nZXRQUFZhbCgke3B9LF9wcGMsXCIke3B9XCIsJHtfYXJnc30pYCA6IGAke3R9PSR7cH0udHJhbnNmb3JtKCR7X2FyZ3N9KWBcbiAgICAgICAgKTtcblxuICAgICAgICBzdG10cy5wdXNoKF9zMS5qb2luKCcnKSk7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIGJ1aWxkKGFzdCwgY1N0bXRzPykge1xuICAgICAgICB0aGlzLmNBc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuY1N0bXRzID0gY1N0bXRzIHx8IHRoaXMuc3RtdHM7XG5cbiAgICAgICAgaWYgKGFzdCBpbnN0YW5jZW9mIEltcGxpY2l0UmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgTGl0ZXJhbFByaW1pdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaXRlcmFsQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGl0ZXJhbE1hcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5UmVhZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Byb3BlcnR5UmVhZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5V3JpdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NQcm9wZXJ0eVdyaXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgS2V5ZWRSZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzS2V5ZWRSZWFkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgUHJlZml4Tm90KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUHJlZml4Tm90KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQmluYXJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQmluYXJ5KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb25kaXRpb25hbCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIENhbGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NNZXRob2RDYWxsKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ2hhaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDaGFpbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIEJpbmRpbmdQaXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUGlwZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0ZW5kQ3R4V2l0aExvY2FscygpIHtcbiAgICAgICAgY29uc3QgdjEgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICB0aGlzLnN0bXRzLnB1c2goXG4gICAgICAgICAgICBgJHt2MX09T2JqZWN0LmFzc2lnbih7fSwgbG9jYWxzKWAsXG4gICAgICAgICAgICBgT2JqZWN0LnNldFByb3RvdHlwZU9mKCR7djF9LCBfY3R4KWAsXG4gICAgICAgICAgICBgY3R4PSR7djF9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZuQm9keSgpIHtcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbnMucHVzaCgnY3R4Jyk7XG4gICAgICAgIHJldHVybiAnXCJ1c2Ugc3RyaWN0XCI7XFxudmFyICcgKyB0aGlzLmRlY2xhcmF0aW9ucy5qb2luKCcsJykgKyAnO1xcbicgKyB0aGlzLnN0bXRzLmpvaW4oJzsnKTtcbiAgICB9XG5cbiAgICBmbkFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbJ19wbHVzJywgJ19taW51cycsICdfaXNEZWYnXTtcblxuICAgICAgICBpZiAodGhpcy5leHByVHlwZSA9PT0gRXhwcmVzc2lvblR5cGUuQmluZGluZykge1xuICAgICAgICAgICAgYXJncy5wdXNoKCdnZXRQUFZhbCcsICdfcHBjJyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFssIHBpcGVWYXJdIG9mIHRoaXMucGlwZXMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGlwZVZhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzLnB1c2goJ19jdHgnLCAnbG9jYWxzJyk7XG5cbiAgICAgICAgcmV0dXJuIGFyZ3Muam9pbignLCcpO1xuICAgIH1cblxuICAgIGFkZFJldHVyblN0bXQocmVzdWx0KSB7XG4gICAgICAgIC8vIGlmICh0aGlzLmV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnN0bXRzLnB1c2goYHJldHVybiAke3Jlc3VsdH07YCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjbGVhbnVwKCkge1xuICAgICAgICB0aGlzLmFzdCA9IHRoaXMuY0FzdCA9IHRoaXMuc3RtdHMgPSB0aGlzLmNTdG10cyA9IHRoaXMuZGVjbGFyYXRpb25zID0gdGhpcy5waXBlcyA9IHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb21waWxlKGRlZk9ubHk/KSB7XG4gICAgICAgIHRoaXMuZXh0ZW5kQ3R4V2l0aExvY2FscygpO1xuICAgICAgICB0aGlzLmFkZFJldHVyblN0bXQodGhpcy5idWlsZCh0aGlzLmFzdCkpO1xuICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHtmbkJvZHk6IHRoaXMuZm5Cb2R5KCksIGZuQXJnczogdGhpcy5mbkFyZ3MoKSwgcGlwZXM6IHRoaXMucGlwZXN9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKHRoaXMuZm5BcmdzKCksIHRoaXMuZm5Cb2R5KCkpO1xuICAgICAgICBsZXQgYm91bmRGbjtcbiAgICAgICAgaWYgKHRoaXMuZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgcGx1cywgbWludXMsIGlzRGVmLCBnZXRQdXJlUGlwZVZhbCk7XG4gICAgICAgICAgICBib3VuZEZuLnVzZWRQaXBlcyA9IHRoaXMucGlwZXMuc2xpY2UoMCk7IC8vIGNsb25lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICAgICAgcmV0dXJuIGJvdW5kRm47XG4gICAgfVxufVxuXG5jb25zdCBudWxsUGlwZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IG5vb3BcbiAgICB9O1xufTtcblxubGV0IF9jc3BFbmFibGVkO1xuY29uc3QgaXNDU1BFbmFibGVkID0gKCkgPT4ge1xuICAgIGlmKHR5cGVvZiBfY3NwRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9jc3BFbmFibGVkO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oKTtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gX2NzcEVuYWJsZWQ7XG59O1xuXG5sZXQgcGlwZVByb3ZpZGVyO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGlwZVByb3ZpZGVyKF9waXBlUHJvdmlkZXIpIHtcbiAgICBwaXBlUHJvdmlkZXIgPSBfcGlwZVByb3ZpZGVyO1xufVxuXG5lbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBCaW5kaW5nLFxuICAgIEFjdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXhwcihleHByOiBzdHJpbmcsIGRlZk9ubHk/OiBib29sZWFuKTogUGFyc2VFeHByUmVzdWx0IHtcblxuICAgIGlmICghcGlwZVByb3ZpZGVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXQgcGlwZSBwcm92aWRlcicpO1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIChleHByKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgZXhwciA9IGV4cHIudHJpbSgpO1xuXG4gICAgaWYgKGV4cHIuZW5kc1dpdGgoJzsnKSkge1xuICAgICAgICBleHByID0gZXhwci5zbGljZSgwLCAtMSk7IC8vIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgfVxuXG4gICAgaWYgKCFleHByLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSBleHByRm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGxldCBib3VuZEZuO1xuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBib3VuZEZuID0gZ2V0Rm5Gb3JCaW5kRXhwcihleHByKTtcbiAgICB9XG5cbiAgICAvLyBmYWxsYmFjayB0byBnZW5lcmF0ZSBmdW5jdGlvbiBpbiBydW50aW1lLiBUaGlzIHdpbGwgYnJlYWsgaWYgQ1NQIGlzIGVuYWJsZWRcbiAgICBpZiAoIWJvdW5kRm4pIHtcbiAgICAgICAgLy8gSWYgQ1NQIGVuYWJsZWQsIGZ1bmN0aW9uIGRlZiBub3QgZm91bmQgZnJvbSB0aGUgZ2VuZXJhdGVkIGZuIGV4cHJlc3Npb25zIGZvciB0aGUgcGFnZS5cbiAgICAgICAgLy8gSGFuZGxlIGJpbmQgZXhwcmVzc2lvbnMgdXNlZCBpbnRlcm5hbGx5IGluc2lkZSBXTSBjb21wb25lbnRzLiBlLmcuIHdtQW5jaG9yIHVzZWQgaW5zaWRlIG5hdi5jb21wLmh0bWxcbiAgICAgICAgaWYgKGlzQ1NQRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZnVuY3Rpb24oY3R4LCBsb2NhbHMpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgaW50ZXJuYWwgYmluZGluZ3MgZm9yIHdtIHdpZGdldHMgdXNlZCBpbnNpZGUgYSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8uZ2V0KF9jdHgsIGV4cHIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGFzdCA9IHBhcnNlci5wYXJzZUJpbmRpbmcoZXhwciwgJycsMCk7XG5cbiAgICAgICAgICAgIGlmIChhc3QuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZuID0gbm9vcDtcbiAgICAgICAgICAgICAgICBib3VuZEZuID0gZm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVOYW1lVnNJc1B1cmVNYXAgPSBwaXBlUHJvdmlkZXIuZ2V0UGlwZU5hbWVWc0lzUHVyZU1hcCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzdENvbXBpbGVyID0gbmV3IEFTVENvbXBpbGVyKGFzdC5hc3QsIEV4cHJlc3Npb25UeXBlLkJpbmRpbmcsIHBpcGVOYW1lVnNJc1B1cmVNYXApO1xuICAgICAgICAgICAgICAgIGZuID0gYXN0Q29tcGlsZXIuY29tcGlsZShkZWZPbmx5KTtcbiAgICAgICAgICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLnVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiBmbi51c2VkUGlwZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgLi4ucGlwZUFyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHByRm5DYWNoZS5zZXQoZXhwciwgYm91bmRGbik7XG5cbiAgICByZXR1cm4gYm91bmRGbjtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IoZXhwciwgY3R4LCBsb2NhbHMpIHtcbiAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG5cbiAgICBsZXQgcGFydHMgPSBleHByLnNwbGl0KCcoJyk7XG4gICAgbGV0IGZuTmFtZSA9IHBhcnRzWzBdO1xuICAgIGxldCBjb21wdXRlZEZuID0gXy5nZXQoY3R4LCBmbk5hbWUpO1xuXG4gICAgaWYgKGNvbXB1dGVkRm4pIHtcbiAgICAgICAgbGV0IGFyZ3MgPSBwYXJ0c1sxXS5yZXBsYWNlKCcpJywgJycpO1xuICAgICAgICBhcmdzID0gYXJncy5zcGxpdCgnLCcpO1xuICAgICAgICBsZXQgY29tcHV0ZWRBcmdzID0gW107XG4gICAgICAgIGFyZ3MuZm9yRWFjaCgoYXJnKT0+IHtcbiAgICAgICAgICAgIGFyZyA9IGFyZyAmJiBhcmcudHJpbSgpO1xuICAgICAgICAgICAgY29tcHV0ZWRBcmdzLnB1c2goXy5nZXQoX2N0eCwgYXJnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWRGbi5iaW5kKF9jdHgpKC4uLmNvbXB1dGVkQXJncyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXZlbnQoZXhwciwgZGVmT25seT8pOiBQYXJzZUV4cHJSZXN1bHQge1xuICAgIGlmICh0eXBlb2YgKGV4cHIpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBleHByID0gZXhwci50cmltKCk7XG5cbiAgICBpZiAoIWV4cHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGxldCBmbiA9IGV2ZW50Rm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBmbiA9IGdldEZuRm9yRXZlbnRFeHByKGV4cHIpO1xuICAgIH1cblxuICAgIC8vIGZhbGxiYWNrIHRvIGdlbmVyYXRlIGZ1bmN0aW9uIGluIHJ1bnRpbWUuIFRoaXMgd2lsbCBicmVhayBpZiBDU1AgaXMgZW5hYmxlZFxuICAgIGlmKCFmbikge1xuICAgICAgICBpZiAoaXNDU1BFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGZuID0gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IuYmluZCh1bmRlZmluZWQsIGV4cHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihuZXcgTGV4ZXIpO1xuICAgICAgICAgICAgY29uc3QgYXN0ID0gcGFyc2VyLnBhcnNlQWN0aW9uKGV4cHIsIGZhbHNlLCAnJywwKTtcblxuICAgICAgICAgICAgaWYgKGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhc3RDb21waWxlciA9IG5ldyBBU1RDb21waWxlcihhc3QuYXN0LCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xuICAgICAgICAgICAgZm4gPSBhc3RDb21waWxlci5jb21waWxlKGRlZk9ubHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZlbnRGbkNhY2hlLnNldChleHByLCBmbik7XG4gICAgcmV0dXJuIGZuO1xufVxuXG5jb25zdCBmbk5hbWVNYXAgPSBuZXcgTWFwKCk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlckZuQnlFeHByID0gKGV4cHIsIGZuLCB1c2VkUGlwZXM/KSA9PiB7XG4gICAgZm4udXNlZFBpcGVzID0gdXNlZFBpcGVzIHx8IFtdO1xuICAgIGZuTmFtZU1hcC5zZXQoZXhwciwgZm4pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm5CeUV4cHIgPSAoZXhwcikgPT4gZm5OYW1lTWFwLmdldChleHByKVxuXG5jb25zdCBmbkV4ZWN1dG9yID0gKGV4cHIsIGV4cHJUeXBlKSA9PiB7XG4gICAgbGV0IGZuID0gZ2V0Rm5CeUV4cHIoZXhwcik7XG4gICAgaWYgKCFmbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVzZWRQaXBlcyA9IGZuLnVzZWRQaXBlcyB8fCBbXTtcblxuICAgIGlmKGV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZiwgZ2V0UHVyZVBpcGVWYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgfVxuXG4gICAgaWYgKHVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiB1c2VkUGlwZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIC4uLnBpcGVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm47XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGbkZvckJpbmRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZuRm9yRXZlbnRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { Attribute, ImplicitReceiver, LiteralPrimitive, LiteralArray, LiteralMap, PropertyRead, PropertyWrite, KeyedRead, PrefixNot, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
1
+ import { Attribute, ImplicitReceiver, PropertyRead, LiteralPrimitive, LiteralArray, LiteralMap, PropertyWrite, KeyedRead, PrefixNot, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
2
2
  import { Subject } from 'rxjs';
3
3
  import { __awaiter } from 'tslib';
4
4
  import * as i0 from '@angular/core';
@@ -1749,6 +1749,7 @@ class ASTCompiler {
1749
1749
  return v;
1750
1750
  }
1751
1751
  processMethodCall() {
1752
+ var _a;
1752
1753
  const ast = this.cAst;
1753
1754
  const stmts = this.cStmts;
1754
1755
  const _args = [];
@@ -1757,8 +1758,7 @@ class ASTCompiler {
1757
1758
  }
1758
1759
  const fn = this.build(ast.receiver, stmts);
1759
1760
  const v = this.createVar();
1760
- const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver;
1761
- const exp = stmts[stmts.length - 1];
1761
+ const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver || (ast.receiver instanceof PropertyRead && ((_a = ast.receiver) === null || _a === void 0 ? void 0 : _a.receiver) instanceof ImplicitReceiver);
1762
1762
  const context = stmts[stmts.length - 1].split('&&')[0].split('=')[1];
1763
1763
  stmts.push(`${v}= ${fn}&&${fn}${isImplicitReceiver ? '.bind(_ctx)' : `.bind(${context})`}(${_args.join(',')})`);
1764
1764
  return v;