tnx-shared 5.3.389 → 5.3.391

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.
@@ -7,9 +7,12 @@ export declare class CommonSearchFormComponent extends DataFormBase implements O
7
7
  protected _commonService: CommonService;
8
8
  commonSearchTemplate: ElementRef;
9
9
  templateFilter: any;
10
- searchBoxTooltip: string;
10
+ private _searchBoxTooltip;
11
+ private isCustomTooltip;
12
+ set searchBoxTooltip(value: string);
11
13
  onClickSearch: EventEmitter<any>;
12
14
  onAfterToggleMenuSearch: EventEmitter<any>;
15
+ get searchBoxTooltip(): string;
13
16
  mdWidth: number;
14
17
  lstDropdownControl: any[];
15
18
  lstDatetimeControl: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"common-search-form.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-search-form/common-search-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAwH,SAAS,EAAE,cAAc,EAAyD,MAAM,2BAA2B,CAAC;AAEnP,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IA0BrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IA1Bc,oBAAoB,EAAE,UAAU,CAAC;IACjF,cAAc,EAAE,GAAG,CAAM;IACzB,gBAAgB,SAAgC;IAC/C,aAAa,oBAA2B;IACxC,uBAAuB,oBAA2B;IAE5D,OAAO,SAAK;IACZ,kBAAkB,QAAM;IACxB,kBAAkB,QAAM;IACxB,qBAAqB,QAAM;IAC3B,cAAc,QAAM;IACpB,cAAc,QAAM;IACpB,eAAe,QAAM;IACrB,uBAAuB,QAAM;IAC7B,kBAAkB,QAAM;IACxB,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;IAC1B,MAAM,SAAK;gBAGG,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAgDR,mBAAmB;IAkCnB,aAAa,CAAC,OAAO,EAAE,GAAG;IAiH1B,YAAY,CAAC,OAAO,KAAA;IAwBpB,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;IAwEvC,WAAW;IAiBX,gBAAgB;IAQV,uBAAuB;IAQvB,iBAAiB,CAAC,SAAS,EAAE,SAAS;IAKtC,gBAAgB,CAAC,IAAI,KAAA;IAI3B,eAAe;CAKlB"}
1
+ {"version":3,"file":"common-search-form.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-search-form/common-search-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAwH,SAAS,EAAE,cAAc,EAAyD,MAAM,2BAA2B,CAAC;AAEnP,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IAuCrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IAvCc,oBAAoB,EAAE,UAAU,CAAC;IACjF,cAAc,EAAE,GAAG,CAAM;IAClC,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,eAAe,CAAS;IAChC,IAAa,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAK1C;IAES,aAAa,oBAA2B;IACxC,uBAAuB,oBAA2B;IAE5D,IAAW,gBAAgB,IAVU,MAAM,CAa1C;IAED,OAAO,SAAK;IACZ,kBAAkB,QAAM;IACxB,kBAAkB,QAAM;IACxB,qBAAqB,QAAM;IAC3B,cAAc,QAAM;IACpB,cAAc,QAAM;IACpB,eAAe,QAAM;IACrB,uBAAuB,QAAM;IAC7B,kBAAkB,QAAM;IACxB,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;IAC1B,MAAM,SAAK;gBAGG,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAkDR,mBAAmB;IAkCnB,aAAa,CAAC,OAAO,EAAE,GAAG;IAiH1B,YAAY,CAAC,OAAO,KAAA;IAwBpB,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;IAwEvC,WAAW;IAiBX,gBAAgB;IAQV,uBAAuB;IAQvB,iBAAiB,CAAC,SAAS,EAAE,SAAS;IAKtC,gBAAgB,CAAC,IAAI,KAAA;IAI3B,eAAe;CAKlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-manager.component.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/file-explorer/file-manager/file-manager.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-manager.component.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/file-explorer/file-manager/file-manager.component.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@ export class CommonSearchFormComponent extends DataFormBase {
12
12
  this._injector = _injector;
13
13
  this._commonService = _commonService;
14
14
  this.templateFilter = [];
15
- this.searchBoxTooltip = 'Tìm kiếm theo các trường: ';
15
+ this._searchBoxTooltip = 'Tìm kiếm theo các trường: ';
16
+ this.isCustomTooltip = false;
16
17
  this.onClickSearch = new EventEmitter();
17
18
  this.onAfterToggleMenuSearch = new EventEmitter();
18
19
  this.mdWidth = 3;
@@ -33,6 +34,15 @@ export class CommonSearchFormComponent extends DataFormBase {
33
34
  this.isDisableOpenFull = false;
34
35
  this._index = 1;
35
36
  }
37
+ set searchBoxTooltip(value) {
38
+ if (value) {
39
+ this.isCustomTooltip = true;
40
+ this._searchBoxTooltip = value;
41
+ }
42
+ }
43
+ get searchBoxTooltip() {
44
+ return this._searchBoxTooltip;
45
+ }
36
46
  ngOnInit() {
37
47
  if (!this.parentSetting.useCommonFullTextSearch) {
38
48
  this.parentSetting.disableLazyLoadCommonSearch = true;
@@ -65,7 +75,9 @@ export class CommonSearchFormComponent extends DataFormBase {
65
75
  this.lstTextControl.push(item.field);
66
76
  });
67
77
  }
68
- this.searchBoxTooltip += arrLabel.join(', ');
78
+ if (!this.isCustomTooltip) {
79
+ this._searchBoxTooltip += arrLabel.join(', ');
80
+ }
69
81
  this._index = 2;
70
82
  }
