ets-fe-ng-sdk 18.0.122 → 18.0.124

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.
@@ -2,7 +2,6 @@ import { inject, Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, Observable, interval, lastValueFrom, of } from 'rxjs';
3
3
  import { filter, map, tap } from 'rxjs/operators';
4
4
  import { environment } from '../../environments/environment';
5
- import { EVFunctions } from '../configs/base-functions';
6
5
  import { ToastNotificationsService } from '@serene-dev/toast-notifications';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "./api.service";
@@ -35,7 +34,7 @@ export class TranslationService {
35
34
  res.complete();
36
35
  }
37
36
  else {
38
- const id = EVFunctions.generateUUID();
37
+ const id = this.idGenerator(text);
39
38
  this.translationRequestMatrix.push({ id, text });
40
39
  const sub = this.translationResponseMatrix.subscribe({
41
40
  next: (r) => {
@@ -56,6 +55,15 @@ export class TranslationService {
56
55
  }
57
56
  });
58
57
  };
58
+ this.idGeneratorKey = {
59
+ ' ': '~',
60
+ };
61
+ this.idGenerator = (text) => {
62
+ let res = '';
63
+ for (const char of text)
64
+ res += this.idGeneratorKey[char] || char;
65
+ return res;
66
+ };
59
67
  this.plainTranslate = (text, sourceLanguage = environment.sourceLanguage, targetLanguage = environment.targetLanguage) => {
60
68
  return new Promise(async (resolve) => {
61
69
  text = text?.trim();
@@ -148,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
148
156
  providedIn: 'root',
149
157
  }]
150
158
  }], ctorParameters: () => [{ type: i1.ApiService }, { type: i2.ETSStorageService }, { type: i3.LocalCacheService }] });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUs1RSxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCLFlBQ1MsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsT0FBMEI7UUFGMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWZ6QixZQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyw2QkFBd0IsR0FBbUMsRUFBRSxDQUFDO1FBQ3ZFLDhCQUF5QixHQUNqQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFNRiw2QkFBd0IsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQVU3RSxvQkFBZSxHQUE4RSxDQUMzRixJQUFJ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UUFDeEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OEdBL0dVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCwgbGFzdFZhbHVlRnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFTGFuZ3VhZ2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVRyYW5zbGF0b3JDb25maWcgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL3RyYW5zbGF0b3IubW9kZWwnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IFRvYXN0Tm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICdAc2VyZW5lLWRldi90b2FzdC1ub3RpZmljYXRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZTxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2UgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGJhc2VVUkwgPSBlbnZpcm9ubWVudC5hcGlCYXNlVXJsICsgJy9yZXN0L3RyYW5zbGF0aW9uLyc7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvblJlcXVlc3RNYXRyaXg6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeDogQmVoYXZpb3JTdWJqZWN0PHsgW3g6IHN0cmluZ106IHN0cmluZyB9PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHJlYWRvbmx5IHNlcGFyYXRvciA9ICd+fn4nO1xuICBuYW1lID0gJ2dsb3NzYXJ5JztcbiAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdGFyZ2V0TGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdHJhbnNHbG9zc2FyeTtcbiAgLy8gcmVhZG9ubHkgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0Tm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdChUb2FzdE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIHN0b3JhZ2VTOiBFVFNTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgbENhY2hlUzogTG9jYWxDYWNoZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMudG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlLmxhYmVsUGlwZSA9ICh2YWwpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBpcGVUcmFuc2Zvcm1lcih2YWwsIHsgbm9Mb2FkZXI6IHRydWUgfSk7XG4gICAgfTtcbiAgfVxuICBwaXBlVHJhbnNmb3JtZXI6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIsIGNvbmZpZz86IElUcmFuc2xhdG9yQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gPSAoXG4gICAgdGV4dCxcbiAgKSA9PiBvZih0ZXh0IGFzIHN0cmluZyk7XG4gIGFzeW5jIHN0YXJ0SW50ZXJ2YWwoKSB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxTdWIgJiYgIXRoaXMuaW50ZXJ2YWxTdWIuY2xvc2VkKSByZXR1cm47XG4gICAgY29uc3QgdHJhbnNHbG9zc2FyeSA9IHRoaXMudHJhbnNHbG9zc2FyeSB8fCAoYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmdldEdsb3NzYXJ5KCkpKTtcbiAgICB0aGlzLmludGVydmFsU3ViID0gaW50ZXJ2YWwoMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RNYXRyaXgubGVuZ3RoID4gMCksXG5cbiAgICAgICAgdGFwKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RNYXRyaXguc3BsaWNlKDApO1xuXG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5wb3N0U3RyaW5nKFxuICAgICAgICAgICAgICB0aGlzLmJhc2VVUkwgK1xuICAgICAgICAgICAgICAgICh0aGlzLnRyYW5zR2xvc3Nhcnk/LmNvZGVcbiAgICAgICAgICAgICAgICAgID8gYGxhbmd1YWdlP2dsb3NzYXJ5Q29kZT0ke3RoaXMudHJhbnNHbG9zc2FyeT8uY29kZX0mc291cmNlTGFuZz0ke3RoaXMuc291cmNlTGFuZ3VhZ2V9JnRhcmdldExhbmc9JHt0aGlzLnRhcmdldExhbmd1YWdlfWBcbiAgICAgICAgICAgICAgICAgIDogYGxhbmd1YWdlLyR7dGhpcy50YXJnZXRMYW5ndWFnZX1gKSxcbiAgICAgICAgICAgICAgYm9keS5tYXAoKHgpID0+IHRoaXMudGFnZ2VyKHguaWQsIHgudGV4dCkpLmpvaW4odGhpcy5zZXBhcmF0b3IpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXgubmV4dCh0aGlzLmRldGFnZ2VyKHIpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuICBzdG9wSW50ZXJ2YWwoKSB7XG4gICAgdGhpcy5pbnRlcnZhbFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBwcm90ZWN0ZWQgdGFnZ2VyKGlkOiBzdHJpbmcsIHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGA8ZGl2IGlkPVwiJHtpZH1cIj4ke3N0cn08L2Rpdj5gO1xuICB9XG4gIGdldEdsb3NzYXJ5KFxuICAgIHNvdXJjZUxhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZTogRUxhbmd1YWdlID0gZW52aXJvbm1lbnQudGFyZ2V0TGFuZ3VhZ2UsXG4gICkge1xuICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBzb3VyY2VMYW5ndWFnZSB8fCB0aGlzLnNvdXJjZUxhbmd1YWdlO1xuICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZSB8fCB0aGlzLnRhcmdldExhbmd1YWdlO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQ8VHJhbnNsYXRpb25HbG9zc2FyeVJlc3BvbnNlW10+KGAke3RoaXMuYmFzZVVSTH1nbG9zc2FyeS9gKS5waXBlKFxuICAgICAgbWFwKChyOiBhbnlbXSkgPT4ge1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgZ2xvc3NhcnkgPSByPy5maW5kKFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC5zb3VyY2VMYW5nID09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgudGFyZ2V0TGFuZyA9PSB0aGlzLnRhcmdldExhbmd1YWdlICYmXG4gICAgICAgICAgICB4Lm5hbWUgPT0gdGhpcy5uYW1lLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZ2xvc3NhcnkgPyBnbG9zc2FyeSA6IG51bGw7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZ2xvc3NhcnkpID0+IHtcbiAgICAgICAgaWYgKCFnbG9zc2FyeSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMudHJhbnNHbG9zc2FyeSA9IGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnkgPSBnbG9zc2FyeTtcbiAgICAgICAgdGhpcy5zdG9yYWdlUy5zYXZlSXRlbShlbnZpcm9ubWVudC50cmFuc0dsb3NzYXJ5S2V5LCB0aGlzLnRyYW5zR2xvc3NhcnkpO1xuICAgICAgICByZXR1cm4gZ2xvc3Nhcnk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG4gIGRldGFnZ2VyKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbXMgPSBzdHI/LnNwbGl0KHRoaXMuc2VwYXJhdG9yKTtcbiAgICBjb25zdCByZXNvYmogPSB7fTtcbiAgICBmb3IgKGNvbnN0IHN0ciBvZiBpdGVtcykge1xuICAgICAgcmVzb2JqW3N0cj8uc3BsaXQoJ1wiJylbMV1dID0gc3RyPy5zcGxpdCgnPicpWzFdPy5zcGxpdCgnPC9kaXYnKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29iajtcbiAgfVxuXG4gIHRyYW5zbGF0ZU9sZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpZCA9IDMyMzIzMjM7XG4gICAgY29uc3QgYm9keSA9IHsgW2lkXTogdGV4dCB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0U3RyaW5nKFxuICAgICAgICB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2UvJHtlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZX1gLFxuICAgICAgICBPYmplY3Qua2V5cyhib2R5KVxuICAgICAgICAgIC5tYXAoKGlkKSA9PiB0aGlzLnRhZ2dlcihpZCwgYm9keVtpZF0pKVxuICAgICAgICAgIC5qb2luKHRoaXMuc2VwYXJhdG9yKSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHIpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZXRhZ2dlcihyKVtpZF0gYXMgc3RyaW5nO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICB0cmFuc2xhdGVIVE1MID0gKFxuICAgIEhUTUxTdHJpbmc6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IHRoaXMuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSB0aGlzLnRhcmdldExhbmd1YWdlLFxuXG4gICAgY29uZmlnPzogSVRyYW5zbGF0b3JDb25maWcsXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGlmIChjb25maWc/LmRlYnVnKSBkZWJ1Z2dlcjtcblxuICAgICAgY29uc3QgdGV4dCA9IEhUTUxTdHJpbmc/LnRyaW0oKSxcbiAgICAgICAgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSByb3V0ZSArICdfJyArIHRhcmdldExhbmd1YWdlICsgJ18nICsgdGV4dDtcbiAgICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXMubmV4dChIVE1MU3RyaW5nKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4oY2FjaGVLZXkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpZCA9IEVWRnVuY3Rpb25zLmdlbmVyYXRlVVVJRCgpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5wdXNoKHsgaWQsIHRleHQgfSk7XG4gICAgICAgIGNvbnN0IHN1YjogU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGlvblJlc3BvbnNlTWF0cml4LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHIpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWc/LmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zVmFsID0gcltpZF07XG4gICAgICAgICAgICBpZiAodHJhbnNWYWwpIHtcbiAgICAgICAgICAgICAgcmVzLm5leHQodHJhbnNWYWwpO1xuICAgICAgICAgICAgICB0aGlzLmxDYWNoZVMuc2V0SXRlbShjYWNoZUtleSwgdHJhbnNWYWwpO1xuICAgICAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgIHJlcy5lcnJvcihlKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgcGxhaW5UcmFuc2xhdGUgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gZW52aXJvbm1lbnQuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIHRleHQgPSB0ZXh0Py50cmltKCk7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZWA7XG5cbiAgICAgIGlmICghdGV4dCkgcmVzb2x2ZShudWxsKTtcbiAgICAgIGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMocm91dGUgKyAnXycgKyB0ZXh0KSlcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxzdHJpbmc+KHJvdXRlICsgJ18nICsgdGV4dCkpO1xuICAgICAgZWxzZVxuICAgICAgICByZXNvbHZlKFxuICAgICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZVxuICAgICAgICAgICAgLnBvc3RTdHJpbmcocm91dGUsIHRleHQpXG4gICAgICAgICAgICAucGlwZSh0YXAoKHIpID0+IHRoaXMubENhY2hlUy5zZXRJdGVtKHJvdXRlICsgJ18nICsgdGV4dCwgcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLFxuICAgICAgICApO1xuICAgIH0pO1xuICB9O1xuICB0cmFuc2xhdGVIVE1MUHJvbWlzZSA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc291cmNlTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IGVudmlyb25tZW50LnRhcmdldExhbmd1YWdlLFxuICAgIGNvbmZpZz86IElUcmFuc2xhdG9yQ29uZmlnLFxuICApID0+IHRoaXMudHJhbnNsYXRlSFRNTCh0ZXh0LCBzb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2UsIGNvbmZpZyk/LnRvUHJvbWlzZSgpO1xufVxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFPN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBSzVFLE1BQU0sT0FBTyxrQkFBa0I7SUFhN0IsWUFDUyxVQUFzQixFQUN0QixRQUEyQixFQUMzQixPQUEwQjtRQUYxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBZnpCLFlBQU8sR0FBRyxXQUFXLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDO1FBQy9DLDZCQUF3QixHQUFtQyxFQUFFLENBQUM7UUFDdkUsOEJBQXlCLEdBQ2pDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsU0FBSSxHQUFHLFVBQVUsQ0FBQztRQU1GLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBVTdFLG9CQUFlLEdBQThFLENBQzNGLElBQUksRUFDSixFQUFFLENBQUMsRUFBRSxDQUFDLElBQWMsQ0FBQyxDQUFDO1FB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LElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3hCO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBVyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOzhHQS9HVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwsIGxhc3RWYWx1ZUZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRUxhbmd1YWdlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvbG9jYWwtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBFVFNTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IElUcmFuc2xhdG9yQ29uZmlnIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy90cmFuc2xhdG9yLm1vZGVsJztcbmltcG9ydCB7IEVWRnVuY3Rpb25zIH0gZnJvbSAnLi4vY29uZmlncy9iYXNlLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBUb2FzdE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHNlcmVuZS1kZXYvdG9hc3Qtbm90aWZpY2F0aW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblNlcnZpY2U8VHJhbnNsYXRpb25HbG9zc2FyeVJlc3BvbnNlID0gYW55PiB7XG4gIHByb3RlY3RlZCBiYXNlVVJMID0gZW52aXJvbm1lbnQuYXBpQmFzZVVybCArICcvcmVzdC90cmFuc2xhdGlvbi8nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25SZXF1ZXN0TWF0cml4OiB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSBbXTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXg6IEJlaGF2aW9yU3ViamVjdDx7IFtpZDogc3RyaW5nXTogc3RyaW5nIH0+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgcmVhZG9ubHkgc2VwYXJhdG9yID0gJ35+fic7XG4gIG5hbWUgPSAnZ2xvc3NhcnknO1xuICBzb3VyY2VMYW5ndWFnZTogRUxhbmd1YWdlO1xuICB0YXJnZXRMYW5ndWFnZTogRUxhbmd1YWdlO1xuICB0cmFuc0dsb3NzYXJ5O1xuICAvLyByZWFkb25seSB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFN1YjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFRvYXN0Tm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwdWJsaWMgc3RvcmFnZVM6IEVUU1N0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBsQ2FjaGVTOiBMb2NhbENhY2hlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy50b2FzdE5vdGlmaWNhdGlvblNlcnZpY2UubGFiZWxQaXBlID0gKHZhbCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucGlwZVRyYW5zZm9ybWVyKHZhbCwgeyBub0xvYWRlcjogdHJ1ZSB9KTtcbiAgICB9O1xuICB9XG4gIHBpcGVUcmFuc2Zvcm1lcjogKHRleHQ6IHN0cmluZyB8IG51bWJlciwgY29uZmlnPzogSVRyYW5zbGF0b3JDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiA9IChcbiAgICB0ZXh0LFxuICApID0+IG9mKHRleHQgYXMgc3RyaW5nKTtcbiAgYXN5bmMgc3RhcnRJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbFN1YiAmJiAhdGhpcy5pbnRlcnZhbFN1Yi5jbG9zZWQpIHJldHVybjtcbiAgICBjb25zdCB0cmFuc0dsb3NzYXJ5ID0gdGhpcy50cmFuc0dsb3NzYXJ5IHx8IChhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0R2xvc3NhcnkoKSkpO1xuICAgIHRoaXMuaW50ZXJ2YWxTdWIgPSBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5sZW5ndGggPiAwKSxcblxuICAgICAgICB0YXAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5zcGxpY2UoMCk7XG5cbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnBvc3RTdHJpbmcoXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArXG4gICAgICAgICAgICAgICAgKHRoaXMudHJhbnNHbG9zc2FyeT8uY29kZVxuICAgICAgICAgICAgICAgICAgPyBgbGFuZ3VhZ2U/Z2xvc3NhcnlDb2RlPSR7dGhpcy50cmFuc0dsb3NzYXJ5Py5jb2RlfSZzb3VyY2VMYW5nPSR7dGhpcy5zb3VyY2VMYW5ndWFnZX0mdGFyZ2V0TGFuZz0ke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9YFxuICAgICAgICAgICAgICAgICAgOiBgbGFuZ3VhZ2UvJHt0aGlzLnRhcmdldExhbmd1YWdlfWApLFxuICAgICAgICAgICAgICBib2R5Lm1hcCgoeCkgPT4gdGhpcy50YWdnZXIoeC5pZCwgeC50ZXh0KSkuam9pbih0aGlzLnNlcGFyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeC5uZXh0KHRoaXMuZGV0YWdnZXIocikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG4gIHN0b3BJbnRlcnZhbCgpIHtcbiAgICB0aGlzLmludGVydmFsU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHByb3RlY3RlZCB0YWdnZXIoaWQ6IHN0cmluZywgc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYDxkaXYgaWQ9XCIke2lkfVwiPiR7c3RyfTwvZGl2PmA7XG4gIH1cbiAgZ2V0R2xvc3NhcnkoXG4gICAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSB7XG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNvdXJjZUxhbmd1YWdlIHx8IHRoaXMuc291cmNlTGFuZ3VhZ2U7XG4gICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlIHx8IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldDxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2VbXT4oYCR7dGhpcy5iYXNlVVJMfWdsb3NzYXJ5L2ApLnBpcGUoXG4gICAgICBtYXAoKHI6IGFueVtdKSA9PiB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBjb25zdCBnbG9zc2FyeSA9IHI/LmZpbmQoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnNvdXJjZUxhbmcgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSAmJlxuICAgICAgICAgICAgeC50YXJnZXRMYW5nID09IHRoaXMudGFyZ2V0TGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgubmFtZSA9PSB0aGlzLm5hbWUsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeSA/IGdsb3NzYXJ5IDogbnVsbDtcbiAgICAgIH0pLFxuICAgICAgbWFwKChnbG9zc2FyeSkgPT4ge1xuICAgICAgICBpZiAoIWdsb3NzYXJ5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgdGhpcy50cmFuc0dsb3NzYXJ5ID0gZW52aXJvbm1lbnQudHJhbnNHbG9zc2FyeSA9IGdsb3NzYXJ5O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTLnNhdmVJdGVtKGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnlLZXksIHRoaXMudHJhbnNHbG9zc2FyeSk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbiAgZGV0YWdnZXIoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtcyA9IHN0cj8uc3BsaXQodGhpcy5zZXBhcmF0b3IpO1xuICAgIGNvbnN0IHJlc29iaiA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3RyIG9mIGl0ZW1zKSB7XG4gICAgICByZXNvYmpbc3RyPy5zcGxpdCgnXCInKVsxXV0gPSBzdHI/LnNwbGl0KCc+JylbMV0/LnNwbGl0KCc8L2RpdicpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2JqO1xuICB9XG5cbiAgdHJhbnNsYXRlT2xkKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IGlkID0gMzIzMjMyMztcbiAgICBjb25zdCBib2R5ID0geyBbaWRdOiB0ZXh0IH07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RTdHJpbmcoXG4gICAgICAgIHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZS8ke2Vudmlyb25tZW50LnRhcmdldExhbmd1YWdlfWAsXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpXG4gICAgICAgICAgLm1hcCgoaWQpID0+IHRoaXMudGFnZ2VyKGlkLCBib2R5W2lkXSkpXG4gICAgICAgICAgLmpvaW4odGhpcy5zZXBhcmF0b3IpLFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRldGFnZ2VyKHIpW2lkXSBhcyBzdHJpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUhUTUwgPSAoXG4gICAgSFRNTFN0cmluZzogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gdGhpcy5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IHRoaXMudGFyZ2V0TGFuZ3VhZ2UsXG5cbiAgICBjb25maWc/OiBJVHJhbnNsYXRvckNvbmZpZyxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKHJlcykgPT4ge1xuICAgICAgaWYgKGNvbmZpZz8uZGVidWcpIGRlYnVnZ2VyO1xuXG4gICAgICBjb25zdCB0ZXh0ID0gSFRNTFN0cmluZz8udHJpbSgpLFxuICAgICAgICByb3V0ZSA9IHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZWA7XG4gICAgICBjb25zdCBjYWNoZUtleSA9IHJvdXRlICsgJ18nICsgdGFyZ2V0TGFuZ3VhZ2UgKyAnXycgKyB0ZXh0O1xuICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHJlcy5uZXh0KEhUTUxTdHJpbmcpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sQ2FjaGVTLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihjYWNoZUtleSkpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5pZEdlbmVyYXRvcih0ZXh0KTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblJlcXVlc3RNYXRyaXgucHVzaCh7IGlkLCB0ZXh0IH0pO1xuICAgICAgICBjb25zdCBzdWI6IFN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29uZmlnPy5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICAgICAgICBjb25zdCB0cmFuc1ZhbCA9IHJbaWRdO1xuICAgICAgICAgICAgaWYgKHRyYW5zVmFsKSB7XG4gICAgICAgICAgICAgIHJlcy5uZXh0KHRyYW5zVmFsKTtcbiAgICAgICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0oY2FjaGVLZXksIHRyYW5zVmFsKTtcbiAgICAgICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaWRHZW5lcmF0b3JLZXkgPSB7XG4gICAgJyAnOiAnficsXG4gIH07XG4gIGlkR2VuZXJhdG9yID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgbGV0IHJlczogc3RyaW5nID0gJyc7XG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHRleHQpIHJlcyArPSB0aGlzLmlkR2VuZXJhdG9yS2V5W2NoYXJdIHx8IGNoYXI7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcbiAgcGxhaW5UcmFuc2xhdGUgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gZW52aXJvbm1lbnQuc291cmNlTGFuZ3VhZ2UsXG4gICAgdGFyZ2V0TGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIHRleHQgPSB0ZXh0Py50cmltKCk7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZWA7XG5cbiAgICAgIGlmICghdGV4dCkgcmVzb2x2ZShudWxsKTtcbiAgICAgIGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMocm91dGUgKyAnXycgKyB0ZXh0KSlcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxzdHJpbmc+KHJvdXRlICsgJ18nICsgdGV4dCkpO1xuICAgICAgZWxzZVxuICAgICAgICByZXNvbHZlKFxuICAgICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZVxuICAgICAgICAgICAgLnBvc3RTdHJpbmcocm91dGUsIHRleHQpXG4gICAgICAgICAgICAucGlwZSh0YXAoKHIpID0+IHRoaXMubENhY2hlUy5zZXRJdGVtKHJvdXRlICsgJ18nICsgdGV4dCwgcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLFxuICAgICAgICApO1xuICAgIH0pO1xuICB9O1xuICB0cmFuc2xhdGVIVE1MUHJvbWlzZSA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc291cmNlTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IGVudmlyb25tZW50LnRhcmdldExhbmd1YWdlLFxuICAgIGNvbmZpZz86IElUcmFuc2xhdG9yQ29uZmlnLFxuICApID0+IHRoaXMudHJhbnNsYXRlSFRNTCh0ZXh0LCBzb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2UsIGNvbmZpZyk/LnRvUHJvbWlzZSgpO1xufVxuIl19
