tnx-shared 5.3.372 → 5.3.374

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.
@@ -50,9 +50,22 @@ export class CommonSearchFormComponent extends DataFormBase {
50
50
  return 0;
51
51
  });
52
52
  if (this.parentSetting.useCommonFullTextSearch) {
53
+ const arrLabel = [];
53
54
  const lstTextSearchControl = columnFilters.filter(p => p.fullTextSearch);
54
- this.lstTextControl = lstTextSearchControl.map(p => p.field);
55
- this.searchBoxTooltip += `${(lstTextSearchControl.map(x => x.label)).join(', ')}`;
55
+ if (lstTextSearchControl.length) {
56
+ lstTextSearchControl.forEach(item => {
57
+ arrLabel.push(item.label);
58
+ this.lstTextControl.push(item.field);
59
+ });
60
+ }
61
+ // fullTextSearch custom
62
+ if (this.parentSetting.arrFullTextSearch.length) {
63
+ this.parentSetting.arrFullTextSearch.forEach(item => {
64
+ arrLabel.push(item.name);
65
+ this.lstTextControl.push(item.field);
66
+ });
67
+ }
68
+ this.searchBoxTooltip += arrLabel.join(', ');
56
69
  this._index = 2;
57
70
  }
58
71
  if (this.isCustomGenerateSearch) {
@@ -350,4 +363,4 @@ CommonSearchFormComponent.propDecorators = {
350
363
  onClickSearch: [{ type: Output }],
351
364
  onAfterToggleMenuSearch: [{ type: Output }]
352
365
  };
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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QVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUdLLGlCQUFpQixDQUFDLFNBQW9COztZQUN4QywrRUFBK0U7UUFFbkYsQ0FBQztLQUFBO0lBRUssZ0JBQWdCLENBQUMsSUFBSTs7WUFDdkIscUNBQXFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQXpXSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMjZEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFaNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pc0FsbG93RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmFkZFRvR3JpZEluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5pc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAmJiBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgJiYgISFjb2x1bW4uYmFzZVNlcnZpY2UgJiYgIShjb2x1bW4uYmFzZVNlcnZpY2UgaW5zdGFuY2VvZiBNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuYWRkU2VhcmNoQm94KHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCB0b3RhbENvbnRyb2xQZXJSb3cgPSAxMiAvIHRoaXMubWRXaWR0aDtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbHVtbi5pc0luVGFibGUgfHwgIWNvbHVtbi5pbmNsdWRlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTm90SW4ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdFZhbHVlJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBbGxvd0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiAhY29sdW1uLnNpbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xhenlMb2FkOiBpc0xhenlMb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlZDogKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gY29sdW1uLnNpbmdsZSA/IGV2dC52YWx1ZS5pZCA/PyBldnQudmFsdWUgOiBldnQudmFsdWUubWFwKHAgPT4gcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdGaWx0ZXJWYWwgPSB0aGlzLm1hcENvbnRyb2xCaW5kaW5nRmlsdGVyLmdldChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nRmlsdGVyVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZ0LnZhbHVlIHx8IGV2dC52YWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50LmZpbHRlckZyb21QYXJlbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghY29sdW1uLmluY2x1ZGVTZWxlY3QgfHwgIWNvbHVtbi5pc0luVGFibGUpICYmICFjb2x1bW4uZm9yY2VMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZENvbHVtbjogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRldGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQuc291cmNlRXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2goZXZ0LnBhcmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd1RpbWUgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuZGF0ZXRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS50aW1lc3BhbjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4udGltZU9ubHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLmRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludFdpdGhvdXRNYXNrOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRlY2ltYWw6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWFza1R5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWF4ID0gY29sdW1uLm1heCB8fCA5OTk5OTk5OTk5OTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGFkZENvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNlYXJjaEJveChyZXN1bHQuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cbiAgICBhZGRTZWFyY2hCb3goY29sdW1ucykge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IEN1c3RvbUNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBmdWxsTGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcigxMiAvIHRoaXMubWRXaWR0aCkgLSAxO1xuICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZSgwLCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubGVuZ3RoIDwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoKGRhdGE/OiBhbnksIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bGxUZXh0U2VhcmNoID0gW107XG4gICAgICAgIGlmICh0aGlzLmtleXdvcmRzICYmIHRoaXMubHN0VGV4dENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyVGV4dCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxzdEZpbHRlclRleHQucHVzaCh0aGlzLm5ld0ZpbHRlcihpdGVtLCBPcGVyYXRvci5jb250YWluLCB0aGlzLmtleXdvcmRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRlckZ1bGxUZXh0U2VhcmNoLnB1c2gobmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBsc3RGaWx0ZXJUZXh0IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBZGREZWZhdWx0VmFsdWVzICYmIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24oZGF0YSwgdGhpcy5kZWZhdWx0VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyQWRkQ3VzdG9tID0gbHN0RmlsdGVycy5maWx0ZXIocCA9PiB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLmluY2x1ZGVzKHAuZmllbGQpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByczogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxzdEZpbHRlckFkZEN1c3RvbV0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJzLmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgKCFkYXRhW2l0ZW1dIHx8IGRhdGFbaXRlbV0ubGVuZ3RoIDwgMSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmluZChwID0+IHAuZmllbGQgPT09IGl0ZW0pPy52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaXRlbV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dLm1hcChwID0+IHBbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV1bdmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sc3RCb29sQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICFBcnJheS5pc0FycmF5KGRhdGFbaXRlbV0pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2l0ZW1dLmluZGV4T2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICBsc3RGaWx0ZXJzID0gWy4uLmxzdEZpbHRlcnMsIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoXTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBsc3RGaWx0ZXJzLmZpbHRlcihwID0+ICF0aGlzLmxzdENvbnRyb2xOb3RJbi5pbmNsdWRlcyhwLmZpZWxkKSksXG4gICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5mb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZvcm1Db250cm9sc1twXTtcbiAgICAgICAgICAgIGxldCByZXNldFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgJiYgaXRlbS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgaWYgKHRoaXMubHN0Q29udHJvbExhenlMb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25BZnRlclRvZ2dsZU1lbnVTZWFyY2guZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5mb3JFYWNoKGNvbnRyb2wgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmZvcm1Db250cm9sc1tjb250cm9sXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCkpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1RCxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QiwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsNEJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFPWCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQzFELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqSCxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFO1lBQzVDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekUsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQzdCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELHdCQUF3QjtZQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDOUI7YUFDSTtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0SixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUNELG1CQUFtQjtRQUNmLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNyQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksaUJBQWlCLENBQUMsSUFBSSxNQUFNLFlBQVksd0JBQXdCLElBQUksTUFBTSxZQUFZLHFCQUFxQixFQUFFO2dCQUNqSSxNQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBYyxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEUsQ0FBQyxDQUFDO2FBQ0w7WUFDRCxJQUFJLE1BQU0sWUFBWSxxQkFBcUIsRUFBRTtnQkFDekMsTUFBTSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7YUFDbEM7WUFDRCxJQUFJLE1BQU0sWUFBWSx3QkFBd0IsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLFlBQVkscUJBQXFCLElBQUksTUFBTSxZQUFZLHFCQUFxQixDQUFDLEVBQUU7Z0JBQy9ILElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7YUFDMUQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0I7bUJBQ2hHLE1BQU0sWUFBWSxxQkFBcUIsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdILElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUM7WUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUdELGFBQWEsQ0FBQyxPQUFZO1FBQ3RCLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLGtCQUFrQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7O1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQzFEO1lBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25ELElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsUUFBUSxJQUFJLE1BQU0sSUFBSSxNQUFNLFlBQVkscUJBQXFCLEVBQUU7Z0JBQ2pHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxJQUFJLE1BQU0sRUFBRTtvQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUN2RTtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQzdELE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQjsyQkFDL0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLFlBQVksaUJBQWlCLENBQUMsQ0FBQztvQkFDbEYsSUFBSSxVQUFVLEVBQUU7d0JBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzlDO29CQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBcUIsaUNBQzlCLE1BQU0sS0FDVCxXQUFXLEVBQUUsTUFBQSxNQUFNLENBQUMsV0FBVyxtQ0FBSSxRQUFRLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFDekQsZUFBZSxFQUFFLEtBQUssRUFDdEIsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDeEIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQ3JCLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLFNBQVMsRUFBRSxLQUFLLEVBQ2hCLFNBQVMsRUFBRSxJQUFJLEVBQ2YsU0FBUyxFQUFFLENBQUMsR0FBYyxFQUFFLEVBQUU7OzRCQUMxQixJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQ0FDckMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBQSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsbUNBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3hHOzRCQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3hFLElBQUksZ0JBQWdCLEVBQUU7Z0NBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQ0FDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7b0NBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7aUNBQ25FO2dDQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO29DQUN0RSxPQUFPO2lDQUNWOzZCQUNKOzRCQUNELE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUM3QyxDQUFDLElBQ0gsQ0FBQyxDQUFDO29CQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDakI7YUFDSjtpQkFDSTtnQkFDRCxNQUFNLFNBQVMsbUNBQ1IsTUFBTSxLQUNULFdBQVcsRUFBRSxNQUFBLE1BQU0sQ0FBQyxXQUFXLG1DQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUN6RCxTQUFTLEVBQUUsS0FBSyxFQUNoQixZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxHQUN4QixDQUFDO2dCQUNGLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDckIsS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNuQixLQUFLLFFBQVEsQ0FBQyxRQUFRO3dCQUNsQixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDMUIsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQWMsRUFBRSxFQUFFOzRCQUNyQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzs0QkFDdEQsU0FBUyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDL0QsQ0FBQyxDQUFDO3dCQUNGLFNBQVMsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDO3dCQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxNQUFNO29CQUVWLEtBQUssUUFBUSxDQUFDLFFBQVE7d0JBQ2xCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUMxQixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDMUIsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7d0JBQ25DLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFjLEVBQUUsRUFBRTs0QkFDckMsU0FBUyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQ2hELENBQUMsQ0FBQzt3QkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDbEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLE1BQU07b0JBQ1YsS0FBSyxRQUFRLENBQUMsR0FBRyxDQUFDO29CQUNsQixLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7b0JBQzdCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDdEIsS0FBSyxRQUFRLENBQUMsUUFBUTt3QkFDbEIsU0FBUyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUNyQyxTQUFTLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDO3dCQUMxQyxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBYyxFQUFFLEVBQUU7NEJBQ3JDLFNBQVMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNoRCxDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNqRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsTUFBTTtvQkFFVjt3QkFDSSxNQUFNO2lCQUNiO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQU87UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUU7WUFDN0MsT0FBeUIsT0FBTyxDQUFDO1NBQ3BDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztZQUN0QyxLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsU0FBUztZQUNoQixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsS0FBSztZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbkM7YUFDSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0I7YUFDSTtZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQXlCLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVUsRUFBRSxLQUFjO1FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQyxDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbEY7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUNwRSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO2FBQ2xDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEcsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxHQUFRO29CQUNaLE9BQU8sRUFBRTt3QkFDTCxHQUFHLG9CQUFvQjt3QkFDdkIsR0FBRyxrQkFBa0I7cUJBQ3hCO29CQUNELFFBQVEsa0NBQ0QsSUFBSSxLQUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUMxQjtpQkFDSixDQUFDO2dCQUNGLElBQUksS0FBSyxFQUFFO29CQUNQLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2lCQUMxQjtnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUIsT0FBTzthQUNWO1NBQ0o7YUFDSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUFFLE9BQU87Z0JBQ2pGLE1BQU0sVUFBVSxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQywwQ0FBRSxVQUFVLEtBQUksSUFBSSxDQUFDO2dCQUMzRixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ25EO3FCQUNJO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUFFLE9BQU87Z0JBQ3JFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQzdCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRixVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLG9CQUFvQixDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQVE7WUFDaEIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RSxRQUFRLGtDQUNELElBQUksS0FDUCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FDMUI7U0FDSixDQUFDO1FBQ0YsSUFBSSxLQUFLLEVBQUU7WUFDUCxNQUFNLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxVQUFlLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUMvRCxVQUFVLEdBQUcsRUFBRSxDQUFDO2FBQ25CO2lCQUNJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RHLFVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMvQztRQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFSyx1QkFBdUI7O1lBQ3pCLE1BQU0sUUFBUSxHQUFvQixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUdLLGlCQUFpQixDQUFDLFNBQW9COztZQUN4QywrRUFBK0U7UUFFbkYsQ0FBQztLQUFBO0lBRUssZ0JBQWdCLENBQUMsSUFBSTs7WUFDdkIscUNBQXFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQXZYSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMjZEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFaNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyckxhYmVsID0gW107XG4gICAgICAgICAgICBjb25zdCBsc3RUZXh0U2VhcmNoQ29udHJvbCA9IGNvbHVtbkZpbHRlcnMuZmlsdGVyKHAgPT4gcC5mdWxsVGV4dFNlYXJjaCk7XG4gICAgICAgICAgICBpZiAobHN0VGV4dFNlYXJjaENvbnRyb2wubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbHN0VGV4dFNlYXJjaENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXJyTGFiZWwucHVzaChpdGVtLmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5wdXNoKGl0ZW0uZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZnVsbFRleHRTZWFyY2ggY3VzdG9tXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLmFyckZ1bGxUZXh0U2VhcmNoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5hcnJGdWxsVGV4dFNlYXJjaC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBhcnJMYWJlbC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wucHVzaChpdGVtLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBhcnJMYWJlbC5qb2luKCcsICcpO1xuICAgICAgICAgICAgdGhpcy5faW5kZXggPSAyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybVNjaGVtYUN1c3RvbSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuZ2VuRm9ybVNjaGVtYShjb2x1bW5GaWx0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGlzYWJsZU9wZW5GdWxsID0gKHRoaXMuc2V0dGluZy5zY2hlbWEubGVuZ3RoIDw9IE1hdGgucm91bmQoMTIgLyAodGhpcy5wYXJlbnRTZXR0aW5nLm1kV2lkdGhDb21tb25TZWFyY2gpKSkgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0Rm9ybVNjaGVtYUN1c3RvbSgpIHtcbiAgICAgICAgY29uc3QgdG90YWxDb250cm9sUGVyUm93ID0gMTIgLyB0aGlzLm1kV2lkdGg7XG4gICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGNvbHVtbi5zaG93TGFiZWwgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbHVtbi5tZFdpZHRoID0gdGhpcy5tZFdpZHRoO1xuICAgICAgICAgICAgY29sdW1uWydwbGFjZWhvbGRlciddID0gY29sdW1uLmxhYmVsO1xuICAgICAgICAgICAgaWYgKCEoY29sdW1uIGluc3RhbmNlb2YgVGV4dENvbnRyb2xTY2hlbWEpIHx8IGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ub25BZnRlckNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmF1dG9TZWFyY2ggJiYgdGhpcy5oYW5kbGVTZWFyY2gobnVsbCwgZXZ0LmNvbnRyb2wuZmllbGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmlzQWxsb3dEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmIChjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYWRkVG9HcmlkSW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uLmlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICYmIGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cblxuICAgIGdlbkZvcm1TY2hlbWEoY29sdW1uczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzQm9vbCA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PSBDb250cm9sVHlwZS5kcm9wZG93biB8fCBpc0Jvb2wgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gY29sdW1uLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzQm9vbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IFt7IGlkOiB0cnVlLCB0ZW46ICdDw7MnIH0sIHsgaWQ6IGZhbHNlLCB0ZW46ICdLaMO0bmcnIH1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJpbmRpbmdGaWx0ZXJzICYmIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5zZXQoaXRlbS5maWVsZCwgY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYmFzZVNlcnZpY2UgfHwgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICEhY29sdW1uLmJhc2VTZXJ2aWNlICYmICEoY29sdW1uLmJhc2VTZXJ2aWNlIGluc3RhbmNlb2YgTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FsbG93RGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGF6eUxvYWQ6IGlzTGF6eUxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uc2luZ2xlID8gZXZ0LnZhbHVlLmlkID8/IGV2dC52YWx1ZSA6IGV2dC52YWx1ZS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluZGluZ0ZpbHRlclZhbCA9IHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuZ2V0KGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdGaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldnQudmFsdWUgfHwgZXZ0LnZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuZmlsdGVyRnJvbVBhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFjb2x1bW4uaW5jbHVkZVNlbGVjdCB8fCAhY29sdW1uLmlzSW5UYWJsZSkgJiYgIWNvbHVtbi5mb3JjZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkQ29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRlOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGV0aW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGV2dC5zb3VyY2VFdmVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uYXV0b1NlYXJjaCAmJiB0aGlzLmhhbmRsZVNlYXJjaChldnQucGFyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93VGltZSA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5kYXRldGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLnRpbWVzcGFuOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi50aW1lT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50V2l0aG91dE1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGVjaW1hbDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5jdXJyZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXNrVHlwZSA9IGNvbHVtbi5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXggPSBjb2x1bW4ubWF4IHx8IDk5OTk5OTk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5hdXRvU2VhcmNoICYmIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goYWRkQ29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkU2VhcmNoQm94KHJlc3VsdC5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgIH1cblxuICAgIGFkZFNlYXJjaEJveChjb2x1bW5zKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2tleXdvcmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIGZ1bGxMYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKDEyIC8gdGhpcy5tZFdpZHRoKSAtIDE7XG4gICAgICAgIGlmICh0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKDAsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sdW1ucy5sZW5ndGggPCBpbmRleCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2goZGF0YT86IGFueSwgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyRnVsbFRleHRTZWFyY2ggPSBbXTtcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZHMgJiYgdGhpcy5sc3RUZXh0Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJUZXh0ID0gW107XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgbHN0RmlsdGVyVGV4dC5wdXNoKHRoaXMubmV3RmlsdGVyKGl0ZW0sIE9wZXJhdG9yLmNvbnRhaW4sIHRoaXMua2V5d29yZHMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGVyRnVsbFRleHRTZWFyY2gucHVzaChuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IGxzdEZpbHRlclRleHQgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMubW9kZWwuZGF0YTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgJiYgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbihkYXRhLCB0aGlzLmRlZmF1bHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGREZWZhdWx0VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJBZGRDdXN0b20gPSBsc3RGaWx0ZXJzLmZpbHRlcihwID0+IHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8uaW5jbHVkZXMocC5maWVsZCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubHN0RmlsdGVyQWRkQ3VzdG9tXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJzLmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgKCFkYXRhW2l0ZW1dIHx8IGRhdGFbaXRlbV0ubGVuZ3RoIDwgMSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmluZChwID0+IHAuZmllbGQgPT09IGl0ZW0pPy52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaXRlbV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dLm1hcChwID0+IHBbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV1bdmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sc3RCb29sQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICFBcnJheS5pc0FycmF5KGRhdGFbaXRlbV0pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2l0ZW1dLmluZGV4T2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICBsc3RGaWx0ZXJzID0gWy4uLmxzdEZpbHRlcnMsIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoXTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBsc3RGaWx0ZXJzLmZpbHRlcihwID0+ICF0aGlzLmxzdENvbnRyb2xOb3RJbi5pbmNsdWRlcyhwLmZpZWxkKSksXG4gICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5mb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZvcm1Db250cm9sc1twXTtcbiAgICAgICAgICAgIGxldCByZXNldFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgJiYgaXRlbS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgaWYgKHRoaXMubHN0Q29udHJvbExhenlMb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25BZnRlclRvZ2dsZU1lbnVTZWFyY2guZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5mb3JFYWNoKGNvbnRyb2wgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmZvcm1Db250cm9sc1tjb250cm9sXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCkpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -367,7 +367,7 @@ export class NotifierService {
367
367
  if (popupObject.acceptVisible) {
368
368
  if (accept)
369
369
  accept();
370
- resolve(false);
370
+ resolve(true);
371
371
  }
372
372
  }, reject: () => {
373
373
  if (popupObject.rejectVisible) {
@@ -449,4 +449,4 @@ export var NotifierType;
449
449
  NotifierType[NotifierType["CONFIRM"] = 0] = "CONFIRM";
450
450
  NotifierType[NotifierType["ERROR"] = 1] = "ERROR";
451
451
  })(NotifierType || (NotifierType = {}));
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUs5RCxNQUFNLE9BQU8sZUFBZTtJQUt4QixZQUNZLGVBQStCLEVBQy9CLGVBQW9DLEVBQ3BDLG9CQUF5QyxFQUNqRCxTQUFtQjtRQUhYLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQVA3QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVXBCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNyRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsT0FHUCxFQUFFO1FBQ0YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRDtRQUVELElB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Ozs7WUFwZ0JKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBUHNDLGNBQWM7WUFBNUMsbUJBQW1CO1lBR25CLG1CQUFtQjtZQUxQLFFBQVE7O0FBOGdCN0IsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUNwQixxREFBTyxDQUFBO0lBQ1AsaURBQUssQ0FBQTtBQUNULENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfdGltZU91dCA9IDUwMDA7XG4gICAgZW52aXJvbm1lbnQ6IGFueTtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY29uZmlybVNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBfaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIHNldFNlcnZpY2Uob3B0czoge1xuICAgICAgICBlbnY/OiBhbnksIHRyYW5zbGF0ZVNlcnZpY2U/OiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBtZXNzYWdlU2VydmljZT86IE1lc3NhZ2VTZXJ2aWNlLCBjb25maXJtU2VydmljZT86IENvbmZpcm1hdGlvblNlcnZpY2U7XG4gICAgfSA9IHt9KSB7XG4gICAgICAgIGlmIChvcHRzLmVudikge1xuICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IG9wdHMuZW52O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBvcHRzLnRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy5tZXNzYWdlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UgPSBvcHRzLm1lc3NhZ2VTZXJ2aWNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuY29uZmlybVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpcm1TZXJ2aWNlID0gb3B0cy5jb25maXJtU2VydmljZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcgPSAnVGjDtG5nIGLDoW8nLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93SW5zZXJ0RGF0YVN1Y2Nlc3MobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fU1VDQ0VTU19IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOU0VSVF9EQVRBX1NVQ0NFU1MnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFTdWNjZXNzKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX1NVQ0NFU1NfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9TVUNDRVNTJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEZWxldGVEYXRhU3VjY2VzcyhsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9TVUNDRVNTX0hFQURFUicpLFxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuREVMRVRFX0RBVEFfU1VDQ0VTUycpLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RGVsZXRlRGF0YUVycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX0VSUk9SJyksXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX0VSUk9SJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEZWxldGVEYXRhRW1wdHlFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQuG6oW4gcGjhuqNpIGNo4buNbiDDrXQgbmjhuqV0IDEgYuG6o24gZ2hpIMSR4buDIHjDs2EnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0R1cGxpY2F0ZURhdGFFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTcOjIGPhu5l0IGtow7RuZyB0aOG7gyBi4buLIHRyw7luZyBs4bq3cCcpLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93V2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nID0gJ1Row7RuZyBiw6FvJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93V2FybmluZ01lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgaGVhZGVyLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0Vycm9yKG1lc3NhZ2U6IHN0cmluZywga2V5OiBzdHJpbmcgPSAnJywgaGVhZGVyOiBzdHJpbmcgPSAnTOG7l2knLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsIG1lc3NhZ2UsIGhlYWRlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0V4Y2VwdGlvbihlcnI6IGFueSwgaGVhZGVyOiBzdHJpbmcgPSAnVGjDtG5nIGLDoW8nLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQ8OzIGzhu5dpIHjhuqN5IHJhLiBMacOqbiBo4buHIHF14bqjbiB0cuG7iyB2acOqbiDEkeG7gyBiaeG6v3QgdGjDqm0gY2hpIHRp4bq/dCEnO1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93V2FybmluZ01lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgaGVhZGVyLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlczogUmVzcG9uc2VSZXN1bHQpIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXMubWVzc2FnZTtcbiAgICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gcmVzLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd1dhcm5pbmcobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgc2hvd0J1c2luZXNzRXJyb3IobWVzc2FnZTogc3RyaW5nLCBrZXk6IHN0cmluZyA9ICcnLCBoZWFkZXI6IHN0cmluZyA9ICdM4buXaScsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dIdHRwVW5rbm93RXJyb3IobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBtZXNzYWdlOiAnLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUl9IRUFERVInKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkhUVFBfVU5LTk9XX0VSUk9SJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkhUVFBfVU5LTk9XX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1InKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1Jlc3BvbnNlRXJyb3Ioc3RhdHVzOiBudW1iZXIsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQsIHNlcnZpY2VOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJywgc3RhdHVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5OT1RfRk9VTkRfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVOQVVUSE9SSVpFRF9FUlJPUicpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQUNDRVNTX0RFTklORURfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDUwMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOVEVSTkFMX1NFUlZFUl9FUlJPUicpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09ORkxJQ1RfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdWdWkgbMOybmcga2nhu4NtIHRyYSBk4buvIGxp4buHdSDEkeG6p3UgdsOgbycpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBWdWkgbMOybmcga2nhu4NtIHRyYSBs4bqhaSBk4buLY2ggduG7pSAke3NlcnZpY2VOYW1lfWApLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0luc2VydERhdGFGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSU5TRVJUX0RBVEFfRkFJTEVEJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5JTlNFUlRfREFUQV9GQUlMRUQnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuVVBEQVRFX0RBVEFfRkFJTEVEJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9GQUlMRUQnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0xvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgc3RhdHVzIGNvZGU6ICcsXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VubG9ja1VzZXJGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03hu58ga2jDs2EgbmfGsOG7nWkgZMO5bmcgdGjhuqV0IGLhuqFpJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG7nyBraMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFTaW5nbGVGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03DoyBob+G6t2MgdMOqbiBkYW5oIG3hu6VjIMSRw6MgdOG7k24gdOG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNw6MgaG/hurdjIHTDqm4gZGFuaCBt4bulYyDEkcOjIHThu5NuIHThuqFpJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dVcGRhdGVEYXRhQ29uZmlndXJhdGlvbkZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG6rXQga2jhuql1IGtow7RuZyDEkcaw4bujYyDEkeG7gyB0cuG7kW5nJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG6rXQga2jhuql1IGtow7RuZyDEkcaw4bujYyDEkeG7gyB0cuG7kW5nJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93QmxvYkVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgQmxvYiB0byBKU09OIE9iamVjdCBpZiBwb3NzaWJsZVxuICAgICAgICAgICAgcmV0dXJuIGVycm9yLnRleHQoKS50aGVuKHRleHQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqZWN0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93V2FybmluZyhlcnJvck9iamVjdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBlcnJvciBvYmplY3QgZGlyZWN0bHlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3dFeGNlcHRpb24obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmljU2hvdyhtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGhlYWRlcjogc3RyaW5nLFxuICAgICAgICBpY29uOiBzdHJpbmcsXG4gICAgICAgIGFjY2VwdFZpc2libGU6IGJvb2xlYW4sXG4gICAgICAgIGFjY2VwdExhYmVsOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgYWNjZXB0SWNvbjogc3RyaW5nID0gJycsXG4gICAgICAgIHJlamVjdExhYmVsOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgcmVqZWN0SWNvbjogc3RyaW5nID0gJycsXG4gICAgICAgIGFjY2VwdDogRnVuY3Rpb24gPSBudWxsLFxuICAgICAgICByZWplY3Q6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgbm90aWZpZXJUeXBlOiBOb3RpZmllclR5cGUpIHtcbiAgICAgICAgc3dpdGNoIChub3RpZmllclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTm90aWZpZXJUeXBlLkNPTkZJUk06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbmZpcm0obWVzc2FnZSwgaGVhZGVyLCBpY29uLCBhY2NlcHRWaXNpYmxlLCByZWplY3RMYWJlbCwgcmVqZWN0SWNvbiwgYWNjZXB0TGFiZWwsIGFjY2VwdEljb24sIGFjY2VwdCwgcmVqZWN0LCk7XG4gICAgICAgICAgICBjYXNlIE5vdGlmaWVyVHlwZS5FUlJPUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93RXJyb3IobWVzc2FnZSwgJycsIGhlYWRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93Q29uZmlybShcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBoZWFkZXI6IHN0cmluZyA9ICdYw6FjIG5o4bqtbicsXG4gICAgICAgIGljb246IHN0cmluZyA9ICdwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZScsXG4gICAgICAgIGFjY2VwdFZpc2libGU6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICByZWplY3RMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxuICAgICAgICByZWplY3RJY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnLFxuICAgICAgICBhY2NlcHRMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkFDQ0VQVF9MQUJFTCcpLFxuICAgICAgICBhY2NlcHRJY29uOiBzdHJpbmcgPSAncGkgcGktY2hlY2snLFxuICAgICAgICBhY2NlcHQ6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgcmVqZWN0RnVuYzogRnVuY3Rpb24gPSBudWxsLFxuICAgICAgICBhY2NlcHRCdXR0b25TdHlsZUNsYXNzID0gJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCcsXG4gICAgICAgIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3MgPSAnXCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5JyxcbiAgICAgICAgcmVqZWN0VmlzaWJsZTogYm9vbGVhbiA9IHRydWVcblxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGljb246IGljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcbiAgICAgICAgICAgICAgICByZWplY3RWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGFjY2VwdEljb246IGFjY2VwdEljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IGFjY2VwdExhYmVsLFxuICAgICAgICAgICAgICAgIHJlamVjdExhYmVsLFxuICAgICAgICAgICAgICAgIHJlamVjdEljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzcyxcbiAgICAgICAgICAgICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0KSBhY2NlcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlamVjdEZ1bmMpIHJlamVjdEZ1bmMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93Q29uZmlybU9iamVjdChcbiAgICAgICAgZGF0YTogYW55LFxuICAgICAgICBhY2NlcHQ6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgcmVqZWN0RnVuYzogRnVuY3Rpb24gPSBudWxsLFxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwT2JqZWN0ID0ge1xuICAgICAgICAgICAgLy8gbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICAgICAgaGVhZGVyOiAnWMOhYyBuaOG6rW4nLFxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyxcbiAgICAgICAgICAgIGFjY2VwdFZpc2libGU6IHRydWUsXG4gICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxuICAgICAgICAgICAgcmVqZWN0SWNvbjogJ3BpIHBpLXRpbWVzJyxcbiAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXG4gICAgICAgICAgICBhY2NlcHRJY29uOiAncGkgcGktY2hlY2snLFxuICAgICAgICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCcsXG4gICAgICAgICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzOiAnXCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICAuLi5wb3B1cE9iamVjdCxcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvcHVwT2JqZWN0LmFjY2VwdFZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2NlcHQpIGFjY2VwdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9wdXBPYmplY3QucmVqZWN0VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlamVjdEZ1bmMpIHJlamVjdEZ1bmMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNob3dDb25maXJtTWFueShcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICB0aW1lOiBudW1iZXIgPSAyLCBkZWxheTogbnVtYmVyID0gMTAwLFxuICAgICAgICBoZWFkZXI6IHN0cmluZyA9ICcnLCBpY29uOiBzdHJpbmcgPSAnJywgYWNjZXB0VmlzaWJsZTogYm9vbGVhbiA9IHRydWUsIHJlamVjdExhYmVsOiBzdHJpbmcgPSB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uUkVKRUNUX0xBQkVMJyksIGRlbGF5VGltZW91dDogbnVtYmVyID0gMCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGYgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpcm1TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGhlYWRlciA/IGhlYWRlciA6ICdYw6FjIG5o4bqtbicsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGljb24gPyBpY29uIDogJ3BpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5BQ0NFUFRfTEFCRUwnKSxcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdFZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWUgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dDb25maXJtTWFueShtZXNzYWdlLCB0aW1lIC0gMSwgZGVsYXksIGhlYWRlciwgaWNvbiwgYWNjZXB0VmlzaWJsZSwgcmVqZWN0TGFiZWwsIGRlbGF5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBkZWxheVRpbWVvdXQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RGVsZXRlQ29uZmlybShtZXNzYWdlOiBzdHJpbmcgPSAnJywgaWNvbjogc3RyaW5nID0gJycpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA/IG1lc3NhZ2UgOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uREVGQVVMVF9ERUxFVEVfQ09ORklSTScpLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkRFRkFVTFRfREVMRVRFX0NPTkZJUk1fVElUTEUnKSxcbiAgICAgICAgICAgICAgICBpY29uOiBpY29uID8gaWNvbiA6ICdwaSBwaS10cmFzaCcsXG4gICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5BQ0NFUFRfTEFCRUwnKSxcbiAgICAgICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRFcnJvck1lc3NhZ2UobXNnczogTWVzc2FnZVtdLCBjb250ZW50KSB7XG4gICAgICAgIG1zZ3MucHVzaCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3IgTWVzc2FnZScsIGRldGFpbDogJ1ZhbGlkYXRpb24gZmFpbGVkJyB9KTtcbiAgICB9XG5cbiAgICBjbGVhckVycm9yTWVzc2FnZShtc2dzOiBNZXNzYWdlW10pIHtcbiAgICAgICAgbXNncy5sZW5ndGggPSAwO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gTm90aWZpZXJUeXBlIHtcbiAgICBDT05GSVJNLFxuICAgIEVSUk9SXG59XG4iXX0=
452
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUs5RCxNQUFNLE9BQU8sZUFBZTtJQUt4QixZQUNZLGVBQStCLEVBQy9CLGVBQW9DLEVBQ3BDLG9CQUF5QyxFQUNqRCxTQUFtQjtRQUhYLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQVA3QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVXBCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNyRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsT0FHUCxFQUFFO1FBQ0YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRDtRQUVELElB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Ozs7WUFwZ0JKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBUHNDLGNBQWM7WUFBNUMsbUJBQW1CO1lBR25CLG1CQUFtQjtZQUxQLFFBQVE7O0FBOGdCN0IsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUNwQixxREFBTyxDQUFBO0lBQ1AsaURBQUssQ0FBQTtBQUNULENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfdGltZU91dCA9IDUwMDA7XG4gICAgZW52aXJvbm1lbnQ6IGFueTtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY29uZmlybVNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBfaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIHNldFNlcnZpY2Uob3B0czoge1xuICAgICAgICBlbnY/OiBhbnksIHRyYW5zbGF0ZVNlcnZpY2U/OiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBtZXNzYWdlU2VydmljZT86IE1lc3NhZ2VTZXJ2aWNlLCBjb25maXJtU2VydmljZT86IENvbmZpcm1hdGlvblNlcnZpY2U7XG4gICAgfSA9IHt9KSB7XG4gICAgICAgIGlmIChvcHRzLmVudikge1xuICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IG9wdHMuZW52O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBvcHRzLnRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy5tZXNzYWdlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UgPSBvcHRzLm1lc3NhZ2VTZXJ2aWNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuY29uZmlybVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpcm1TZXJ2aWNlID0gb3B0cy5jb25maXJtU2VydmljZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcgPSAnVGjDtG5nIGLDoW8nLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93SW5zZXJ0RGF0YVN1Y2Nlc3MobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fU1VDQ0VTU19IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOU0VSVF9EQVRBX1NVQ0NFU1MnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFTdWNjZXNzKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX1NVQ0NFU1NfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9TVUNDRVNTJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEZWxldGVEYXRhU3VjY2VzcyhsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9TVUNDRVNTX0hFQURFUicpLFxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuREVMRVRFX0RBVEFfU1VDQ0VTUycpLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RGVsZXRlRGF0YUVycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX0VSUk9SJyksXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX0VSUk9SJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEZWxldGVEYXRhRW1wdHlFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQuG6oW4gcGjhuqNpIGNo4buNbiDDrXQgbmjhuqV0IDEgYuG6o24gZ2hpIMSR4buDIHjDs2EnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0R1cGxpY2F0ZURhdGFFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTcOjIGPhu5l0IGtow7RuZyB0aOG7gyBi4buLIHRyw7luZyBs4bq3cCcpLFxuICAgICAgICAgICAgbGlmZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93V2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nID0gJ1Row7RuZyBiw6FvJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93V2FybmluZ01lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgaGVhZGVyLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0Vycm9yKG1lc3NhZ2U6IHN0cmluZywga2V5OiBzdHJpbmcgPSAnJywgaGVhZGVyOiBzdHJpbmcgPSAnTOG7l2knLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsIG1lc3NhZ2UsIGhlYWRlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0V4Y2VwdGlvbihlcnI6IGFueSwgaGVhZGVyOiBzdHJpbmcgPSAnVGjDtG5nIGLDoW8nLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQ8OzIGzhu5dpIHjhuqN5IHJhLiBMacOqbiBo4buHIHF14bqjbiB0cuG7iyB2acOqbiDEkeG7gyBiaeG6v3QgdGjDqm0gY2hpIHRp4bq/dCEnO1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93V2FybmluZ01lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgaGVhZGVyLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlczogUmVzcG9uc2VSZXN1bHQpIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXMubWVzc2FnZTtcbiAgICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gcmVzLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd1dhcm5pbmcobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgc2hvd0J1c2luZXNzRXJyb3IobWVzc2FnZTogc3RyaW5nLCBrZXk6IHN0cmluZyA9ICcnLCBoZWFkZXI6IHN0cmluZyA9ICdM4buXaScsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dIdHRwVW5rbm93RXJyb3IobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBtZXNzYWdlOiAnLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUl9IRUFERVInKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkhUVFBfVU5LTk9XX0VSUk9SJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkhUVFBfVU5LTk9XX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1InKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1Jlc3BvbnNlRXJyb3Ioc3RhdHVzOiBudW1iZXIsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQsIHNlcnZpY2VOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJywgc3RhdHVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5OT1RfRk9VTkRfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVOQVVUSE9SSVpFRF9FUlJPUicpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQUNDRVNTX0RFTklORURfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDUwMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOVEVSTkFMX1NFUlZFUl9FUlJPUicpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09ORkxJQ1RfRVJST1InKSxcbiAgICAgICAgICAgICAgICBsaWZlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdWdWkgbMOybmcga2nhu4NtIHRyYSBk4buvIGxp4buHdSDEkeG6p3UgdsOgbycpLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBWdWkgbMOybmcga2nhu4NtIHRyYSBs4bqhaSBk4buLY2ggduG7pSAke3NlcnZpY2VOYW1lfWApLFxuICAgICAgICAgICAgICAgIGxpZmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0luc2VydERhdGFGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSU5TRVJUX0RBVEFfRkFJTEVEJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5JTlNFUlRfREFUQV9GQUlMRUQnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuVVBEQVRFX0RBVEFfRkFJTEVEJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9GQUlMRUQnKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd0xvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgc3RhdHVzIGNvZGU6ICcsXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VubG9ja1VzZXJGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03hu58ga2jDs2EgbmfGsOG7nWkgZMO5bmcgdGjhuqV0IGLhuqFpJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG7nyBraMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcbiAgICAgICAgICAgIGxpZmVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1VwZGF0ZURhdGFTaW5nbGVGYWlsZWQobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03DoyBob+G6t2MgdMOqbiBkYW5oIG3hu6VjIMSRw6MgdOG7k24gdOG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNw6MgaG/hurdjIHTDqm4gZGFuaCBt4bulYyDEkcOjIHThu5NuIHThuqFpJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dVcGRhdGVEYXRhQ29uZmlndXJhdGlvbkZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG6rXQga2jhuql1IGtow7RuZyDEkcaw4bujYyDEkeG7gyB0cuG7kW5nJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTeG6rXQga2jhuql1IGtow7RuZyDEkcaw4bujYyDEkeG7gyB0cuG7kW5nJyksXG4gICAgICAgICAgICBsaWZlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93QmxvYkVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgQmxvYiB0byBKU09OIE9iamVjdCBpZiBwb3NzaWJsZVxuICAgICAgICAgICAgcmV0dXJuIGVycm9yLnRleHQoKS50aGVuKHRleHQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqZWN0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93V2FybmluZyhlcnJvck9iamVjdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBlcnJvciBvYmplY3QgZGlyZWN0bHlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3dFeGNlcHRpb24obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmljU2hvdyhtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGhlYWRlcjogc3RyaW5nLFxuICAgICAgICBpY29uOiBzdHJpbmcsXG4gICAgICAgIGFjY2VwdFZpc2libGU6IGJvb2xlYW4sXG4gICAgICAgIGFjY2VwdExhYmVsOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgYWNjZXB0SWNvbjogc3RyaW5nID0gJycsXG4gICAgICAgIHJlamVjdExhYmVsOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgcmVqZWN0SWNvbjogc3RyaW5nID0gJycsXG4gICAgICAgIGFjY2VwdDogRnVuY3Rpb24gPSBudWxsLFxuICAgICAgICByZWplY3Q6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgbm90aWZpZXJUeXBlOiBOb3RpZmllclR5cGUpIHtcbiAgICAgICAgc3dpdGNoIChub3RpZmllclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTm90aWZpZXJUeXBlLkNPTkZJUk06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbmZpcm0obWVzc2FnZSwgaGVhZGVyLCBpY29uLCBhY2NlcHRWaXNpYmxlLCByZWplY3RMYWJlbCwgcmVqZWN0SWNvbiwgYWNjZXB0TGFiZWwsIGFjY2VwdEljb24sIGFjY2VwdCwgcmVqZWN0LCk7XG4gICAgICAgICAgICBjYXNlIE5vdGlmaWVyVHlwZS5FUlJPUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93RXJyb3IobWVzc2FnZSwgJycsIGhlYWRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93Q29uZmlybShcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBoZWFkZXI6IHN0cmluZyA9ICdYw6FjIG5o4bqtbicsXG4gICAgICAgIGljb246IHN0cmluZyA9ICdwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZScsXG4gICAgICAgIGFjY2VwdFZpc2libGU6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICByZWplY3RMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxuICAgICAgICByZWplY3RJY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnLFxuICAgICAgICBhY2NlcHRMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkFDQ0VQVF9MQUJFTCcpLFxuICAgICAgICBhY2NlcHRJY29uOiBzdHJpbmcgPSAncGkgcGktY2hlY2snLFxuICAgICAgICBhY2NlcHQ6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgcmVqZWN0RnVuYzogRnVuY3Rpb24gPSBudWxsLFxuICAgICAgICBhY2NlcHRCdXR0b25TdHlsZUNsYXNzID0gJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCcsXG4gICAgICAgIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3MgPSAnXCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5JyxcbiAgICAgICAgcmVqZWN0VmlzaWJsZTogYm9vbGVhbiA9IHRydWVcblxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogaGVhZGVyLFxuICAgICAgICAgICAgICAgIGljb246IGljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcbiAgICAgICAgICAgICAgICByZWplY3RWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGFjY2VwdEljb246IGFjY2VwdEljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IGFjY2VwdExhYmVsLFxuICAgICAgICAgICAgICAgIHJlamVjdExhYmVsLFxuICAgICAgICAgICAgICAgIHJlamVjdEljb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzcyxcbiAgICAgICAgICAgICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0KSBhY2NlcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlamVjdEZ1bmMpIHJlamVjdEZ1bmMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93Q29uZmlybU9iamVjdChcbiAgICAgICAgZGF0YTogYW55LFxuICAgICAgICBhY2NlcHQ6IEZ1bmN0aW9uID0gbnVsbCxcbiAgICAgICAgcmVqZWN0RnVuYzogRnVuY3Rpb24gPSBudWxsLFxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwT2JqZWN0ID0ge1xuICAgICAgICAgICAgLy8gbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICAgICAgaGVhZGVyOiAnWMOhYyBuaOG6rW4nLFxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyxcbiAgICAgICAgICAgIGFjY2VwdFZpc2libGU6IHRydWUsXG4gICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxuICAgICAgICAgICAgcmVqZWN0SWNvbjogJ3BpIHBpLXRpbWVzJyxcbiAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXG4gICAgICAgICAgICBhY2NlcHRJY29uOiAncGkgcGktY2hlY2snLFxuICAgICAgICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCcsXG4gICAgICAgICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzOiAnXCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICAuLi5wb3B1cE9iamVjdCxcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvcHVwT2JqZWN0LmFjY2VwdFZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2NlcHQpIGFjY2VwdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3B1cE9iamVjdC5yZWplY3RWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVqZWN0RnVuYykgcmVqZWN0RnVuYygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2hvd0NvbmZpcm1NYW55KFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIHRpbWU6IG51bWJlciA9IDIsIGRlbGF5OiBudW1iZXIgPSAxMDAsXG4gICAgICAgIGhlYWRlcjogc3RyaW5nID0gJycsIGljb246IHN0cmluZyA9ICcnLCBhY2NlcHRWaXNpYmxlOiBib29sZWFuID0gdHJ1ZSwgcmVqZWN0TGFiZWw6IHN0cmluZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5SRUpFQ1RfTEFCRUwnKSwgZGVsYXlUaW1lb3V0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcjogaGVhZGVyID8gaGVhZGVyIDogJ1jDoWMgbmjhuq1uJyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaWNvbiA/IGljb24gOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICBhY2NlcHRMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkFDQ0VQVF9MQUJFTCcpLFxuICAgICAgICAgICAgICAgICAgICByZWplY3RMYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGltZSA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmZpcm1NYW55KG1lc3NhZ2UsIHRpbWUgLSAxLCBkZWxheSwgaGVhZGVyLCBpY29uLCBhY2NlcHRWaXNpYmxlLCByZWplY3RMYWJlbCwgZGVsYXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2NlcHRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGRlbGF5VGltZW91dCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dEZWxldGVDb25maXJtKG1lc3NhZ2U6IHN0cmluZyA9ICcnLCBpY29uOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8gbWVzc2FnZSA6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5ERUZBVUxUX0RFTEVURV9DT05GSVJNJyksXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uREVGQVVMVF9ERUxFVEVfQ09ORklSTV9USVRMRScpLFxuICAgICAgICAgICAgICAgIGljb246IGljb24gPyBpY29uIDogJ3BpIHBpLXRyYXNoJyxcbiAgICAgICAgICAgICAgICBhY2NlcHRMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkFDQ0VQVF9MQUJFTCcpLFxuICAgICAgICAgICAgICAgIHJlamVjdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uUkVKRUNUX0xBQkVMJyksXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZEVycm9yTWVzc2FnZShtc2dzOiBNZXNzYWdlW10sIGNvbnRlbnQpIHtcbiAgICAgICAgbXNncy5wdXNoKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvciBNZXNzYWdlJywgZGV0YWlsOiAnVmFsaWRhdGlvbiBmYWlsZWQnIH0pO1xuICAgIH1cblxuICAgIGNsZWFyRXJyb3JNZXNzYWdlKG1zZ3M6IE1lc3NhZ2VbXSkge1xuICAgICAgICBtc2dzLmxlbmd0aCA9IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOb3RpZmllclR5cGUge1xuICAgIENPTkZJUk0sXG4gICAgRVJST1Jcbn1cbiJdfQ==
@@ -649,6 +649,7 @@ class CrudListSetting {
649
649
  this.mdWidthCommonSearch = 3;
650
650
  this.useCommonSearch = false;
651
651
  this.useCommonFullTextSearch = true;
652
+ this.arrFullTextSearch = [];
652
653
  this.hiddenSearch = false;
653
654
  this.hiddenAuthorizeButton = false;
654
655
  this.suffixAuthorizeCode = ''; // thêm hậu tố mã code trong chức năng Phân quyền nút (phục vụ case crudList này nằm trong màn hình popup)
@@ -2697,7 +2698,7 @@ class NotifierService {
2697
2698
  if (popupObject.acceptVisible) {
2698
2699
  if (accept)
2699
2700
  accept();
2700
- resolve(false);
2701
+ resolve(true);
2701
2702
  }
2702
2703
  }, reject: () => {
2703
2704
  if (popupObject.rejectVisible) {
@@ -22652,9 +22653,22 @@ class CommonSearchFormComponent extends DataFormBase {
22652
22653
  return 0;
22653
22654
  });
22654
22655
  if (this.parentSetting.useCommonFullTextSearch) {
22656
+ const arrLabel = [];
22655
22657
  const lstTextSearchControl = columnFilters.filter(p => p.fullTextSearch);
22656
- this.lstTextControl = lstTextSearchControl.map(p => p.field);
22657
- this.searchBoxTooltip += `${(lstTextSearchControl.map(x => x.label)).join(', ')}`;
22658
+ if (lstTextSearchControl.length) {
22659
+ lstTextSearchControl.forEach(item => {
22660
+ arrLabel.push(item.label);
22661
+ this.lstTextControl.push(item.field);
22662
+ });
22663
+ }
22664
+ // fullTextSearch custom
22665
+ if (this.parentSetting.arrFullTextSearch.length) {
22666
+ this.parentSetting.arrFullTextSearch.forEach(item => {
22667
+ arrLabel.push(item.name);
22668
+ this.lstTextControl.push(item.field);
22669
+ });
22670
+ }
22671
+ this.searchBoxTooltip += arrLabel.join(', ');
22658
22672
  this._index = 2;
22659
22673
  }
22660
22674
  if (this.isCustomGenerateSearch) {