71
83
  if (this.isCustomGenerateSearch) {
@@ -363,4 +375,4 @@ CommonSearchFormComponent.propDecorators = {
363
375
  onClickSearch: [{ type: Output }],
364
376
  onAfterToggleMenuSearch: [{ type: Output }]
365
377
  };
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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QUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLnJhd0NvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyckxhYmVsID0gW107XG4gICAgICAgICAgICBjb25zdCBsc3RUZXh0U2VhcmNoQ29udHJvbCA9IGNvbHVtbkZpbHRlcnMuZmlsdGVyKHAgPT4gcC5mdWxsVGV4dFNlYXJjaCk7XG4gICAgICAgICAgICBpZiAobHN0VGV4dFNlYXJjaENvbnRyb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbHN0VGV4dFNlYXJjaENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXJyTGFiZWwucHVzaChpdGVtLmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5wdXNoKGl0ZW0uZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZnVsbFRleHRTZWFyY2ggY3VzdG9tXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLmFyckZ1bGxUZXh0U2VhcmNoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5hcnJGdWxsVGV4dFNlYXJjaC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBhcnJMYWJlbC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wucHVzaChpdGVtLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBhcnJMYWJlbC5qb2luKCcsICcpO1xuICAgICAgICAgICAgdGhpcy5faW5kZXggPSAyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybVNjaGVtYUN1c3RvbSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuZ2VuRm9ybVNjaGVtYShjb2x1bW5GaWx0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGlzYWJsZU9wZW5GdWxsID0gKHRoaXMuc2V0dGluZy5zY2hlbWEubGVuZ3RoIDw9IE1hdGgucm91bmQoMTIgLyAodGhpcy5wYXJlbnRTZXR0aW5nLm1kV2lkdGhDb21tb25TZWFyY2gpKSkgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0Rm9ybVNjaGVtYUN1c3RvbSgpIHtcbiAgICAgICAgY29uc3QgdG90YWxDb250cm9sUGVyUm93ID0gMTIgLyB0aGlzLm1kV2lkdGg7XG4gICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGNvbHVtbi5zaG93TGFiZWwgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbHVtbi5tZFdpZHRoID0gdGhpcy5tZFdpZHRoO1xuICAgICAgICAgICAgY29sdW1uWydwbGFjZWhvbGRlciddID0gY29sdW1uLmxhYmVsO1xuICAgICAgICAgICAgaWYgKCEoY29sdW1uIGluc3RhbmNlb2YgVGV4dENvbnRyb2xTY2hlbWEpIHx8IGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ub25BZnRlckNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2gobnVsbCwgZXZ0LmNvbnRyb2wuZmllbGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmlzQWxsb3dEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmIChjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYWRkVG9HcmlkSW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uLmlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICYmIGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cblxuICAgIGdlbkZvcm1TY2hlbWEoY29sdW1uczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzQm9vbCA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PSBDb250cm9sVHlwZS5kcm9wZG93biB8fCBpc0Jvb2wgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gY29sdW1uLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzQm9vbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IFt7IGlkOiB0cnVlLCB0ZW46ICdDw7MnIH0sIHsgaWQ6IGZhbHNlLCB0ZW46ICdLaMO0bmcnIH1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJpbmRpbmdGaWx0ZXJzICYmIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5zZXQoaXRlbS5maWVsZCwgY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYmFzZVNlcnZpY2UgfHwgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICEhY29sdW1uLmJhc2VTZXJ2aWNlICYmICEoY29sdW1uLmJhc2VTZXJ2aWNlIGluc3RhbmNlb2YgTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FsbG93RGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGF6eUxvYWQ6IGlzTGF6eUxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uc2luZ2xlID8gZXZ0LnZhbHVlLmlkID8/IGV2dC52YWx1ZSA6IGV2dC52YWx1ZS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluZGluZ0ZpbHRlclZhbCA9IHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuZ2V0KGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdGaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldnQudmFsdWUgfHwgZXZ0LnZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuZmlsdGVyRnJvbVBhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFjb2x1bW4uaW5jbHVkZVNlbGVjdCB8fCAhY29sdW1uLmlzSW5UYWJsZSkgJiYgIWNvbHVtbi5mb3JjZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkQ29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRlOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGV0aW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGV2dC5zb3VyY2VFdmVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaChldnQucGFyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93VGltZSA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5kYXRldGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLnRpbWVzcGFuOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi50aW1lT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50V2l0aG91dE1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGVjaW1hbDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5jdXJyZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXNrVHlwZSA9IGNvbHVtbi5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXggPSBjb2x1bW4ubWF4IHx8IDk5OTk5OTk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goYWRkQ29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkU2VhcmNoQm94KHJlc3VsdC5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgIH1cblxuICAgIGFkZFNlYXJjaEJveChjb2x1bW5zKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2tleXdvcmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIGZ1bGxMYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKDEyIC8gdGhpcy5tZFdpZHRoKSAtIDE7XG4gICAgICAgIGlmICh0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKDAsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sdW1ucy5sZW5ndGggPCBpbmRleCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2goZGF0YT86IGFueSwgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyRnVsbFRleHRTZWFyY2ggPSBbXTtcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZHMgJiYgdGhpcy5sc3RUZXh0Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJUZXh0ID0gW107XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgbHN0RmlsdGVyVGV4dC5wdXNoKHRoaXMubmV3RmlsdGVyKGl0ZW0sIE9wZXJhdG9yLmNvbnRhaW4sIHRoaXMua2V5d29yZHMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGVyRnVsbFRleHRTZWFyY2gucHVzaChuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IGxzdEZpbHRlclRleHQgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMubW9kZWwuZGF0YTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgJiYgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbihkYXRhLCB0aGlzLmRlZmF1bHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGREZWZhdWx0VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJBZGRDdXN0b20gPSBsc3RGaWx0ZXJzLmZpbHRlcihwID0+IHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8uaW5jbHVkZXMocC5maWVsZCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubHN0RmlsdGVyQWRkQ3VzdG9tXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJzLmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgKCFkYXRhW2l0ZW1dIHx8IGRhdGFbaXRlbV0ubGVuZ3RoIDwgMSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLnJhd0NvbHMuZmluZChwID0+IHAuZmllbGQgPT09IGl0ZW0pPy52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaXRlbV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dLm1hcChwID0+IHBbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV1bdmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sc3RCb29sQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICFBcnJheS5pc0FycmF5KGRhdGFbaXRlbV0pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2l0ZW1dLmluZGV4T2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICBsc3RGaWx0ZXJzID0gWy4uLmxzdEZpbHRlcnMsIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoXTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBsc3RGaWx0ZXJzLmZpbHRlcihwID0+ICF0aGlzLmxzdENvbnRyb2xOb3RJbi5pbmNsdWRlcyhwLmZpZWxkKSksXG4gICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5mb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZvcm1Db250cm9sc1twXTtcbiAgICAgICAgICAgIGxldCByZXNldFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgJiYgaXRlbS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgaWYgKHRoaXMubHN0Q29udHJvbExhenlMb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25BZnRlclRvZ2dsZU1lbnVTZWFyY2guZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5mb3JFYWNoKGNvbnRyb2wgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmZvcm1Db250cm9sc1tjb250cm9sXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCkpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXNDdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBdENsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUMxQixzQkFBaUIsR0FBVyw0QkFBNEIsQ0FBQztRQUN6RCxvQkFBZSxHQUFHLEtBQUssQ0FBQztR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Q0FBQztLQUFBO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JHO0lBQ0wsQ0FBQzs7O1lBdFlKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwyNkRBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVo2QyxRQUFRO1lBSzdDLGFBQWE7OzttQ0FTakIsU0FBUyxTQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs2QkFDdEQsS0FBSzsrQkFHTCxLQUFLOzRCQU9MLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhRm9ybUJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1mb3JtLWJhc2UnO1xuaW1wb3J0IHsgQ29udHJvbFR5cGUsIEN1c3RvbUNvbnRyb2xTY2hlbWEsIERhdGFUeXBlLCBEYXRlVGltZUNvbnRyb2xTY2hlbWEsIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEV2ZW50RGF0YSwgRm9ybVNjaGVtYUJhc2UsIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSwgT3BlcmF0b3IsIFRleHRDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjb21tb24tc2VhcmNoLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VhcmNoRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnY29tbW9uU2VhcmNoVGVtcGxhdGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29tbW9uU2VhcmNoVGVtcGxhdGU6IEVsZW1lbnRSZWY7XG4gICAgQElucHV0KCkgdGVtcGxhdGVGaWx0ZXI6IGFueSA9IFtdO1xuICAgIHByaXZhdGUgX3NlYXJjaEJveFRvb2x0aXA6IHN0cmluZyA9ICdUw6xtIGtp4bq/bSB0aGVvIGPDoWMgdHLGsOG7nW5nOiAnO1xuICAgIHByaXZhdGUgaXNDdXN0b21Ub29sdGlwID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2V0IHNlYXJjaEJveFRvb2x0aXAodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNDdXN0b21Ub29sdGlwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJveFRvb2x0aXAgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlYXJjaEJveFRvb2x0aXAoKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEJveFRvb2x0aXA7XG4gICAgfVxuXG4gICAgbWRXaWR0aCA9IDM7XG4gICAgbHN0RHJvcGRvd25Db250cm9sID0gW107XG4gICAgbHN0RGF0ZXRpbWVDb250cm9sID0gW107XG4gICAgbHN0TnVtYmVyUmFuZ2VDb250cm9sID0gW107XG4gICAgbHN0VGV4dENvbnRyb2wgPSBbXTtcbiAgICBsc3RCb29sQ29udHJvbCA9IFtdO1xuICAgIGxzdENvbnRyb2xOb3RJbiA9IFtdO1xuICAgIGxzdENvbnRyb2xBZGRUb0dyaWRJbmZvID0gW107XG4gICAgbHN0Q29udHJvbExhenlMb2FkID0gW107XG4gICAgZGVmYXVsdFZhbHVlcyA9IHt9O1xuICAgIGlzQWRkRGVmYXVsdFZhbHVlcyA9IGZhbHNlO1xuICAgIG1hcENvbnRyb2xCaW5kaW5nRmlsdGVyID0gbmV3IE1hcCgpO1xuICAgIGtleXdvcmRzID0gJyc7XG4gICAgaXNPcGVuRnVsbCA9IGZhbHNlO1xuICAgIGlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSBmYWxzZTtcbiAgICBpc0Rpc2FibGVPcGVuRnVsbCA9IGZhbHNlO1xuICAgIF9pbmRleCA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWRXaWR0aCA9IHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoO1xuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLnBhcmVudFNldHRpbmcuYmFzZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCA9IHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLnBhcmVudFNldHRpbmcucmF3Q29scy5maWx0ZXIocCA9PiBwLmFsbG93RmlsdGVyICYmICFwLmZpZWxkLnN0YXJ0c1dpdGgoJ3N0cicpKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5vcmRlciA8IGIub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYS5vcmRlciA+IGIub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgY29uc3QgYXJyTGFiZWwgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIGlmIChsc3RUZXh0U2VhcmNoQ29udHJvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsc3RUZXh0U2VhcmNoQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBhcnJMYWJlbC5wdXNoKGl0ZW0ubGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLnB1c2goaXRlbS5maWVsZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmdWxsVGV4dFNlYXJjaCBjdXN0b21cbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcuYXJyRnVsbFRleHRTZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmFyckZ1bGxUZXh0U2VhcmNoLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFyckxhYmVsLnB1c2goaXRlbS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5wdXNoKGl0ZW0uZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ3VzdG9tVG9vbHRpcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJveFRvb2x0aXAgKz0gYXJyTGFiZWwuam9pbignLCAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pc0FsbG93RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmFkZFRvR3JpZEluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5pc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAmJiBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgJiYgISFjb2x1bW4uYmFzZVNlcnZpY2UgJiYgIShjb2x1bW4uYmFzZVNlcnZpY2UgaW5zdGFuY2VvZiBNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuYWRkU2VhcmNoQm94KHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCB0b3RhbENvbnRyb2xQZXJSb3cgPSAxMiAvIHRoaXMubWRXaWR0aDtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbHVtbi5pc0luVGFibGUgfHwgIWNvbHVtbi5pbmNsdWRlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTm90SW4ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdFZhbHVlJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBbGxvd0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiAhY29sdW1uLnNpbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xhenlMb2FkOiBpc0xhenlMb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlZDogKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gY29sdW1uLnNpbmdsZSA/IGV2dC52YWx1ZS5pZCA/PyBldnQudmFsdWUgOiBldnQudmFsdWUubWFwKHAgPT4gcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdGaWx0ZXJWYWwgPSB0aGlzLm1hcENvbnRyb2xCaW5kaW5nRmlsdGVyLmdldChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nRmlsdGVyVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZ0LnZhbHVlIHx8IGV2dC52YWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50LmZpbHRlckZyb21QYXJlbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghY29sdW1uLmluY2x1ZGVTZWxlY3QgfHwgIWNvbHVtbi5pc0luVGFibGUpICYmICFjb2x1bW4uZm9yY2VMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZENvbHVtbjogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRldGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQuc291cmNlRXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2goZXZ0LnBhcmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd1RpbWUgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuZGF0ZXRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS50aW1lc3BhbjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4udGltZU9ubHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLmRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludFdpdGhvdXRNYXNrOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRlY2ltYWw6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWFza1R5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWF4ID0gY29sdW1uLm1heCB8fCA5OTk5OTk5OTk5OTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGFkZENvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNlYXJjaEJveChyZXN1bHQuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cbiAgICBhZGRTZWFyY2hCb3goY29sdW1ucykge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IEN1c3RvbUNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBmdWxsTGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcigxMiAvIHRoaXMubWRXaWR0aCkgLSAxO1xuICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZSgwLCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubGVuZ3RoIDwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoKGRhdGE/OiBhbnksIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bGxUZXh0U2VhcmNoID0gW107XG4gICAgICAgIGlmICh0aGlzLmtleXdvcmRzICYmIHRoaXMubHN0VGV4dENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyVGV4dCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxzdEZpbHRlclRleHQucHVzaCh0aGlzLm5ld0ZpbHRlcihpdGVtLCBPcGVyYXRvci5jb250YWluLCB0aGlzLmtleXdvcmRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRlckZ1bGxUZXh0U2VhcmNoLnB1c2gobmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBsc3RGaWx0ZXJUZXh0IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBZGREZWZhdWx0VmFsdWVzICYmIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24oZGF0YSwgdGhpcy5kZWZhdWx0VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyQWRkQ3VzdG9tID0gbHN0RmlsdGVycy5maWx0ZXIocCA9PiB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLmluY2x1ZGVzKHAuZmllbGQpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByczogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxzdEZpbHRlckFkZEN1c3RvbVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBycy5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChycyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICghZGF0YVtpdGVtXSB8fCBkYXRhW2l0ZW1dLmxlbmd0aCA8IDEpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5yYXdDb2xzLmZpbmQocCA9PiBwLmZpZWxkID09PSBpdGVtKT8udmFsdWVGaWVsZCB8fCAnaWQnO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2l0ZW1dLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXS5tYXAocCA9PiBwW3ZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dW3ZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubHN0Qm9vbENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAhQXJyYXkuaXNBcnJheShkYXRhW2l0ZW1dKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YVtpdGVtXS5pbmRleE9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXVtpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgbHN0RmlsdGVycyA9IFsuLi5sc3RGaWx0ZXJzLCAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaF07XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICAgICAgZmlsdGVyczogbHN0RmlsdGVycy5maWx0ZXIocCA9PiAhdGhpcy5sc3RDb250cm9sTm90SW4uaW5jbHVkZXMocC5maWVsZCkpLFxuICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgcmVzdWx0LmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMuZm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5mb3JtQ29udHJvbHNbcF07XG4gICAgICAgICAgICBsZXQgcmVzZXRWYWx1ZTogYW55O1xuICAgICAgICAgICAgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpICYmIGl0ZW0ubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSB8fCB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0TW9kZWxWYWx1ZShpdGVtLmZpZWxkLCByZXNldFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWNhbGVuZGFyJykpLmZvckVhY2goZWwgPT4gZWxbJ3ZhbHVlJ10gPSAnJyk7XG4gICAgICAgIHRoaXMua2V5d29yZHMgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lbnVTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuRnVsbCA9ICF0aGlzLmlzT3BlbkZ1bGw7XG4gICAgICAgIGlmICh0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQuZm9yRWFjaChjb250cm9sID0+IHByb21pc2VzLnB1c2godGhpcy5mb3JtQ29udHJvbHNbY29udHJvbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpKSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQgPSBbXTtcbiAgICB9XG5cblxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGZvcm1FdmVudDogRXZlbnREYXRhKSB7XG4gICAgICAgIC8vIHRp4buBbiB44butIGzDvSBk4buvIGxp4buHdSAodsOtIGThu6UgdOG7lW5nIGjhu6NwIGRhdGFzb3VyY2UpLCB0csaw4bubYyBraGkgZ+G7jWkgYXBpIGdldCBkZXRhaWxcblxuICAgIH1cblxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YSkge1xuICAgICAgICAvLyB44butIGzDvSBk4buvIGxp4buHdSBs4bqleSB04burIGdldCBkZXRhaWwgduG7gVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VhcmNoVGVtcGxhdGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDoxMDAlO21hcmdpbi1ib3R0b206IC05cHg7Jyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=