@@ -286,4 +286,4 @@ class TableColFormatted extends TableCol {
286
286
  this._onHoverDelay = 0;
287
287
  }
288
288
  }
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUtMLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQVMzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxLQUFLLENBQXNCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hF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T0FBTztnQkFDRSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87O0FBd05wQixNQUFNLGlCQUF3QixTQUFRLFFBQWM7SUFBcEQ7O1FBRUUsa0JBQWEsR0FBWSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5FTEV2ZW50LCBORUxNb3VzZUV2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbmF0aXZlLWV2ZW50LWxpc3RlbmVycy5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IF9yb3dPcHRpb25zID0gaW5wdXQ8SVJvd09wdGlvbjxUSXRlbT5bXT4obnVsbCwgeyBhbGlhczogJ3Jvd09wdGlvbnMnIH0pO1xuICByZWFkb25seSByb3dPcHRpb25zTWFwID0gaW5wdXQ8KHJvdzogVEl0ZW0pID0+IChJUm93T3B0aW9uPFRJdGVtPiB8IG51bGwpW10+KCk7XG4gIHJlYWRvbmx5IGNlbnRlckNlbGxzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjdXJ2eSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzdGluY3QgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgLyoqQXBwZWFycyBhYm92ZSB0aGUgdGFibGUgKi9cbiAgcmVhZG9ubHkgaGVhZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0V4cGFuZGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBVc2VkIHRvIG5hbWUgbWV0YWRhdGEgb2YgdGhlIHRhYmxlIGxpa2UgZXhwb3J0ZWQgZmlsZXMgKi9cbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlzRGlzYWJsZWRGdW5jID0gaW5wdXQ8KHJvdzogVEl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG5vSXRlbVR4dCA9IGlucHV0KCdUaGVyZSBhcmUgbm8gaXRlbXMnKTtcbiAgcmVhZG9ubHkgbm93cmFwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGRlYnVnID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRSb3dUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IG9yZGVyRGlyZWN0aW9uID0gaW5wdXQ8U29ydFR5cGU+KCdhc2MnKTtcbiAgcmVhZG9ubHkgb3JkZXJGaWVsZCA9IGlucHV0PGtleW9mIFRJdGVtPigpO1xuICByZWFkb25seSBwYWdlU2l6ZSA9IGlucHV0KDEwKTtcbiAgcmVhZG9ubHkgY3VzdG9tVGVtcGxhdGVzID0gaW5wdXQ8eyBbeCBpbiBrZXlvZiBUSXRlbV0/OiBUZW1wbGF0ZVJlZjxhbnk+IH0+KCk7XG4gIHJlYWRvbmx5IHN0YXJ0U2VjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+PigpO1xuICByZWFkb25seSBjb21wdXRlZFBhZ2VTaXplT3B0aW9ucyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFBhZ2VTaXplT3B0aW9ucyA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucygpLFxuICAgICAgcGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHJlc3VsdHNMZW5ndGggPSB0aGlzLnJlc3VsdHNMZW5ndGgoKTtcbiAgICBjb25zdCBvcHRpb25zID0gcGFnZVNpemVPcHRpb25zPy5sZW5ndGggPyBwYWdlU2l6ZU9wdGlvbnMgOiBkZWZhdWx0UGFnZVNpemVPcHRpb25zO1xuICAgIHJldHVybiBvcHRpb25zLmNvbmNhdChvcHRpb25zPy5sYXN0SXRlbSgpID4gcmVzdWx0c0xlbmd0aCA/IFtdIDogW3Jlc3VsdHNMZW5ndGhdKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSBzaWduYWwoWzUsIDEwLCAyMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwXSk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPigpO1xuICByZWFkb25seSBwbGFjZVNlbGVjdGlvbkF0UmlnaHQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIHN1cHBvcnQgY3VzdG9taXppbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3QgY2hlY2tib3hlcy5cbiAgcmVhZG9ubHkgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93RXhwb3J0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93Um93UG9pbnRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc21hbGxlckZvbnRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzdHJpcGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHRhYmxlQ29udGFpbmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHVzZVNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBmb3JtU2NoZW1hVG9Db2x1bW5zID0gaW5wdXQ8SUZvcm1TY2hlbWE8SVN0cmljdEZvcm1Hcm91cDxUSXRlbT4+W10+KCk7XG4gIHJlYWRvbmx5IHVwbG9hZFNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PHsgZmllbGQ/OiBrZXlvZiBUSXRlbTsgbGFiZWw/OiBzdHJpbmcgfVtdPigpO1xuXG4gIHJlYWRvbmx5IF9kaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2w8VEl0ZW0+W10+KFtdLCB7IGFsaWFzOiAnZGlzcGxheWVkQ29sdW1ucycgfSk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKT8uZmlsdGVyKCh4KSA9PiAheC5pZ25vcmUpO1xuICAgIHJldHVybiB0aGlzLnVzZUN1c3RvbUxhYmVscygpID8gdGhpcy50Uy5nbG9iYWxDb2x1bW5zRm9ybWF0dGVyKGNvbHVtbnMpIDogY29sdW1ucztcbiAgfSk7XG4gIC8qKlVzZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5ZWQgY29sdW1ucyB0aHJvdWdoIGludGVybmFsIGFjdGl2aXRpZXMgbGlrZSBtb2RpZmljYXRpb24gZnJvbSBBZGRpdGlvbmFsIGNvbHVtbnMgKi9cbiAgLy8gcHJvdGVjdGVkXG4gIHJlYWRvbmx5IG92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucyA9IHNpZ25hbDxUYWJsZUNvbDxUSXRlbT5bXT4obnVsbCk7XG5cbiAgLyoqQ29sdW1ucyB0aGF0IGFyZSBub3QgbWFya2VkIGFzIEFkZGl0aW9uYWwgQ29sdW1ucyBhbmQgYXJlIG5vdCBkaXNhYmxlZCovXG4gIHJlYWRvbmx5IHByZXNlbnRhYmxlQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4gJiYgIXguZGlzYWJsZWQpKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMge1xuICAgICAgICBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sRm9ybWF0dGVkPFRJdGVtPjtcbiAgICAgIH0sXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRjID1cbiAgICAgICAgdGhpcy5wcmVzZW50YWJsZUNvbHVtbnMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1uc1xuICAgICAgICAgID8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKVxuICAgICAgICAgIC5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sIHQ6IHgubGFiZWwgfSkpIHx8IFtdLFxuICAgICAgKTtcbiAgICBjb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHgpID0+IHguZik7XG4gICAgdGhpcy5oYW5kbGVDb2x1bW5zKGNvbHVtbnMpO1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9KTtcblxuICBAT3V0cHV0KCdyb3dDbGljaycpIF9yb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VEl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBlbWl0Q2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBmaWVsZDoga2V5b2YgVEl0ZW07XG4gICAgaXRlbTogVEl0ZW07XG4gICAgdmFsdWU6IGJvb2xlYW47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGU6IE1hdFRhYmxlPGFueT47XG4gIHJlYWRvbmx5IHJlc3VsdHNMZW5ndGg6IFNpZ25hbDxudW1iZXI+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhcnRlclNlY3Rpb25DbGFzcyA9IHNpZ25hbCgncm93IHJvdy1jb2xzLWxnLWF1dG8gZy0zIGFsaWduLWl0ZW1zLWNlbnRlcicpO1xuICByZWFkb25seSByYXdDb2x1bW5zID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+XG4gICAgdGhpcy50Uy5nZXRSYXdGaWVsZHMoXG4gICAgICB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgdGhpcy5oYXNSb3dPcHRpb25zKCksXG4gICAgICB0aGlzLnVzZVNlbGVjdGlvbigpLFxuICAgICAgdGhpcy5wbGFjZVNlbGVjdGlvbkF0UmlnaHQoKSxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRFbGVtZW50ID0gc2lnbmFsPFRJdGVtPihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRJdGVtPih0cnVlLCBbXSk7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uQ2hhbmdlZCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zU2lnbmFsID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKFxuICAgICAgbWFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCksXG4gICAgICBzdGFydFdpdGgoW10pLFxuICAgICksXG4gICk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2VsbEZvcm1hdHRlck1hcDoge1xuICAgIFtrIGluIGtleW9mIFRJdGVtXT86IFBhcnRpYWw8VGFibGVDb2xGb3JtYXR0ZWQ8VEl0ZW0+PjtcbiAgfSA9IHt9O1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgdFMgPSBpbmplY3QoVGFibGVTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgdXNlQ3VzdG9tTGFiZWxzID0gbW9kZWwodHJ1ZSk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cbiAgcmVhZG9ubHkgaXNBbGxTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJdGVtc1NpZ25hbCgpLmxlbmd0aCA9PSB0aGlzLmRhdGEoKT8ubGVuZ3RoKTtcbiAgcmVhZG9ubHkgaXNBbnlTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJdGVtc1NpZ25hbCgpLmxlbmd0aCA+IDApO1xuICByZWFkb25seSByb3dPcHRpb25zID0gY29tcHV0ZWQ8SVJvd09wdGlvbjxUSXRlbT5bXT4oKCkgPT5cbiAgICB0aGlzLl9yb3dPcHRpb25zKCk/LmZpbHRlcigoeCkgPT4gISF4ICYmICF4Lmlnbm9yZSksXG4gICk7XG4gIHJlYWRvbmx5IGhhc1Jvd09wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMucm93T3B0aW9ucygpPy5sZW5ndGggfHwgISF0aGlzLnJvd09wdGlvbnNNYXAoKSk7XG5cbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IG9uIHRoZSBwYXNzZWQgcm93ICovXG4gIGNoZWNrYm94TGFiZWwocm93PzogVEl0ZW0pOiBzdHJpbmcge1xuICAgIGlmICghcm93KSByZXR1cm4gYCR7dGhpcy5pc0FsbFNlbGVjdGVkKCkgPyAnZGVzZWxlY3QnIDogJ3NlbGVjdCd9IGFsbGA7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93IGA7XG4gIH1cblxuICBmaWVsZHNDaGFuZ2VkKCRldmVudDogeyBuRmllbGRzOiBUYWJsZUNvbFtdOyBhbGxGaWVsZHM6IFRhYmxlQ29sW10gfSkge1xuICAgIGNvbnN0IGNvbHMgPSAkZXZlbnQubkZpZWxkcztcbiAgICB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucy5zZXQoXG4gICAgICBjb2xzXG4gICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5jb25jYXQoY29scy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAubWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgudHlwZSA9PT0gJ251bWJlcicpIHguZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCkge1xuICAgIHJldHVybiAoc3RhdGU6IGJvb2xlYW4pID0+IChjb2wuYnRuLmxvYWRpbmcgPSBzdGF0ZSk7XG4gIH1cbiAgcmVhZG9ubHkgZGF0YTogV3JpdGFibGVTaWduYWw8VEl0ZW1bXT47XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbHVtbnMgPSAoY29sdW1uczogVGFibGVDb2xGb3JtYXR0ZWQ8VEl0ZW0+W10pID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAoIWNvbHVtbnM/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VzdG9tVGVtcGxhdGVzID0gdGhpcy5jdXN0b21UZW1wbGF0ZXMoKTtcbiAgICBjb25zdCBjZWxsc1RvQ2hlY2tGb3I6IHsgW2sgaW4ga2V5b2YgVEl0ZW1dPzogbnVtYmVyIH0gPSB7fTtcbiAgICAvLyBjb25zdCBkYXRlRmllbGRzID0geyBjcmVhdGVkT246IDEsIHVwZGF0ZWRPbjogMSB9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGNvbHVtbnNbaW5kZXhdO1xuICAgICAgaXRlbS5jdXN0b21UZW1wbGF0ZSA9IGN1c3RvbVRlbXBsYXRlcz8uW2l0ZW0uZl07XG4gICAgICBpZiAoXG4gICAgICAgICEoXG4gICAgICAgICAgaXRlbS5wcmV2aWV3T25Ib3ZlciA9PT0gZmFsc2UgfHxcbiAgICAgICAgICAoIWl0ZW0ub25Ib3ZlckhhbmRsZXIgJiYgIXRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXIpXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBpdGVtLl9vbkhvdmVyRnVuY3Rpb24gPSAoZXZlbnQsIHJvdykgPT5cbiAgICAgICAgICAoaXRlbS5vbkhvdmVySGFuZGxlciB8fCB0aGlzLnRTLmdlbmVyYWxDb2x1bW5Qcm9wTWFwW2l0ZW0uZl0/Lm9uSG92ZXJIYW5kbGVyKS5hY3Rpb24oXG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICApO1xuICAgICAgICBpdGVtLl9vbkhvdmVyRGVsYXkgPSAoXG4gICAgICAgICAgaXRlbS5vbkhvdmVySGFuZGxlciB8fCB0aGlzLnRTLmdlbmVyYWxDb2x1bW5Qcm9wTWFwW2l0ZW0uZl0/Lm9uSG92ZXJIYW5kbGVyXG4gICAgICAgICkuZGVsYXk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5ub0Zvcm1hdCB8fCBpdGVtLmZvcm1hdHRlciB8fCBpdGVtLmZvcm1hdHRlclJvdykge1xuICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IHtcbiAgICAgICAgICBub0Zvcm1hdDogaXRlbS5ub0Zvcm1hdCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGl0ZW0uZm9ybWF0dGVyLFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl07XG4gICAgICBpZiAoc2F2ZWRDb25maWcpIHtcbiAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHNhdmVkQ29uZmlnLm5vRm9ybWF0O1xuICAgICAgICBpdGVtLmZvcm1hdHRlciA9IHNhdmVkQ29uZmlnLmZvcm1hdHRlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtRmllbGRMb3dlciA9IGl0ZW0uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIgPT0gJ2lkJyB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCd5ZWFyJykgfHxcbiAgICAgICAgICBpdGVtRmllbGRMb3dlci5pbmNsdWRlcygnYWdlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl0gPSBpdGVtO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNlbGxzVG9DaGVja0ZvcltpdGVtLmZdID0gaW5kZXg7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhKCkpIHJldHVybjtcbiAgICAvLyBjb25zb2xlLmxvZygnY2VsbHNUb0NoZWNrRm9yJywgSlNPTi5zdHJpbmdpZnkoY2VsbHNUb0NoZWNrRm9yKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5kYXRhKCkpIHtcbiAgICAgIGlmICghT2JqZWN0LmtleXMoY2VsbHNUb0NoZWNrRm9yKS5sZW5ndGgpIGJyZWFrO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW5zW2NlbGxzVG9DaGVja0ZvcltrZXldXTtcbiAgICAgICAgY29uc3QgdHlwZW8gPSB0eXBlb2Ygcm93W2tleV07XG4gICAgICAgIGlmICh0eXBlbyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMueWVzTm9DZWxsRm9ybWF0dGVyO1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0VGltZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5mdWxsRGF0ZVRpbWU7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0ZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5kYXRlRm9ybWF0O1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IHsgbm9Gb3JtYXQ6IHRydWUgfTtcbiAgfTtcblxuICBvdXRwdXRDaGVja2JveChmaWVsZDoga2V5b2YgVEl0ZW0sIGl0ZW06IFRJdGVtLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5lbWl0Q2hlY2tib3guZW1pdCh7IGZpZWxkLCBpdGVtLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGFsbFRhYmxlQ29sdW1ucyA9IGNvbXB1dGVkPFRhYmxlQ29sPFRJdGVtPltdPigoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YSgpPy5bMF0gfHwge30pLFxuICAgICAgZGlzcGxheWVkQ29sdW1uc01hcCA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc01hcCgpLFxuICAgICAgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwID0gdGhpcy5jb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAoKTtcblxuICAgIHJldHVybiBrZXlzXG4gICAgICAubWFwKChrKSA9PiB7XG4gICAgICAgIGNvbnN0IGUgPSBkaXNwbGF5ZWRDb2x1bW5zTWFwW2tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgZjogayBhcyBhbnksXG4gICAgICAgICAgdDogZT8udCB8fCB0aGlzLnVTLmZvcm1hdEZpZWxkKGspLFxuICAgICAgICAgIGFjdGl2ZTogISFjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXBba10sXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgIXguZGlzYWJsZWQgJiZcbiAgICAgICAgICAhKHg/LmY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnaWQnKSAmJiB4Py5mPy50b1N0cmluZygpLmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKTtcbiAgfSk7XG5cbiAgcm93Q2xpY2soZTogVEl0ZW0pIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICB9XG4gIHJlYWRvbmx5IGZvcm1PcHRpb25zTWFwID0gc2lnbmFsKChyb3c6IFRJdGVtKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucm93T3B0aW9uc01hcCgpPy4ocm93KT8uZmlsdGVyKCh4KSA9PiAhIXggJiYgIXguaWdub3JlKTtcbiAgICByZXR1cm4gb3B0aW9ucz8ubGVuZ3RoID8gb3B0aW9ucyA6IG51bGw7XG4gIH0pO1xuXG4gIGV4dHJhY3RSb3V0ZSA9IChjZWxsOiBUYWJsZUNvbCwgcm93OiBUSXRlbSk6IHsgcm91dGU6IHN0cmluZzsgcXVlcnlQYXJhbXM6IHt9IH0gPT4ge1xuICAgIGNvbnN0IFtyb3V0ZSwgcXBdID0gY2VsbC5yb3V0ZUZvcm1hdHRlcihyb3cpPy5zcGxpdCgnPycpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gKGNlbGwubXF1ZXJ5UGFyYW1zID8gY2VsbC5tcXVlcnlQYXJhbXMocm93KSA6IHt9KSB8fCB7fTtcbiAgICBpZiAocXApXG4gICAgICBxcC5zcGxpdCgnJicpLmZvckVhY2goKHEpID0+IHtcbiAgICAgICAgY29uc3QgW2ZpZWxkLCB2YWxdID0gcS5zcGxpdCgnPScpO1xuICAgICAgICBxdWVyeVBhcmFtc1tmaWVsZF0gPSB2YWw7XG4gICAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyhyb3V0ZSwgcXApO1xuICAgIHJldHVybiB7IHJvdXRlLCBxdWVyeVBhcmFtcyB9O1xuICB9O1xuXG4gIHJlYWRvbmx5IG5nQWZ0ZXJWaWV3SW5pdFNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkQ2VsbEZvckV4cGFuc2lvbiA9IHNpZ25hbDx7IGNvbHVtbjogVGFibGVDb2w7IHJvdzogVEl0ZW0gfT4odW5kZWZpbmVkKTtcblxuICBleHBhbmRDZWxsKHJvdzogVEl0ZW0sIGNvbHVtbjogVGFibGVDb2wsIG1vZGFsOiBNb2RhbENvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uLnNldCh7IHJvdywgY29sdW1uIH0pO1xuICAgIG1vZGFsLm9wZW4oKTtcbiAgfVxuXG4gIGNsb3NlRXhwYW5kZWRDZWxsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVmcmVzaFVJKCkge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuXG5jbGFzcyBUYWJsZUNvbEZvcm1hdHRlZDxUUm93PiBleHRlbmRzIFRhYmxlQ29sPFRSb3c+IHtcbiAgX29uSG92ZXJGdW5jdGlvbj86IE5FTE1vdXNlRXZlbnRIYW5kbGVyPFRSb3c+WydhY3Rpb24nXTtcbiAgX29uSG92ZXJEZWxheT86IG51bWJlciA9IDA7XG59XG4iXX0=
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUtMLFFBQVEsR0FDVCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQVMzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxLQUFLLENBQXNCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hF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T0FBTztnQkFDRSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87O0FBd05wQixNQUFNLGlCQUF3QixTQUFRLFFBQWM7SUFBcEQ7O1FBRUUsa0JBQWEsR0FBWSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5FTEV2ZW50LCBORUxNb3VzZUV2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbmF0aXZlLWV2ZW50LWxpc3RlbmVycy5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IF9yb3dPcHRpb25zID0gaW5wdXQ8SVJvd09wdGlvbjxUSXRlbT5bXT4obnVsbCwgeyBhbGlhczogJ3Jvd09wdGlvbnMnIH0pO1xuICByZWFkb25seSByb3dPcHRpb25zTWFwID0gaW5wdXQ8KHJvdzogVEl0ZW0pID0+IChJUm93T3B0aW9uPFRJdGVtPiB8IG51bGwpW10+KCk7XG4gIHJlYWRvbmx5IGNlbnRlckNlbGxzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjdXJ2eSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzdGluY3QgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgLyoqQXBwZWFycyBhYm92ZSB0aGUgdGFibGUgKi9cbiAgcmVhZG9ubHkgaGVhZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0V4cGFuZGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBVc2VkIHRvIG5hbWUgbWV0YWRhdGEgb2YgdGhlIHRhYmxlIGxpa2UgZXhwb3J0ZWQgZmlsZXMgKi9cbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlzRGlzYWJsZWRGdW5jID0gaW5wdXQ8KHJvdzogVEl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG5vSXRlbVR4dCA9IGlucHV0KCdUaGVyZSBhcmUgbm8gaXRlbXMnKTtcbiAgcmVhZG9ubHkgbm93cmFwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGRlYnVnID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRSb3dUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IG9yZGVyRGlyZWN0aW9uID0gaW5wdXQ8U29ydFR5cGU+KCdhc2MnKTtcbiAgcmVhZG9ubHkgb3JkZXJGaWVsZCA9IGlucHV0PGtleW9mIFRJdGVtPigpO1xuICByZWFkb25seSBwYWdlU2l6ZSA9IGlucHV0KDEwKTtcbiAgcmVhZG9ubHkgY3VzdG9tVGVtcGxhdGVzID0gaW5wdXQ8eyBbeCBpbiBrZXlvZiBUSXRlbV0/OiBUZW1wbGF0ZVJlZjxhbnk+IH0+KCk7XG4gIHJlYWRvbmx5IHN0YXJ0U2VjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+PigpO1xuICByZWFkb25seSBjb21wdXRlZFBhZ2VTaXplT3B0aW9ucyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFBhZ2VTaXplT3B0aW9ucyA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucygpLFxuICAgICAgcGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHJlc3VsdHNMZW5ndGggPSB0aGlzLnJlc3VsdHNMZW5ndGgoKTtcbiAgICBjb25zdCBvcHRpb25zID0gcGFnZVNpemVPcHRpb25zPy5sZW5ndGggPyBwYWdlU2l6ZU9wdGlvbnMgOiBkZWZhdWx0UGFnZVNpemVPcHRpb25zO1xuICAgIHJldHVybiBvcHRpb25zLmNvbmNhdChvcHRpb25zPy5sYXN0SXRlbSgpID4gcmVzdWx0c0xlbmd0aCA/IFtdIDogW3Jlc3VsdHNMZW5ndGhdKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSBzaWduYWwoWzUsIDEwLCAyMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwXSk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPigpO1xuICByZWFkb25seSBwbGFjZVNlbGVjdGlvbkF0UmlnaHQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIHN1cHBvcnQgY3VzdG9taXppbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3QgY2hlY2tib3hlcy5cbiAgcmVhZG9ubHkgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93RXhwb3J0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93Um93UG9pbnRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc21hbGxlckZvbnRzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzdHJpcGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHRhYmxlQ29udGFpbmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHVzZVNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBmb3JtU2NoZW1hVG9Db2x1bW5zID0gaW5wdXQ8SUZvcm1TY2hlbWE8SVN0cmljdEZvcm1Hcm91cDxUSXRlbT4+W10+KCk7XG4gIHJlYWRvbmx5IHVwbG9hZFNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PHsgZmllbGQ/OiBrZXlvZiBUSXRlbTsgbGFiZWw/OiBzdHJpbmcgfVtdPigpO1xuXG4gIHJlYWRvbmx5IF9kaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2w8VEl0ZW0+W10+KFtdLCB7IGFsaWFzOiAnZGlzcGxheWVkQ29sdW1ucycgfSk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKT8uZmlsdGVyKCh4KSA9PiAheC5pZ25vcmUpO1xuICAgIHJldHVybiB0aGlzLnVzZUN1c3RvbUxhYmVscygpID8gdGhpcy50Uy5nbG9iYWxDb2x1bW5zRm9ybWF0dGVyKGNvbHVtbnMpIDogY29sdW1ucztcbiAgfSk7XG4gIC8qKlVzZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5ZWQgY29sdW1ucyB0aHJvdWdoIGludGVybmFsIGFjdGl2aXRpZXMgbGlrZSBtb2RpZmljYXRpb24gZnJvbSBBZGRpdGlvbmFsIGNvbHVtbnMgKi9cbiAgLy8gcHJvdGVjdGVkXG4gIHJlYWRvbmx5IG92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucyA9IHNpZ25hbDxUYWJsZUNvbDxUSXRlbT5bXT4obnVsbCk7XG5cbiAgLyoqQ29sdW1ucyB0aGF0IGFyZSBub3QgbWFya2VkIGFzIEFkZGl0aW9uYWwgQ29sdW1ucyBhbmQgYXJlIG5vdCBkaXNhYmxlZCovXG4gIHJlYWRvbmx5IHByZXNlbnRhYmxlQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4gJiYgIXguZGlzYWJsZWQpKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMge1xuICAgICAgICBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sRm9ybWF0dGVkPFRJdGVtPjtcbiAgICAgIH0sXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRjID1cbiAgICAgICAgdGhpcy5wcmVzZW50YWJsZUNvbHVtbnMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1uc1xuICAgICAgICAgID8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKVxuICAgICAgICAgIC5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQgYXMgVGFibGVDb2w8VEl0ZW0+WydmJ10sIHQ6IHgubGFiZWwgfSkpIHx8IFtdLFxuICAgICAgKTtcbiAgICBjb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHgpID0+IHguZik7XG4gICAgdGhpcy5oYW5kbGVDb2x1bW5zKGNvbHVtbnMpO1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9KTtcblxuICBAT3V0cHV0KCdyb3dDbGljaycpIF9yb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VEl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBlbWl0Q2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBmaWVsZDoga2V5b2YgVEl0ZW07XG4gICAgaXRlbTogVEl0ZW07XG4gICAgdmFsdWU6IGJvb2xlYW47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcj86IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0PzogTWF0U29ydDtcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZTogTWF0VGFibGU8YW55PjtcbiAgcmVhZG9ubHkgcmVzdWx0c0xlbmd0aDogU2lnbmFsPG51bWJlcj47XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydGVyU2VjdGlvbkNsYXNzID0gc2lnbmFsKCdyb3cgcm93LWNvbHMtbGctYXV0byBnLTMgYWxpZ24taXRlbXMtY2VudGVyJyk7XG4gIHJlYWRvbmx5IHJhd0NvbHVtbnMgPSBjb21wdXRlZDxzdHJpbmdbXT4oKCkgPT5cbiAgICB0aGlzLnRTLmdldFJhd0ZpZWxkcyhcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCksXG4gICAgICB0aGlzLmhhc1Jvd09wdGlvbnMoKSxcbiAgICAgIHRoaXMudXNlU2VsZWN0aW9uKCksXG4gICAgICB0aGlzLnBsYWNlU2VsZWN0aW9uQXRSaWdodCgpLFxuICAgICAgdGhpcy5pc0V4cGFuZGFibGUoKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBleHBhbmRlZEVsZW1lbnQgPSBzaWduYWw8VEl0ZW0+KG51bGwpO1xuICByZWFkb25seSBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8VEl0ZW0+KHRydWUsIFtdKTtcbiAgcHJvdGVjdGVkIF9zZWxlY3Rpb25DaGFuZ2VkID0gdG9TaWduYWwodGhpcy5zZWxlY3Rpb24uY2hhbmdlZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXNTaWduYWwgPSB0b1NpZ25hbChcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnBpcGUoXG4gICAgICBtYXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSxcbiAgICAgIHN0YXJ0V2l0aChbXSksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjZWxsRm9ybWF0dGVyTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEl0ZW1dPzogUGFydGlhbDxUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT4+O1xuICB9ID0ge307XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyB0UyA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuICByZWFkb25seSB1c2VDdXN0b21MYWJlbHMgPSBtb2RlbCh0cnVlKTtcblxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1zU2lnbmFsKCkubGVuZ3RoID09IHRoaXMuZGF0YSgpPy5sZW5ndGgpO1xuICByZWFkb25seSBpc0FueVNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1zU2lnbmFsKCkubGVuZ3RoID4gMCk7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBjb21wdXRlZDxJUm93T3B0aW9uPFRJdGVtPltdPigoKSA9PlxuICAgIHRoaXMuX3Jvd09wdGlvbnMoKT8uZmlsdGVyKCh4KSA9PiAhIXggJiYgIXguaWdub3JlKSxcbiAgKTtcbiAgcmVhZG9ubHkgaGFzUm93T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5yb3dPcHRpb25zKCk/Lmxlbmd0aCB8fCAhIXRoaXMucm93T3B0aW9uc01hcCgpKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgYDtcbiAgfVxuXG4gIGZpZWxkc0NoYW5nZWQoJGV2ZW50OiB7IG5GaWVsZHM6IFRhYmxlQ29sW107IGFsbEZpZWxkczogVGFibGVDb2xbXSB9KSB7XG4gICAgY29uc3QgY29scyA9ICRldmVudC5uRmllbGRzO1xuICAgIHRoaXMub3ZlcnJpZGVEaXNwbGF5ZWRDb2x1bW5zLnNldChcbiAgICAgIGNvbHNcbiAgICAgICAgLmZpbHRlcigoeCkgPT4gISh4LnR5cGUgPT0gJ2J0bnMnICYmIHguc3RpY2t5KSlcbiAgICAgICAgLmNvbmNhdChjb2xzLmZpbHRlcigoeCkgPT4geC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5tYXAoKHgpID0+IHtcbiAgICAgICAgICBpZiAoeC50eXBlID09PSAnbnVtYmVyJykgeC5mb3JtYXR0ZXIgPSB0aGlzLnVTLm1vbmV5UGFyc2VyO1xuICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSB7XG4gICAgcmV0dXJuIChzdGF0ZTogYm9vbGVhbikgPT4gKGNvbC5idG4ubG9hZGluZyA9IHN0YXRlKTtcbiAgfVxuICByZWFkb25seSBkYXRhOiBXcml0YWJsZVNpZ25hbDxUSXRlbVtdPjtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29sdW1ucyA9IChjb2x1bW5zOiBUYWJsZUNvbEZvcm1hdHRlZDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGlmICghY29sdW1ucz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXN0b21UZW1wbGF0ZXMgPSB0aGlzLmN1c3RvbVRlbXBsYXRlcygpO1xuICAgIGNvbnN0IGNlbGxzVG9DaGVja0ZvcjogeyBbayBpbiBrZXlvZiBUSXRlbV0/OiBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnN0IGRhdGVGaWVsZHMgPSB7IGNyZWF0ZWRPbjogMSwgdXBkYXRlZE9uOiAxIH07XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gY29sdW1uc1tpbmRleF07XG4gICAgICBpdGVtLmN1c3RvbVRlbXBsYXRlID0gY3VzdG9tVGVtcGxhdGVzPy5baXRlbS5mXTtcbiAgICAgIGlmIChcbiAgICAgICAgIShcbiAgICAgICAgICBpdGVtLnByZXZpZXdPbkhvdmVyID09PSBmYWxzZSB8fFxuICAgICAgICAgICghaXRlbS5vbkhvdmVySGFuZGxlciAmJiAhdGhpcy50Uy5nZW5lcmFsQ29sdW1uUHJvcE1hcFtpdGVtLmZdPy5vbkhvdmVySGFuZGxlcilcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJGdW5jdGlvbiA9IChldmVudCwgcm93KSA9PlxuICAgICAgICAgIChpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXIpLmFjdGlvbihcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICk7XG4gICAgICAgIGl0ZW0uX29uSG92ZXJEZWxheSA9IChcbiAgICAgICAgICBpdGVtLm9uSG92ZXJIYW5kbGVyIHx8IHRoaXMudFMuZ2VuZXJhbENvbHVtblByb3BNYXBbaXRlbS5mXT8ub25Ib3ZlckhhbmRsZXJcbiAgICAgICAgKS5kZWxheTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLm5vRm9ybWF0IHx8IGl0ZW0uZm9ybWF0dGVyIHx8IGl0ZW0uZm9ybWF0dGVyUm93KSB7XG4gICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtpdGVtLmZdID0ge1xuICAgICAgICAgIG5vRm9ybWF0OiBpdGVtLm5vRm9ybWF0LFxuICAgICAgICAgIGZvcm1hdHRlcjogaXRlbS5mb3JtYXR0ZXIsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2F2ZWRDb25maWcgPSB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXTtcbiAgICAgIGlmIChzYXZlZENvbmZpZykge1xuICAgICAgICBpdGVtLm5vRm9ybWF0ID0gc2F2ZWRDb25maWcubm9Gb3JtYXQ7XG4gICAgICAgIGl0ZW0uZm9ybWF0dGVyID0gc2F2ZWRDb25maWcuZm9ybWF0dGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGl0ZW1GaWVsZExvd2VyID0gaXRlbS5mPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtRmllbGRMb3dlciA9PSAnaWQnIHx8XG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIuaW5jbHVkZXMoJ3llYXInKSB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCdhZ2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICBpdGVtLm5vRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IGl0ZW07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2VsbHNUb0NoZWNrRm9yW2l0ZW0uZl0gPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGEoKSkgcmV0dXJuO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjZWxsc1RvQ2hlY2tGb3InLCBKU09OLnN0cmluZ2lmeShjZWxsc1RvQ2hlY2tGb3IpKTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLmRhdGEoKSkge1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhjZWxsc1RvQ2hlY2tGb3IpLmxlbmd0aCkgYnJlYWs7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNvbHVtbnNbY2VsbHNUb0NoZWNrRm9yW2tleV1dO1xuICAgICAgICBjb25zdCB0eXBlbyA9IHR5cGVvZiByb3dba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvID09ICdib29sZWFuJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy55ZXNOb0NlbGxGb3JtYXR0ZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlbyA9PSAnbnVtYmVyJykge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRUaW1lVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmZ1bGxEYXRlVGltZTtcbiAgICAgICAgICBkZWxldGUgY2VsbHNUb0NoZWNrRm9yW2tleV07XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2tleV0gPSBjZWxsO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudVMuaXNEYXRlVmFsdWUocm93W2tleV0pKSB7XG4gICAgICAgICAgY2VsbC5mb3JtYXR0ZXIgPSB0aGlzLnVTLmRhdGVGb3JtYXQ7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjZWxsc1RvQ2hlY2tGb3IpIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0geyBub0Zvcm1hdDogdHJ1ZSB9O1xuICB9O1xuXG4gIG91dHB1dENoZWNrYm94KGZpZWxkOiBrZXlvZiBUSXRlbSwgaXRlbTogVEl0ZW0sIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmVtaXRDaGVja2JveC5lbWl0KHsgZmllbGQsIGl0ZW0sIHZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgYWxsVGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5kYXRhKCk/LlswXSB8fCB7fSksXG4gICAgICBkaXNwbGF5ZWRDb2x1bW5zTWFwID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zTWFwKCksXG4gICAgICBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCgpO1xuXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgZSA9IGRpc3BsYXllZENvbHVtbnNNYXBba107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZSxcbiAgICAgICAgICBmOiBrIGFzIGFueSxcbiAgICAgICAgICB0OiBlPy50IHx8IHRoaXMudVMuZm9ybWF0RmllbGQoayksXG4gICAgICAgICAgYWN0aXZlOiAhIWNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcFtrXSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICAheC5kaXNhYmxlZCAmJlxuICAgICAgICAgICEoeD8uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdpZCcpICYmIHg/LmY/LnRvU3RyaW5nKCkubGVuZ3RoID09PSAyKSxcbiAgICAgIClcbiAgICAgIC5zb3J0MigndCcsIHRydWUpO1xuICB9KTtcblxuICByb3dDbGljayhlOiBUSXRlbSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQ7XG4gIH1cbiAgcmVhZG9ubHkgZm9ybU9wdGlvbnNNYXAgPSBzaWduYWwoKHJvdzogVEl0ZW0pID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5yb3dPcHRpb25zTWFwKCk/Lihyb3cpPy5maWx0ZXIoKHgpID0+ICEheCAmJiAheC5pZ25vcmUpO1xuICAgIHJldHVybiBvcHRpb25zPy5sZW5ndGggPyBvcHRpb25zIDogbnVsbDtcbiAgfSk7XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG5cbmNsYXNzIFRhYmxlQ29sRm9ybWF0dGVkPFRSb3c+IGV4dGVuZHMgVGFibGVDb2w8VFJvdz4ge1xuICBfb25Ib3ZlckZ1bmN0aW9uPzogTkVMTW91c2VFdmVudEhhbmRsZXI8VFJvdz5bJ2FjdGlvbiddO1xuICBfb25Ib3ZlckRlbGF5PzogbnVtYmVyID0gMDtcbn1cbiJdfQ==