@alfresco/aca-content 5.2.0 → 5.3.0-11955434723

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.
Files changed (80) hide show
  1. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +13 -17
  2. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +9 -12
  3. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +8 -12
  4. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +8 -12
  5. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +5 -7
  6. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +7 -10
  7. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +8 -11
  8. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +6 -11
  9. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +7 -12
  10. package/esm2022/lib/components/context-menu/context-menu.component.mjs +2 -2
  11. package/esm2022/lib/components/details/details.component.mjs +4 -3
  12. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +5 -10
  13. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +8 -12
  14. package/esm2022/lib/components/files/files.component.mjs +9 -8
  15. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +12 -15
  16. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +12 -16
  17. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +7 -10
  18. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +6 -11
  19. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +5 -8
  20. package/esm2022/lib/components/search/search-input/search-input.component.mjs +6 -9
  21. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +2 -8
  22. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +3 -3
  23. package/esm2022/lib/components/search/search-results/search-results.component.mjs +2 -3
  24. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +7 -11
  25. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +5 -10
  26. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +8 -11
  27. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +5 -10
  28. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +6 -6
  29. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +7 -11
  30. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +7 -11
  31. package/esm2022/lib/components/sidenav/sidenav.component.mjs +9 -13
  32. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +6 -10
  33. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +4 -9
  34. package/esm2022/lib/components/view-profile/view-profile.component.mjs +4 -9
  35. package/esm2022/lib/directives/document-list.directive.mjs +8 -12
  36. package/esm2022/viewer/lib/components/preview/preview.component.mjs +9 -11
  37. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +15 -16
  38. package/fesm2022/alfresco-aca-content-folder-rules.mjs +27 -49
  39. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -1
  40. package/fesm2022/alfresco-aca-content-viewer.mjs +16 -20
  41. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -1
  42. package/fesm2022/alfresco-aca-content.mjs +73 -168
  43. package/fesm2022/alfresco-aca-content.mjs.map +1 -1
  44. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
  45. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +4 -5
  46. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +3 -4
  47. package/folder-rules/rule-details/rule-details.ui-component.d.ts +4 -5
  48. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +3 -4
  49. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
  50. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +3 -4
  51. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +4 -5
  52. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +3 -4
  53. package/lib/components/context-menu/context-menu.component.d.ts +1 -1
  54. package/lib/components/details/details.component.d.ts +1 -2
  55. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +3 -4
  56. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
  57. package/lib/components/files/files.component.d.ts +1 -1
  58. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +4 -6
  59. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +6 -7
  60. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +3 -4
  61. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +3 -4
  62. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +2 -3
  63. package/lib/components/search/search-input/search-input.component.d.ts +1 -2
  64. package/lib/components/search/search-input-control/search-input-control.component.d.ts +2 -5
  65. package/lib/components/search/search-results/search-results.component.d.ts +0 -1
  66. package/lib/components/search/search-results-row/search-results-row.component.d.ts +3 -4
  67. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +3 -5
  68. package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
  69. package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
  70. package/lib/components/sidenav/directives/active-link.directive.d.ts +1 -1
  71. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +3 -4
  72. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +3 -4
  73. package/lib/components/sidenav/sidenav.component.d.ts +3 -4
  74. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
  75. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
  76. package/lib/components/view-profile/view-profile.component.d.ts +2 -4
  77. package/lib/directives/document-list.directive.d.ts +3 -5
  78. package/package.json +5 -5
  79. package/viewer/lib/components/preview/preview.component.d.ts +3 -4
  80. package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
@@ -21,14 +21,14 @@
21
21
  * You should have received a copy of the GNU Lesser General Public License
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
- import { Directive, HostListener } from '@angular/core';
24
+ import { DestroyRef, Directive, HostListener, inject } from '@angular/core';
25
25
  import { DocumentListComponent, DocumentListService } from '@alfresco/adf-content-services';
26
26
  import { ActivatedRoute, Router } from '@angular/router';
27
27
  import { UserPreferencesService } from '@alfresco/adf-core';
28
- import { Subject } from 'rxjs';
29
28
  import { Store } from '@ngrx/store';
30
29
  import { SetSelectedNodesAction } from '@alfresco/aca-shared/store';
31
- import { takeUntil, filter } from 'rxjs/operators';
30
+ import { filter } from 'rxjs/operators';
31
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
32
32
  import * as i0 from "@angular/core";
33
33
  import * as i1 from "@ngrx/store";
34
34
  import * as i2 from "@alfresco/adf-content-services";
@@ -43,10 +43,10 @@ class DocumentListDirective {
43
43
  documentListService;
44
44
  isLibrary = false;
45
45
  selectedNode;
46
- onDestroy$ = new Subject();
47
46
  get sortingPreferenceKey() {
48
47
  return this.route.snapshot.data.sortingPreferenceKey;
49
48
  }
49
+ destroyRef = inject(DestroyRef);
50
50
  constructor(store, documentList, preferences, route, router, documentListService) {
51
51
  this.store = store;
52
52
  this.documentList = documentList;
@@ -80,19 +80,15 @@ class DocumentListDirective {
80
80
  }
81
81
  }
82
82
  this.documentList.ready
83
- .pipe(filter(() => !this.router.url.includes('viewer:view')), takeUntil(this.onDestroy$))
83
+ .pipe(filter(() => !this.router.url.includes('viewer:view')), takeUntilDestroyed(this.destroyRef))
84
84
  .subscribe(() => this.onReady());
85
- this.documentListService.reload$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
85
+ this.documentListService.reload$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
86
86
  this.reload();
87
87
  });
88
- this.documentListService.resetSelection$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
88
+ this.documentListService.resetSelection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
89
89
  this.reset();
90
90
  });
91
91
  }
92
- ngOnDestroy() {
93
- this.onDestroy$.next(true);
94
- this.onDestroy$.complete();
95
- }
96
92
  onSortingChanged(event) {
97
93
  if (this.sortingPreferenceKey) {
98
94
  if (this.documentList.sortingMode === 'client') {
@@ -204,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
204
200
  type: HostListener,
205
201
  args: ['node-unselect']
206
202
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2RpcmVjdGl2ZXMvZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBR25ELE1BSWEscUJBQXFCO0lBV3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWZGLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDMUIsWUFBWSxDQUFZO0lBRXhCLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXBDLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUNVLEtBQWlCLEVBQ2pCLFlBQW1DLEVBQ25DLFdBQW1DLEVBQ25DLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFB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O3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWEzQyxxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUS9DLHlCQUF5QjtzQkFEeEIsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRcEQsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVEvQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVN2QyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgT25Jbml0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50TGlzdENvbXBvbmVudCwgRG9jdW1lbnRMaXN0U2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW2FjYURvY3VtZW50TGlzdF0nXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50TGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpc0xpYnJhcnkgPSBmYWxzZTtcbiAgc2VsZWN0ZWROb2RlOiBOb2RlRW50cnk7XG5cbiAgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgZ2V0IHNvcnRpbmdQcmVmZXJlbmNlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5zb3J0aW5nUHJlZmVyZW5jZUtleTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSBkb2N1bWVudExpc3Q6IERvY3VtZW50TGlzdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdC5zdGlja3lIZWFkZXIgPSB0cnVlO1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LmluY2x1ZGVGaWVsZHMgPSBbJ2lzRmF2b3JpdGUnLCAnYXNwZWN0TmFtZXMnLCAnZGVmaW5pdGlvbiddO1xuICAgIHRoaXMuaXNMaWJyYXJ5ID1cbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LmN1cnJlbnRGb2xkZXJJZCA9PT0gJy1teXNpdGVzLScgfHxcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGN1c3RvbSBub2RlIGxpc3RcbiAgICAgIHRoaXMucm91dGVyLnVybC5lbmRzV2l0aCgnL2xpYnJhcmllcycpIHx8XG4gICAgICB0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL3NlYXJjaC1saWJyYXJpZXMnKTtcblxuICAgIGlmICh0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5KSB7XG4gICAgICBpZiAodGhpcy5wcmVmZXJlbmNlcy5oYXNJdGVtKGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LmNvbHVtbnMud2lkdGhgKSkge1xuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5zZXRDb2x1bW5zV2lkdGhzID0gSlNPTi5wYXJzZSh0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLndpZHRoYCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcmVmZXJlbmNlcy5oYXNJdGVtKGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LmNvbHVtbnMudmlzaWJpbGl0eWApKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnNldENvbHVtbnNWaXNpYmlsaXR5ID0gSlNPTi5wYXJzZSh0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLnZpc2liaWxpdHlgKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByZWZlcmVuY2VzLmhhc0l0ZW0oYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy5vcmRlcmApKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnNldENvbHVtbnNPcmRlciA9IEpTT04ucGFyc2UodGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy5vcmRlcmApKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZG9jdW1lbnRMaXN0LnNvcnRpbmdNb2RlO1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5tb2RlYCwgbW9kZSk7XG4gICAgICBpZiAobW9kZSA9PT0gJ3NlcnZlcicpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlU29ydGluZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlYWR5XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3JykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uUmVhZHkoKSk7XG5cbiAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVsb2FkJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZXNldFNlbGVjdGlvbiQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc29ydGluZy1jaGFuZ2VkJywgWyckZXZlbnQnXSlcbiAgb25Tb3J0aW5nQ2hhbmdlZChldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleSkge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaXN0LnNvcnRpbmdNb2RlID09PSAnY2xpZW50Jykge1xuICAgICAgICB0aGlzLnN0b3JlUHJldmlvdXNTb3J0aW5nKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnByZWZlcmVuY2VzLnNldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5zb3J0aW5nLmtleWAsIGV2ZW50LmRldGFpbC5rZXkpO1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5zb3J0aW5nS2V5YCwgZXZlbnQuZGV0YWlsLnNvcnRpbmdLZXkpO1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5kaXJlY3Rpb25gLCBldmVudC5kZXRhaWwuZGlyZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb2x1bW5zV2lkdGhDaGFuZ2VkJywgWyckZXZlbnQnXSlcbiAgb25Db2x1bW5zV2lkdGhDaGFuZ2VkKGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgIGlmICh0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5KSB7XG4gICAgICB0aGlzLnByZWZlcmVuY2VzLnNldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLndpZHRoYCwgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb2x1bW5zVmlzaWJpbGl0eUNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvbkNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgIGlmICh0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5KSB7XG4gICAgICB0aGlzLnByZWZlcmVuY2VzLnNldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLnZpc2liaWxpdHlgLCBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbHVtbnNPcmRlckNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvbkNvbHVtbk9yZGVyQ2hhbmdlZChldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleSkge1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy5vcmRlcmAsIEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbm9kZS1zZWxlY3QnLCBbJyRldmVudCddKVxuICBvbk5vZGVTZWxlY3QoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgaWYgKCEhZXZlbnQuZGV0YWlsICYmICEhZXZlbnQuZGV0YWlsLm5vZGUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IGV2ZW50LmRldGFpbC5ub2RlO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ25vZGUtdW5zZWxlY3QnKVxuICBvbk5vZGVVbnNlbGVjdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgb25SZWFkeSgpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpO1xuICAgIHRoaXMucmVzdG9yZVNvcnRpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZG9jdW1lbnRMaXN0LnNlbGVjdGlvbi5tYXAoKG5vZGUpID0+IHtcbiAgICAgIG5vZGVbJ2lzTGlicmFyeSddID0gdGhpcy5pc0xpYnJhcnk7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlbGVjdGVkTm9kZXNBY3Rpb24oc2VsZWN0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbG9hZCgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFtdKSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVsbDtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFtdKSk7XG4gIH1cblxuICBwcml2YXRlIHNldFNvcnRpbmcoa2V5OiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5kb2N1bWVudExpc3Quc29ydGluZyA9IFtrZXksIGRpcmVjdGlvbl07XG4gICAgdGhpcy5kb2N1bWVudExpc3QuZGF0YS5zZXRTb3J0aW5nKHsga2V5LCBkaXJlY3Rpb24gfSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3JlUHJldmlvdXNTb3J0aW5nKCkge1xuICAgIGlmICh0aGlzLnByZWZlcmVuY2VzLmhhc0l0ZW0oYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5rZXlgKSkge1xuICAgICAgY29uc3Qga2V5VG9TYXZlID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5rZXlgKTtcblxuICAgICAgaWYgKCFrZXlUb1NhdmUuaW5jbHVkZXModGhpcy5kb2N1bWVudExpc3Quc29ydGluZ1swXSkpIHtcbiAgICAgICAgY29uc3QgZGlyVG9TYXZlID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5kaXJlY3Rpb25gKTtcbiAgICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5wcmV2aW91c0tleWAsIGtleVRvU2F2ZSk7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZXMuc2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcucHJldmlvdXNEaXJlY3Rpb25gLCBkaXJUb1NhdmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZVNvcnRpbmcoKSB7XG4gICAgY29uc3QgW3ByZXZpb3VzS2V5LCBwcmV2aW91c0Rpcl0gPSBbXG4gICAgICB0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5zb3J0aW5nLnByZXZpb3VzS2V5YCwgbnVsbCksXG4gICAgICB0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5zb3J0aW5nLnByZXZpb3VzRGlyZWN0aW9uYCwgbnVsbClcbiAgICBdO1xuXG4gICAgY29uc3QgW2N1cnJlbnRLZXksIGN1cnJlbnREaXJdID0gW1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5rZXlgLCBudWxsKSxcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMuZ2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcuZGlyZWN0aW9uYCwgbnVsbClcbiAgICBdO1xuXG4gICAgaWYgKHByZXZpb3VzS2V5KSB7XG4gICAgICB0aGlzLnNldFNvcnRpbmcocHJldmlvdXNLZXksIHByZXZpb3VzRGlyKTtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRLZXkpIHtcbiAgICAgIHRoaXMuc2V0U29ydGluZyhjdXJyZW50S2V5LCBjdXJyZW50RGlyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2RpcmVjdGl2ZXMvZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVoRSxNQUlhLHFCQUFxQjtJQVd0QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFmRixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksQ0FBWTtJQUV4QixJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN2RCxDQUFDO0lBRWdCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFakQsWUFDVSxLQUFpQixFQUNqQixZQUFtQyxFQUNuQyxXQUFtQyxFQUNuQyxLQUFxQixF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LENBQUM7Z0JBUS9DLHlCQUF5QjtzQkFEeEIsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRcEQsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVEvQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVN2QyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50TGlzdENvbXBvbmVudCwgRG9jdW1lbnRMaXN0U2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTm9kZUVudHJ5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1thY2FEb2N1bWVudExpc3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudExpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGlzTGlicmFyeSA9IGZhbHNlO1xuICBzZWxlY3RlZE5vZGU6IE5vZGVFbnRyeTtcblxuICBnZXQgc29ydGluZ1ByZWZlcmVuY2VLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnNvcnRpbmdQcmVmZXJlbmNlS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSBkb2N1bWVudExpc3Q6IERvY3VtZW50TGlzdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdC5zdGlja3lIZWFkZXIgPSB0cnVlO1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LmluY2x1ZGVGaWVsZHMgPSBbJ2lzRmF2b3JpdGUnLCAnYXNwZWN0TmFtZXMnLCAnZGVmaW5pdGlvbiddO1xuICAgIHRoaXMuaXNMaWJyYXJ5ID1cbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LmN1cnJlbnRGb2xkZXJJZCA9PT0gJy1teXNpdGVzLScgfHxcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGN1c3RvbSBub2RlIGxpc3RcbiAgICAgIHRoaXMucm91dGVyLnVybC5lbmRzV2l0aCgnL2xpYnJhcmllcycpIHx8XG4gICAgICB0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL3NlYXJjaC1saWJyYXJpZXMnKTtcblxuICAgIGlmICh0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5KSB7XG4gICAgICBpZiAodGhpcy5wcmVmZXJlbmNlcy5oYXNJdGVtKGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LmNvbHVtbnMud2lkdGhgKSkge1xuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5zZXRDb2x1bW5zV2lkdGhzID0gSlNPTi5wYXJzZSh0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLndpZHRoYCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcmVmZXJlbmNlcy5oYXNJdGVtKGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LmNvbHVtbnMudmlzaWJpbGl0eWApKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnNldENvbHVtbnNWaXNpYmlsaXR5ID0gSlNPTi5wYXJzZSh0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5jb2x1bW5zLnZpc2liaWxpdHlgKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByZWZlcmVuY2VzLmhhc0l0ZW0oYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy5vcmRlcmApKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnNldENvbHVtbnNPcmRlciA9IEpTT04ucGFyc2UodGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy5vcmRlcmApKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZG9jdW1lbnRMaXN0LnNvcnRpbmdNb2RlO1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5tb2RlYCwgbW9kZSk7XG4gICAgICBpZiAobW9kZSA9PT0gJ3NlcnZlcicpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlU29ydGluZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlYWR5XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3JykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uUmVhZHkoKSk7XG5cbiAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVsb2FkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZXNldFNlbGVjdGlvbiQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3NvcnRpbmctY2hhbmdlZCcsIFsnJGV2ZW50J10pXG4gIG9uU29ydGluZ0NoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXkpIHtcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50TGlzdC5zb3J0aW5nTW9kZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgdGhpcy5zdG9yZVByZXZpb3VzU29ydGluZygpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5rZXlgLCBldmVudC5kZXRhaWwua2V5KTtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMuc2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcuc29ydGluZ0tleWAsIGV2ZW50LmRldGFpbC5zb3J0aW5nS2V5KTtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMuc2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcuZGlyZWN0aW9uYCwgZXZlbnQuZGV0YWlsLmRpcmVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29sdW1uc1dpZHRoQ2hhbmdlZCcsIFsnJGV2ZW50J10pXG4gIG9uQ29sdW1uc1dpZHRoQ2hhbmdlZChldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleSkge1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy53aWR0aGAsIEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29sdW1uc1Zpc2liaWxpdHlDaGFuZ2VkJywgWyckZXZlbnQnXSlcbiAgb25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleSkge1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5zZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uY29sdW1ucy52aXNpYmlsaXR5YCwgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb2x1bW5zT3JkZXJDaGFuZ2VkJywgWyckZXZlbnQnXSlcbiAgb25Db2x1bW5PcmRlckNoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXkpIHtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMuc2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LmNvbHVtbnMub3JkZXJgLCBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ25vZGUtc2VsZWN0JywgWyckZXZlbnQnXSlcbiAgb25Ob2RlU2VsZWN0KGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgIGlmICghIWV2ZW50LmRldGFpbCAmJiAhIWV2ZW50LmRldGFpbC5ub2RlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBldmVudC5kZXRhaWwubm9kZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdub2RlLXVuc2VsZWN0JylcbiAgb25Ob2RlVW5zZWxlY3QoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIG9uUmVhZHkoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnJlc3RvcmVTb3J0aW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmRvY3VtZW50TGlzdC5zZWxlY3Rpb24ubWFwKChub2RlKSA9PiB7XG4gICAgICBub2RlWydpc0xpYnJhcnknXSA9IHRoaXMuaXNMaWJyYXJ5O1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKHNlbGVjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTb3J0aW5nKGtleTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZykge1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LnNvcnRpbmcgPSBba2V5LCBkaXJlY3Rpb25dO1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LmRhdGEuc2V0U29ydGluZyh7IGtleSwgZGlyZWN0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9yZVByZXZpb3VzU29ydGluZygpIHtcbiAgICBpZiAodGhpcy5wcmVmZXJlbmNlcy5oYXNJdGVtKGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcua2V5YCkpIHtcbiAgICAgIGNvbnN0IGtleVRvU2F2ZSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcua2V5YCk7XG5cbiAgICAgIGlmICgha2V5VG9TYXZlLmluY2x1ZGVzKHRoaXMuZG9jdW1lbnRMaXN0LnNvcnRpbmdbMF0pKSB7XG4gICAgICAgIGNvbnN0IGRpclRvU2F2ZSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcuZGlyZWN0aW9uYCk7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZXMuc2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcucHJldmlvdXNLZXlgLCBrZXlUb1NhdmUpO1xuICAgICAgICB0aGlzLnByZWZlcmVuY2VzLnNldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5zb3J0aW5nLnByZXZpb3VzRGlyZWN0aW9uYCwgZGlyVG9TYXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmVTb3J0aW5nKCkge1xuICAgIGNvbnN0IFtwcmV2aW91c0tleSwgcHJldmlvdXNEaXJdID0gW1xuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5wcmV2aW91c0tleWAsIG51bGwpLFxuICAgICAgdGhpcy5wcmVmZXJlbmNlcy5nZXQoYCR7dGhpcy5zb3J0aW5nUHJlZmVyZW5jZUtleX0uc29ydGluZy5wcmV2aW91c0RpcmVjdGlvbmAsIG51bGwpXG4gICAgXTtcblxuICAgIGNvbnN0IFtjdXJyZW50S2V5LCBjdXJyZW50RGlyXSA9IFtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMuZ2V0KGAke3RoaXMuc29ydGluZ1ByZWZlcmVuY2VLZXl9LnNvcnRpbmcua2V5YCwgbnVsbCksXG4gICAgICB0aGlzLnByZWZlcmVuY2VzLmdldChgJHt0aGlzLnNvcnRpbmdQcmVmZXJlbmNlS2V5fS5zb3J0aW5nLmRpcmVjdGlvbmAsIG51bGwpXG4gICAgXTtcblxuICAgIGlmIChwcmV2aW91c0tleSkge1xuICAgICAgdGhpcy5zZXRTb3J0aW5nKHByZXZpb3VzS2V5LCBwcmV2aW91c0Rpcik7XG4gICAgfVxuICAgIGlmIChjdXJyZW50S2V5KSB7XG4gICAgICB0aGlzLnNldFNvcnRpbmcoY3VycmVudEtleSwgY3VycmVudERpcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -21,17 +21,18 @@
21
21
  * You should have received a copy of the GNU Lesser General Public License
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
- import { Component, ViewEncapsulation, HostListener } from '@angular/core';
24
+ import { Component, HostListener, ViewEncapsulation } from '@angular/core';
25
25
  import { CommonModule, Location } from '@angular/common';
26
- import { PRIMARY_OUTLET, ActivatedRoute } from '@angular/router';
27
- import { debounceTime, map, takeUntil } from 'rxjs/operators';
26
+ import { ActivatedRoute, PRIMARY_OUTLET } from '@angular/router';
27
+ import { debounceTime, map } from 'rxjs/operators';
28
28
  import { ViewerModule } from '@alfresco/adf-core';
29
- import { ViewerActionTypes, SetSelectedNodesAction } from '@alfresco/aca-shared/store';
30
- import { PageComponent, AppHookService, ContentApiService, InfoDrawerComponent, ToolbarMenuItemComponent, ToolbarComponent } from '@alfresco/aca-shared';
29
+ import { SetSelectedNodesAction, ViewerActionTypes } from '@alfresco/aca-shared/store';
30
+ import { AppHookService, ContentApiService, InfoDrawerComponent, PageComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
31
31
  import { from } from 'rxjs';
32
32
  import { Actions, ofType } from '@ngrx/effects';
33
33
  import { AlfrescoViewerModule, NodesApiService } from '@alfresco/adf-content-services';
34
34
  import { ViewerService } from '../../services/viewer.service';
35
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
35
36
  import * as i0 from "@angular/core";
36
37
  import * as i1 from "@ngrx/effects";
37
38
  import * as i2 from "@alfresco/aca-shared";
@@ -75,7 +76,7 @@ class PreviewComponent extends PageComponent {
75
76
  ngOnInit() {
76
77
  super.ngOnInit();
77
78
  from(this.infoDrawerOpened$)
78
- .pipe(takeUntil(this.onDestroy$))
79
+ .pipe(takeUntilDestroyed(this.destroyRef))
79
80
  .subscribe((val) => {
80
81
  this.showRightSide = val;
81
82
  });
@@ -109,14 +110,11 @@ class PreviewComponent extends PageComponent {
109
110
  ]);
110
111
  this.extensions
111
112
  .getOpenWithActions()
112
- .pipe(takeUntil(this.onDestroy$))
113
+ .pipe(takeUntilDestroyed(this.destroyRef))
113
114
  .subscribe((actions) => {
114
115
  this.openWith = actions;
115
116
  });
116
117
  }
117
- ngOnDestroy() {
118
- super.ngOnDestroy();
119
- }
120
118
  /**
121
119
  * Loads the particular node into the Viewer
122
120
  *
@@ -243,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
243
241
  type: HostListener,
244
242
  args: ['document:keydown', ['$event']]
245
243
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBd0MsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQXNCLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0csT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFF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QUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7dUdBak9VLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLHlNQ3JEN0IsZ3NDQWtDQSx1YURZWSxZQUFZLGtaQUFFLFlBQVksd1RBQUUsb0JBQW9CLDRsQkFBRSxtQkFBbUIsd0ZBQUUsd0JBQXdCLG1HQUFFLGdCQUFnQjs7U0FPaEgsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBVDVCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxZQUNsSCxhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO3lRQTBIOUIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVXJsVHJlZSwgVXJsU2VnbWVudEdyb3VwLCBVcmxTZWdtZW50LCBQUklNQVJZX09VVExFVCwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZpZXdlck1vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDbG9zZVByZXZpZXdBY3Rpb24sIFZpZXdlckFjdGlvblR5cGVzLCBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHtcbiAgUGFnZUNvbXBvbmVudCxcbiAgQXBwSG9va1NlcnZpY2UsXG4gIENvbnRlbnRBcGlTZXJ2aWNlLFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEFsZnJlc2NvVmlld2VyTW9kdWxlLCBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFZpZXdlck1vZHVsZSwgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIEluZm9EcmF3ZXJDb21wb25lbnQsIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudCwgVG9vbGJhckNvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnYXBwLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2FwcC1wcmV2aWV3JyB9XG59KVxuZXhwb3J0IGNsYXNzIFByZXZpZXdDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGVCYWNrQXNDbG9zZSA9IGZhbHNlO1xuICBuYXZpZ2F0ZU11bHRpcGxlID0gZmFsc2U7XG4gIG5hdmlnYXRlU291cmNlOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0aW9uU291cmNlcyA9IFsnZmF2b3JpdGVzJywgJ2xpYnJhcmllcycsICdwZXJzb25hbC1maWxlcycsICdyZWNlbnQtZmlsZXMnLCAnc2hhcmVkJ107XG4gIG5leHROb2RlSWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmcgPSBudWxsO1xuICBvcGVuV2l0aDogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcbiAgcHJldmlld0xvY2F0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBwcmV2aW91c05vZGVJZDogc3RyaW5nO1xuICByb3V0ZXNTa2lwTmF2aWdhdGlvbiA9IFsnZmF2b3JpdGVzJywgJ3JlY2VudC1maWxlcycsICdzaGFyZWQnXTtcbiAgc2hvd1JpZ2h0U2lkZSA9IGZhbHNlO1xuICBzaW1wbGVzdE1vZGUgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbiA9IFsnYWRmLXZpZXdlcl9fc2lkZWJhcicsICdjZGstb3ZlcmxheS1jb250YWluZXInLCAnYWRmLWltYWdlLXZpZXdlciddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBhcHBIb29rU2VydmljZTogQXBwSG9va1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZW50QXBpOiBDb250ZW50QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGZyb20odGhpcy5pbmZvRHJhd2VyT3BlbmVkJClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0U2lkZSA9IHZhbDtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2aWV3TG9jYXRpb24gPSB0aGlzLnJvdXRlci51cmwuc3Vic3RyKDAsIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvJywgMSkpLnJlcGxhY2UoL1xcLy9nLCAnJyk7XG5cbiAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgdGhpcy5uYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gISFyb3V0ZURhdGEubmF2aWdhdGVCYWNrQXNDbG9zZTtcbiAgICB0aGlzLnNpbXBsZXN0TW9kZSA9ICEhcm91dGVEYXRhLnNpbXBsZXN0TW9kZTtcblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVNdWx0aXBsZSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZU11bHRpcGxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocm91dGVEYXRhLm5hdmlnYXRlU291cmNlKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSByb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25Tb3VyY2VzLmluY2x1ZGVzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5mb2xkZXJJZCA9IHBhcmFtcy5mb2xkZXJJZDtcbiAgICAgIGNvbnN0IGlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUoaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdGhpcy5zdWJzY3JpcHRpb25zLmNvbmNhdChbXG4gICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLm5vZGVzRGVsZXRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKHRydWUpKSxcblxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dChmaWxlLmRhdGEuZW50cnkpKSxcblxuICAgICAgdGhpcy5hY3Rpb25zJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBvZlR5cGU8Q2xvc2VQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5DbG9zZVByZXZpZXcpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSlcbiAgICBdKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHBhcnRpY3VsYXIgbm9kZSBpbnRvIHRoZSBWaWV3ZXJcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgTm9kZSB0byBkaXNwbGF5XG4gICAqL1xuICBhc3luYyBkaXNwbGF5Tm9kZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8oaWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcblxuICAgICAgICBpZiAodGhpcy5ub2RlPy5pc0ZpbGUpIHtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZWFyZXN0ID0gYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmdldE5lYXJlc3ROb2Rlcyh0aGlzLm5vZGUuaWQsIHRoaXMubm9kZS5wYXJlbnRJZCwgdGhpcy5uYXZpZ2F0ZVNvdXJjZSk7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTm9kZUlkID0gbmVhcmVzdC5sZWZ0O1xuICAgICAgICAgICAgdGhpcy5uZXh0Tm9kZUlkID0gbmVhcmVzdC5yaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgaWRdKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIWVyciB8fCBlcnIuc3RhdHVzICE9PSA0MDEpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcblxuICAgIGlmIChrZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBrZXkgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHZpc2liaWxpdHkgY2hhbmdlIG9mIHRoZSBWaWV3ZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNWaXNpYmxlIEluZGljYXRvciB3aGV0aGVyIFZpZXdlciBpcyB2aXNpYmxlIG9yIGhpZGRlbi5cbiAgICovXG4gIG9uVmlzaWJpbGl0eUNoYW5nZWQoaXNWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkTmF2aWdhdGUgPSAhaXNWaXNpYmxlO1xuICAgIHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKHNob3VsZE5hdmlnYXRlOiBib29sZWFuKSB7XG4gICAgaWYgKHNob3VsZE5hdmlnYXRlKSB7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0ZUJhY2tBc0Nsb3NlKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkU2tpcE5hdmlnYXRpb24gPSB0aGlzLnJvdXRlc1NraXBOYXZpZ2F0aW9uLmluY2x1ZGVzKHRoaXMucHJldmlld0xvY2F0aW9uKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldE5hdmlnYXRpb25Db21tYW5kcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG5cbiAgICAgICAgaWYgKCFzaG91bGRTa2lwTmF2aWdhdGlvbiAmJiB0aGlzLmZvbGRlcklkKSB7XG4gICAgICAgICAgcm91dGUucHVzaCh0aGlzLmZvbGRlcklkKTtcbiAgICAgICAgfVxuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBuYXZpZ2F0aW9uIHRvIGEgcHJldmlvdXMgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZUJlZm9yZShldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLnNob3VsZE5hdmlnYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcmV2aW91c05vZGVJZCkge1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMucHJldmlvdXNOb2RlSWQpKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBuYXZpZ2F0aW9uIHRvIGEgbmV4dCBkb2N1bWVudCAqL1xuICBvbk5hdmlnYXRlTmV4dChldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLnNob3VsZE5hdmlnYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXh0Tm9kZUlkKSB7XG4gICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMuZ2V0UHJldmlld1BhdGgodGhpcy5mb2xkZXJJZCwgdGhpcy5uZXh0Tm9kZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIG5vZGUgcHJldmlldyByb3V0ZSBiYXNlZCBvbiBmb2xkZXIgYW5kIG5vZGUgSURzLlxuICAgKlxuICAgKiBAcGFyYW0gZm9sZGVySWQgRm9sZGVyIElEXG4gICAqIEBwYXJhbSBub2RlSWQgTm9kZSBJRFxuICAgKi9cbiAgZ2V0UHJldmlld1BhdGgoZm9sZGVySWQ6IHN0cmluZywgbm9kZUlkOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3Qgcm91dGUgPSBbdGhpcy5wcmV2aWV3TG9jYXRpb25dO1xuXG4gICAgaWYgKGZvbGRlcklkKSB7XG4gICAgICByb3V0ZS5wdXNoKGZvbGRlcklkKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZUlkKSB7XG4gICAgICByb3V0ZS5wdXNoKCdwcmV2aWV3Jywgbm9kZUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwcml2YXRlIGdldE5hdmlnYXRpb25Db21tYW5kcyh1cmw6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCB1cmxUcmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCB1cmxTZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBpZiAoIXVybFNlZ21lbnRHcm91cCkge1xuICAgICAgcmV0dXJuIFt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB1cmxTZWdtZW50R3JvdXAuc2VnbWVudHM7XG5cbiAgICByZXR1cm4gdXJsU2VnbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGl0ZW0pIHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0ucGF0aCwgaXRlbS5wYXJhbWV0ZXJzKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYWNhLXJpZ2h0X3NpZGUtLWhpZGUnOiAhc2hvd1JpZ2h0U2lkZVxuICAgIH1cIlxuICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICBbYWxsb3dOYXZpZ2F0ZV09XCJuYXZpZ2F0ZU11bHRpcGxlXCJcbiAgICBbYWxsb3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93UHJpbnRdPVwiZmFsc2VcIlxuICAgIFtzaG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd0Rvd25sb2FkXT1cImZhbHNlXCJcbiAgICBbYWxsb3dGdWxsU2NyZWVuXT1cImZhbHNlXCJcbiAgICBbY2FuTmF2aWdhdGVCZWZvcmVdPVwiISFwcmV2aW91c05vZGVJZFwiXG4gICAgW2Nhbk5hdmlnYXRlTmV4dF09XCIhIW5leHROb2RlSWRcIlxuICAgIFtvdmVybGF5TW9kZV09XCJ0cnVlXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpc2liaWxpdHlDaGFuZ2VkKCRldmVudClcIlxuICAgIChuYXZpZ2F0ZUJlZm9yZSk9XCJvbk5hdmlnYXRlQmVmb3JlKCRldmVudClcIlxuICAgIChuYXZpZ2F0ZU5leHQpPVwib25OYXZpZ2F0ZU5leHQoJGV2ZW50KVwiXG4gID5cbiAgICA8YWRmLXZpZXdlci1zaWRlYmFyICpuZ0lmPVwiaW5mb0RyYXdlck9wZW5lZCQgfCBhc3luY1wiPlxuICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24uZmlsZVwiIC8+XG4gICAgPC9hZGYtdmlld2VyLXNpZGViYXI+XG5cbiAgICA8YWRmLXZpZXdlci1vcGVuLXdpdGggKm5nSWY9XCJvcGVuV2l0aC5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBvcGVuV2l0aDsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbklkXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhci1tZW51LWl0ZW0gW2FjdGlvblJlZl09XCJhY3Rpb25cIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hZGYtdmlld2VyLW9wZW4td2l0aD5cblxuICAgIDxhZGYtdmlld2VyLXRvb2xiYXItYWN0aW9ucyAqbmdJZj1cIiFzaW1wbGVzdE1vZGVcIj5cbiAgICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwidmlld2VyVG9vbGJhckFjdGlvbnNcIiAvPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG4gIDwvYWRmLWFsZnJlc2NvLXZpZXdlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQXdDLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNHLE9BQU8sRUFDTCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBRWhFLE1BU2EsZ0JBQWlCLFNBQVEsYUFBYTtJQWtCdkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF2QlYsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFDOUIsaUJBQWlCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRixVQUFVLENBQVM7SUFDbkIsTUFBTSxHQUFXLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQTRCLEVBQUUsQ0FBQztJQUN2QyxlQUFlLEdBQVcsSUFBSSxDQUFDO0lBQy9CLGNBQWMsQ0FBUztJQUN2QixvQkFBb0IsR0FBRyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0QsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRWIsd0JBQXdCLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBRXhHLFlBQ1UsUUFBaUIsRUFDakIsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsUUFBa0IsRUFDbEIsZUFBZ0MsRUFDaEMsS0FBcUIsRUFDckIsYUFBNEI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFSQSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUd0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFN0MsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUM5QjtRQUVELElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRTtZQUM1QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO2FBQ2hEO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN6QixJQUFJLEVBQUUsRUFBRTtnQkFDTixLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuRixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6SSxJQUFJLENBQUMsUUFBUTtpQkFDVixJQUFJLENBQ0gsTUFBTSxDQUFxQixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFDMUQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3QztpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVO2FBQ1osa0JBQWtCLEVBQUU7YUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFVO1FBQzFCLElBQUksRUFBRSxFQUFFO1lBQ04sSUFBSTtnQkFDRixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXhFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dCQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDaEgsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7cUJBQ2pDO29CQUNELE9BQU87aUJBQ1I7Z0JBQ0QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN4RDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQzlCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3hEO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXRCLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQy9DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsU0FBa0I7UUFDcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUF1QjtRQUM1QyxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN0QjtpQkFBTTtnQkFDTCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN0RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUUvRCxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzNCO2dCQUNELEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEM7U0FDRjtJQUNILENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsZ0JBQWdCLENBQUMsS0FBaUM7UUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLEVBQUU7WUFDOUUsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1NBQ3BGO0lBQ0gsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxjQUFjLENBQUMsS0FBaUM7UUFDOUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLEVBQUU7WUFDOUUsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUM3QyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVyQyxJQUFJLFFBQVEsRUFBRTtZQUNaLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEI7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8scUJBQXFCLENBQUMsR0FBVztRQUN2QyxNQUFNLE9BQU8sR0FBWSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBb0IsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZDtRQUVELE1BQU0sV0FBVyxHQUFpQixlQUFlLENBQUMsUUFBUSxDQUFDO1FBRTNELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJO1lBQzNDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQW9CO1FBQ3pDLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFM0MsT0FBTyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNoRSxjQUFjLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQztTQUMvQztRQUVELE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRU8sT0FBTyxDQUFDLElBQWtCO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQzt1R0E3TlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IseU1DdEQ3Qixnc0NBa0NBLHVhRGFZLFlBQVksa1pBQUUsWUFBWSx3VEFBRSxvQkFBb0IsNGxCQUFFLG1CQUFtQix3RkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOztTQU9oSCxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFUNUIsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLFlBQ2xILGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7eVFBc0g5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ2xvc2VQcmV2aWV3QWN0aW9uLCBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLCBWaWV3ZXJBY3Rpb25UeXBlcyB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7XG4gIEFwcEhvb2tTZXJ2aWNlLFxuICBDb250ZW50QXBpU2VydmljZSxcbiAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgUGFnZUNvbXBvbmVudCxcbiAgVG9vbGJhckNvbXBvbmVudCxcbiAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBWaWV3ZXJNb2R1bGUsIEFsZnJlc2NvVmlld2VyTW9kdWxlLCBJbmZvRHJhd2VyQ29tcG9uZW50LCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtcHJldmlldycgfVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvbGRlcklkOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gZmFsc2U7XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSBmYWxzZTtcbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIG5hdmlnYXRpb25Tb3VyY2VzID0gWydmYXZvcml0ZXMnLCAnbGlicmFyaWVzJywgJ3BlcnNvbmFsLWZpbGVzJywgJ3JlY2VudC1maWxlcycsICdzaGFyZWQnXTtcbiAgbmV4dE5vZGVJZDogc3RyaW5nO1xuICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG4gIG9wZW5XaXRoOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICBwcmV2aWV3TG9jYXRpb246IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIHJvdXRlc1NraXBOYXZpZ2F0aW9uID0gWydmYXZvcml0ZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHNpbXBsZXN0TW9kZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uID0gWydhZGYtdmlld2VyX19zaWRlYmFyJywgJ2Nkay1vdmVybGF5LWNvbnRhaW5lcicsICdhZGYtaW1hZ2Utdmlld2VyJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMb2NhdGlvbiA9IHRoaXMucm91dGVyLnVybC5zdWJzdHIoMCwgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy8nLCAxKSkucmVwbGFjZSgvXFwvL2csICcnKTtcblxuICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcbiAgICB0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UgPSAhIXJvdXRlRGF0YS5uYXZpZ2F0ZUJhY2tBc0Nsb3NlO1xuICAgIHRoaXMuc2ltcGxlc3RNb2RlID0gISFyb3V0ZURhdGEuc2ltcGxlc3RNb2RlO1xuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5kaXNwbGF5Tm9kZShpZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSksXG5cbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSkpLFxuXG4gICAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KVxuICAgIF0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwYXJ0aWN1bGFyIG5vZGUgaW50byB0aGUgVmlld2VyXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE5vZGUgdG8gZGlzcGxheVxuICAgKi9cbiAgYXN5bmMgZGlzcGxheU5vZGUoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5ub2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKGlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQsIHRoaXMubmF2aWdhdGVTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFlcnIgfHwgZXJyLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgVmlld2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzVmlzaWJsZSBJbmRpY2F0b3Igd2hldGhlciBWaWV3ZXIgaXMgdmlzaWJsZSBvciBoaWRkZW4uXG4gICAqL1xuICBvblZpc2liaWxpdHlDaGFuZ2VkKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZE5hdmlnYXRlID0gIWlzVmlzaWJsZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZTogYm9vbGVhbikge1xuICAgIGlmIChzaG91bGROYXZpZ2F0ZSkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSkge1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNraXBOYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROYXZpZ2F0aW9uQ29tbWFuZHModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuXG4gICAgICAgIGlmICghc2hvdWxkU2tpcE5hdmlnYXRpb24gJiYgdGhpcy5mb2xkZXJJZCkge1xuICAgICAgICAgIHJvdXRlLnB1c2godGhpcy5mb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIHByZXZpb3VzIGRvY3VtZW50ICovXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJldmlvdXNOb2RlSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5nZXRQcmV2aWV3UGF0aCh0aGlzLmZvbGRlcklkLCB0aGlzLnByZXZpb3VzTm9kZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIG5leHQgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV4dE5vZGVJZCkge1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMubmV4dE5vZGVJZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBub2RlIHByZXZpZXcgcm91dGUgYmFzZWQgb24gZm9sZGVyIGFuZCBub2RlIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcklkIEZvbGRlciBJRFxuICAgKiBAcGFyYW0gbm9kZUlkIE5vZGUgSURcbiAgICovXG4gIGdldFByZXZpZXdQYXRoKGZvbGRlcklkOiBzdHJpbmcsIG5vZGVJZDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW3RoaXMucHJldmlld0xvY2F0aW9uXTtcblxuICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgcm91dGUucHVzaChmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgcm91dGUucHVzaCgncHJldmlldycsIG5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROYXZpZ2F0aW9uQ29tbWFuZHModXJsOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCk7XG4gICAgY29uc3QgdXJsU2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgaWYgKCF1cmxTZWdtZW50R3JvdXApIHtcbiAgICAgIHJldHVybiBbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdID0gdXJsU2VnbWVudEdyb3VwLnNlZ21lbnRzO1xuXG4gICAgcmV0dXJuIHVybFNlZ21lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBpdGVtKSB7XG4gICAgICBhY2MucHVzaChpdGVtLnBhdGgsIGl0ZW0ucGFyYW1ldGVycyk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTmF2aWdhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgIXRoaXMuaXNDaGlsZChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QpKSB7XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhY3VycmVudEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGlzQ2hpbGQobGlzdDogRE9NVG9rZW5MaXN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCkuc29tZSgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHRoaXMuY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uLmluY2x1ZGVzKGNsYXNzTmFtZSkpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZUlkXCI+XG4gIDxhZGYtYWxmcmVzY28tdmlld2VyXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2FjYS1yaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW2Nhbk5hdmlnYXRlQmVmb3JlXT1cIiEhcHJldmlvdXNOb2RlSWRcIlxuICAgIFtjYW5OYXZpZ2F0ZU5leHRdPVwiISFuZXh0Tm9kZUlkXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwidHJ1ZVwiXG4gICAgKHNob3dWaWV3ZXJDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZSgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVOZXh0KT1cIm9uTmF2aWdhdGVOZXh0KCRldmVudClcIlxuICA+XG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmZpbGVcIiAvPlxuICAgIDwvYWRmLXZpZXdlci1zaWRlYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItb3Blbi13aXRoICpuZ0lmPVwib3BlbldpdGgubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygb3BlbldpdGg7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YXBwLXRvb2xiYXItbWVudS1pdGVtIFthY3Rpb25SZWZdPVwiYWN0aW9uXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnMgKm5nSWY9XCIhc2ltcGxlc3RNb2RlXCI+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInZpZXdlclRvb2xiYXJBY3Rpb25zXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -24,16 +24,17 @@
24
24
  import { AppExtensionService, AppHookService, AppSettingsService, ContentApiService, InfoDrawerComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
25
25
  import { getAppSelection, isInfoDrawerOpened, SetCurrentNodeVersionAction, SetSelectedNodesAction, ViewerActionTypes, ViewNodeAction } from '@alfresco/aca-shared/store';
26
26
  import { VersionsApi } from '@alfresco/js-api';
27
- import { Component, HostListener, inject, ViewEncapsulation } from '@angular/core';
27
+ import { Component, DestroyRef, HostListener, inject, ViewEncapsulation } from '@angular/core';
28
28
  import { ActivatedRoute, PRIMARY_OUTLET, Router } from '@angular/router';
29
29
  import { ViewerOpenWithComponent, ViewerSidebarComponent, ViewerToolbarActionsComponent } from '@alfresco/adf-core';
30
30
  import { Store } from '@ngrx/store';
31
- import { from, Subject } from 'rxjs';
32
- import { debounceTime, takeUntil } from 'rxjs/operators';
31
+ import { from } from 'rxjs';
32
+ import { debounceTime } from 'rxjs/operators';
33
33
  import { Actions, ofType } from '@ngrx/effects';
34
34
  import { AlfrescoApiService, AlfrescoViewerComponent, DocumentListService, NodesApiService, UploadService } from '@alfresco/adf-content-services';
35
35
  import { CommonModule } from '@angular/common';
36
36
  import { ViewerService } from '../../services/viewer.service';
37
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
37
38
  import * as i0 from "@angular/core";
38
39
  import * as i1 from "@ngrx/effects";
39
40
  import * as i2 from "@alfresco/adf-content-services";
@@ -61,7 +62,6 @@ class AcaViewerComponent {
61
62
  this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());
62
63
  return this._versionsApi;
63
64
  }
64
- onDestroy$ = new Subject();
65
65
  fileName;
66
66
  folderId = null;
67
67
  infoDrawerOpened$;
@@ -80,6 +80,7 @@ class AcaViewerComponent {
80
80
  navigationPath;
81
81
  previewLocation;
82
82
  containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
83
+ destroyRef = inject(DestroyRef);
83
84
  constructor(actions$, apiService, appHookService, contentApi, extensions, nodesApiService, route, router, store, uploadService, viewerService) {
84
85
  this.actions$ = actions$;
85
86
  this.apiService = apiService;
@@ -96,25 +97,25 @@ class AcaViewerComponent {
96
97
  ngOnInit() {
97
98
  this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);
98
99
  from(this.infoDrawerOpened$)
99
- .pipe(takeUntil(this.onDestroy$))
100
+ .pipe(takeUntilDestroyed(this.destroyRef))
100
101
  .subscribe((val) => {
101
102
  this.showRightSide = val;
102
103
  });
103
104
  this.store
104
105
  .select(getAppSelection)
105
- .pipe(takeUntil(this.onDestroy$))
106
+ .pipe(takeUntilDestroyed(this.destroyRef))
106
107
  .subscribe((selection) => {
107
108
  this.selection = selection;
108
109
  });
109
110
  this.extensions
110
111
  .getViewerToolbarActions()
111
- .pipe(takeUntil(this.onDestroy$))
112
+ .pipe(takeUntilDestroyed(this.destroyRef))
112
113
  .subscribe((actions) => {
113
114
  this.toolbarActions = actions;
114
115
  });
115
116
  this.extensions
116
117
  .getOpenWithActions()
117
- .pipe(takeUntil(this.onDestroy$))
118
+ .pipe(takeUntilDestroyed(this.destroyRef))
118
119
  .subscribe((actions) => {
119
120
  this.openWith = actions;
120
121
  });
@@ -142,19 +143,19 @@ class AcaViewerComponent {
142
143
  this.navigateSource = this.route.snapshot.data.navigateSource;
143
144
  }
144
145
  }
145
- this.actions$.pipe(ofType(ViewerActionTypes.ClosePreview), takeUntil(this.onDestroy$)).subscribe(() => {
146
+ this.actions$.pipe(ofType(ViewerActionTypes.ClosePreview), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
146
147
  this.store.dispatch(new SetCurrentNodeVersionAction(null));
147
148
  this.navigateToFileLocation();
148
149
  });
149
150
  this.actions$
150
- .pipe(ofType(ViewerActionTypes.RefreshPreview), takeUntil(this.onDestroy$))
151
+ .pipe(ofType(ViewerActionTypes.RefreshPreview), takeUntilDestroyed(this.destroyRef))
151
152
  .subscribe((action) => {
152
153
  this.nodesApiService.nodeUpdated.next(action.node);
153
154
  void this.displayNode(action.node.id);
154
155
  });
155
- this.appHookService.nodesDeleted.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.navigateToFileLocation());
156
- this.uploadService.fileUploadDeleted.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.navigateToFileLocation());
157
- this.uploadService.fileUploadComplete.pipe(debounceTime(300), takeUntil(this.onDestroy$)).subscribe((file) => {
156
+ this.appHookService.nodesDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
157
+ this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
158
+ this.uploadService.fileUploadComplete.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((file) => {
158
159
  this.nodesApiService.nodeUpdated.next(file.data.entry);
159
160
  void this.displayNode(file.data.entry.id);
160
161
  });
@@ -166,8 +167,6 @@ class AcaViewerComponent {
166
167
  }
167
168
  ngOnDestroy() {
168
169
  this.store.dispatch(new SetCurrentNodeVersionAction(null));
169
- this.onDestroy$.next(true);
170
- this.onDestroy$.complete();
171
170
  }
172
171
  trackByActionId(_, obj) {
173
172
  return obj.id;
@@ -258,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
258
257
  type: HostListener,
259
258
  args: ['document:keydown', ['$event']]
260
259
  }] } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUdMLGVBQWUsRUFDZixrQkFBa0IsRUFFbEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQs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UCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3dCQUM3Qix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjtxQkFDdkIsWUFDUyxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFOzBYQWtNN0IsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7XG4gIEFwcEV4dGVuc2lvblNlcnZpY2UsXG4gIEFwcEhvb2tTZXJ2aWNlLFxuICBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gIENvbnRlbnRBcGlTZXJ2aWNlLFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBUb29sYmFyQ29tcG9uZW50LFxuICBUb29sYmFyTWVudUl0ZW1Db21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHtcbiAgQXBwU3RvcmUsXG4gIENsb3NlUHJldmlld0FjdGlvbixcbiAgZ2V0QXBwU2VsZWN0aW9uLFxuICBpc0luZm9EcmF3ZXJPcGVuZWQsXG4gIFJlZnJlc2hQcmV2aWV3QWN0aW9uLFxuICBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24sXG4gIFNldFNlbGVjdGVkTm9kZXNBY3Rpb24sXG4gIFZpZXdlckFjdGlvblR5cGVzLFxuICBWaWV3Tm9kZUFjdGlvblxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBDb250ZW50QWN0aW9uUmVmLCBTZWxlY3Rpb25TdGF0ZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBOb2RlLCBWZXJzaW9uRW50cnksIFZlcnNpb25zQXBpIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQUklNQVJZX09VVExFVCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50LCBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50LCBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UsIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LCBEb2N1bWVudExpc3RTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgQWxmcmVzY29WaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2V0dGluZ3MgPSBpbmplY3QoQXBwU2V0dGluZ3NTZXJ2aWNlKTtcblxuICBwcml2YXRlIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgaW5mb0RyYXdlck9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICBuYXZpZ2F0ZVNvdXJjZTogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvblNvdXJjZXMgPSBbJ2Zhdm9yaXRlcycsICdsaWJyYXJpZXMnLCAncGVyc29uYWwtZmlsZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBuZXh0Tm9kZUlkOiBzdHJpbmc7XG4gIG5vZGU6IE5vZGU7XG4gIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBwcmV2aW91c05vZGVJZDogc3RyaW5nO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHRvb2xiYXJBY3Rpb25zOiBDb250ZW50QWN0aW9uUmVmW10gPSBbXTtcbiAgdmVyc2lvbklkOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvblBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBwcmV2aWV3TG9jYXRpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwSG9va1NlcnZpY2U6IEFwcEhvb2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGVudEFwaTogQ29udGVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHRlbnNpb25zOiBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbmZvRHJhd2VyT3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzSW5mb0RyYXdlck9wZW5lZCk7XG5cbiAgICBmcm9tKHRoaXMuaW5mb0RyYXdlck9wZW5lZCQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dSaWdodFNpZGUgPSB2YWw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldFZpZXdlclRvb2xiYXJBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnRvb2xiYXJBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuZm9sZGVySWQgPSBwYXJhbXMuZm9sZGVySWQ7XG4gICAgICBjb25zdCB7IG5vZGVJZCB9ID0gcGFyYW1zO1xuICAgICAgdGhpcy52ZXJzaW9uSWQgPSBwYXJhbXMudmVyc2lvbklkO1xuICAgICAgaWYgKHRoaXMudmVyc2lvbklkKSB7XG4gICAgICAgIHZvaWQgdGhpcy52ZXJzaW9uc0FwaS5nZXRWZXJzaW9uKG5vZGVJZCwgdGhpcy52ZXJzaW9uSWQpLnRoZW4oKHZlcnNpb246IFZlcnNpb25FbnRyeSkgPT4ge1xuICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24odmVyc2lvbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZUlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5kaXNwbGF5Tm9kZShub2RlSWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uUGF0aCA9IHBhcmFtcy5wYXRoIHx8IHBhcmFtcy5sb2NhdGlvbjtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE/Lm5hdmlnYXRlU291cmNlKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEubmF2aWdhdGVTb3VyY2UudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25Tb3VyY2VzLmluY2x1ZGVzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVNvdXJjZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5uYXZpZ2F0ZVNvdXJjZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUob2ZUeXBlPENsb3NlUHJldmlld0FjdGlvbj4oVmlld2VyQWN0aW9uVHlwZXMuQ2xvc2VQcmV2aWV3KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24obnVsbCkpO1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAucGlwZShvZlR5cGU8UmVmcmVzaFByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLlJlZnJlc2hQcmV2aWV3KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb246IFJlZnJlc2hQcmV2aWV3QWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMubm9kZXNBcGlTZXJ2aWNlLm5vZGVVcGRhdGVkLm5leHQoYWN0aW9uLm5vZGUpO1xuICAgICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUoYWN0aW9uLm5vZGUuaWQpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLm5vZGVzRGVsZXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCkpO1xuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKSk7XG5cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGZpbGUpID0+IHtcbiAgICAgIHRoaXMubm9kZXNBcGlTZXJ2aWNlLm5vZGVVcGRhdGVkLm5leHQoZmlsZS5kYXRhLmVudHJ5KTtcbiAgICAgIHZvaWQgdGhpcy5kaXNwbGF5Tm9kZShmaWxlLmRhdGEuZW50cnkuaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2aWV3TG9jYXRpb24gPSB0aGlzLnJvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvJywgMSkpLnJlcGxhY2UoL1xcLy9nLCAnJyk7XG4gIH1cblxuICBvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKCkge1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZWxvYWQoKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbihudWxsKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFja0J5QWN0aW9uSWQoXzogbnVtYmVyLCBvYmo6IENvbnRlbnRBY3Rpb25SZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmouaWQ7XG4gIH1cblxuICBhc3luYyBkaXNwbGF5Tm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIGlmIChub2RlSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubm9kZSA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5nZXROb2RlSW5mbyhub2RlSWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU11bHRpcGxlID0gdGhpcy5leHRlbnNpb25zLmNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKHsgZW50cnk6IHRoaXMubm9kZSB9KTtcblxuICAgICAgICBpZiAodGhpcy5ub2RlPy5pc0ZpbGUpIHtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5ub2RlLm5hbWUgKyB0aGlzLm5vZGU/LnByb3BlcnRpZXM/LlsnY206dmVyc2lvbkxhYmVsJ107XG4gICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQsIHRoaXMubmF2aWdhdGVTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSBKU09OLnBhcnNlKGVycm9yLm1lc3NhZ2UpLmVycm9yLnN0YXR1c0NvZGU7XG5cbiAgICAgICAgaWYgKHN0YXR1c0NvZGUgIT09IDQwMSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgeyBvdXRsZXRzOiB7IHZpZXdlcjogbnVsbCB9IH1dKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBub2RlSWRdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMucHJldmlvdXNOb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMubmV4dE5vZGVJZCwgeyBsb2NhdGlvbiB9KSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcblxuICAgIGlmIChrZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBrZXkgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlTG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uUGF0aCB8fCB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE5hdmlnYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICF0aGlzLmlzQ2hpbGQoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KSkge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiAhIWN1cnJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NoaWxkKGxpc3Q6IERPTVRva2VuTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGxpc3QpLnNvbWUoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB0aGlzLmNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyhjbGFzc05hbWUpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVJZFwiPlxuICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdhY2EtcmlnaHRfc2lkZS0taGlkZSc6ICFzaG93UmlnaHRTaWRlXG4gICAgfVwiXG4gICAgW21heFJldHJpZXNdPVwic2V0dGluZ3Mudmlld2VyTWF4UmV0cmllc1wiXG4gICAgW25vZGVJZF09XCJub2RlSWRcIlxuICAgIFt2ZXJzaW9uSWRdPVwidmVyc2lvbklkXCJcbiAgICBbYWxsb3dOYXZpZ2F0ZV09XCJuYXZpZ2F0ZU11bHRpcGxlXCJcbiAgICBbYWxsb3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93UHJpbnRdPVwiZmFsc2VcIlxuICAgIFtzaG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd0Rvd25sb2FkXT1cImZhbHNlXCJcbiAgICBbYWxsb3dGdWxsU2NyZWVuXT1cImZhbHNlXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwidHJ1ZVwiXG4gICAgW2hpZGVJbmZvQnV0dG9uXT1cInRydWVcIlxuICAgIFtjbG9zZUJ1dHRvblBvc2l0aW9uXT1cInNldHRpbmdzLnZpZXdlckNsb3NlQnV0dG9uUG9zaXRpb25cIlxuICAgIChzaG93Vmlld2VyQ2hhbmdlKT1cIm9uVmlld2VyVmlzaWJpbGl0eUNoYW5nZWQoKVwiXG4gICAgW2Nhbk5hdmlnYXRlQmVmb3JlXT1cIiEhcHJldmlvdXNOb2RlSWRcIlxuICAgIFtjYW5OYXZpZ2F0ZU5leHRdPVwiISFuZXh0Tm9kZUlkXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZSgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVOZXh0KT1cIm9uTmF2aWdhdGVOZXh0KCRldmVudClcIlxuICA+XG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmZpbGVcIiAvPlxuICAgIDwvYWRmLXZpZXdlci1zaWRlYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItb3Blbi13aXRoICpuZ0lmPVwib3BlbldpdGgubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygb3BlbldpdGg7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YXBwLXRvb2xiYXItbWVudS1pdGVtIFthY3Rpb25SZWZdPVwiYWN0aW9uXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInRvb2xiYXJBY3Rpb25zXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUdMLGVBQWUsRUFDZixrQkFBa0IsRUFFbEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMs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d0JBQ3hCLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QixZQUNTLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7MFhBZ003QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgQXBwSG9va1NlcnZpY2UsXG4gIEFwcFNldHRpbmdzU2VydmljZSxcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG4gIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ2xvc2VQcmV2aWV3QWN0aW9uLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgUmVmcmVzaFByZXZpZXdBY3Rpb24sXG4gIFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbixcbiAgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbixcbiAgVmlld2VyQWN0aW9uVHlwZXMsXG4gIFZpZXdOb2RlQWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYsIFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE5vZGUsIFZlcnNpb25FbnRyeSwgVmVyc2lvbnNBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVmlld2VyT3BlbldpdGhDb21wb25lbnQsIFZpZXdlclNpZGViYXJDb21wb25lbnQsIFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UsIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LCBEb2N1bWVudExpc3RTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgQWxmcmVzY29WaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2V0dGluZ3MgPSBpbmplY3QoQXBwU2V0dGluZ3NTZXJ2aWNlKTtcblxuICBwcml2YXRlIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgaW5mb0RyYXdlck9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICBuYXZpZ2F0ZVNvdXJjZTogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvblNvdXJjZXMgPSBbJ2Zhdm9yaXRlcycsICdsaWJyYXJpZXMnLCAncGVyc29uYWwtZmlsZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBuZXh0Tm9kZUlkOiBzdHJpbmc7XG4gIG5vZGU6IE5vZGU7XG4gIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBwcmV2aW91c05vZGVJZDogc3RyaW5nO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHRvb2xiYXJBY3Rpb25zOiBDb250ZW50QWN0aW9uUmVmW10gPSBbXTtcbiAgdmVyc2lvbklkOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvblBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBwcmV2aWV3TG9jYXRpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5mb0RyYXdlck9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChpc0luZm9EcmF3ZXJPcGVuZWQpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRWaWV3ZXJUb29sYmFyQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50b29sYmFyQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgeyBub2RlSWQgfSA9IHBhcmFtcztcbiAgICAgIHRoaXMudmVyc2lvbklkID0gcGFyYW1zLnZlcnNpb25JZDtcbiAgICAgIGlmICh0aGlzLnZlcnNpb25JZCkge1xuICAgICAgICB2b2lkIHRoaXMudmVyc2lvbnNBcGkuZ2V0VmVyc2lvbihub2RlSWQsIHRoaXMudmVyc2lvbklkKS50aGVuKCh2ZXJzaW9uOiBWZXJzaW9uRW50cnkpID0+IHtcbiAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKHZlcnNpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVJZCkge1xuICAgICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblBhdGggPSBwYXJhbXMucGF0aCB8fCBwYXJhbXMubG9jYXRpb247XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhPy5uYXZpZ2F0ZVNvdXJjZSkge1xuICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLm5hdmlnYXRlU291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU291cmNlcy5pbmNsdWRlcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVTb3VyY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEubmF2aWdhdGVTb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKG51bGwpKTtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZUeXBlPFJlZnJlc2hQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5SZWZyZXNoUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9uOiBSZWZyZXNoUHJldmlld0FjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGFjdGlvbi5ub2RlKTtcbiAgICAgICAgdm9pZCB0aGlzLmRpc3BsYXlOb2RlKGFjdGlvbi5ub2RlLmlkKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hcHBIb29rU2VydmljZS5ub2Rlc0RlbGV0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCkpO1xuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRDb21wbGV0ZS5waXBlKGRlYm91bmNlVGltZSgzMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB7XG4gICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSk7XG4gICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUoZmlsZS5kYXRhLmVudHJ5LmlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldmlld0xvY2F0aW9uID0gdGhpcy5yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignLycsIDEpKS5yZXBsYWNlKC9cXC8vZywgJycpO1xuICB9XG5cbiAgb25WaWV3ZXJWaXNpYmlsaXR5Q2hhbmdlZCgpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVsb2FkKCk7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24obnVsbCkpO1xuICB9XG5cbiAgdHJhY2tCeUFjdGlvbklkKF86IG51bWJlciwgb2JqOiBDb250ZW50QWN0aW9uUmVmKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2JqLmlkO1xuICB9XG5cbiAgYXN5bmMgZGlzcGxheU5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAobm9kZUlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8obm9kZUlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVNdWx0aXBsZSA9IHRoaXMuZXh0ZW5zaW9ucy5jYW5TaG93Vmlld2VyTmF2aWdhdGlvbih7IGVudHJ5OiB0aGlzLm5vZGUgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMubm9kZS5uYW1lICsgdGhpcy5ub2RlPy5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddO1xuICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lYXJlc3QgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuZ2V0TmVhcmVzdE5vZGVzKHRoaXMubm9kZS5pZCwgdGhpcy5ub2RlLnBhcmVudElkLCB0aGlzLm5hdmlnYXRlU291cmNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNOb2RlSWQgPSBuZWFyZXN0LmxlZnQ7XG4gICAgICAgICAgICB0aGlzLm5leHROb2RlSWQgPSBuZWFyZXN0LnJpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvci5zdGF0dXNDb2RlO1xuXG4gICAgICAgIGlmIChzdGF0dXNDb2RlICE9PSA0MDEpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIHsgb3V0bGV0czogeyB2aWV3ZXI6IG51bGwgfSB9XSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgbm9kZUlkXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk5hdmlnYXRlQmVmb3JlKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLnByZXZpb3VzTm9kZUlkLCB7IGxvY2F0aW9uIH0pKTtcbiAgfVxuXG4gIG9uTmF2aWdhdGVOZXh0KGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLm5leHROb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuZ2V0RmlsZUxvY2F0aW9uKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUxvY2F0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblBhdGggfHwgdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKS5yb290LmNoaWxkcmVuW1BSSU1BUllfT1VUTEVUXS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYWNhLXJpZ2h0X3NpZGUtLWhpZGUnOiAhc2hvd1JpZ2h0U2lkZVxuICAgIH1cIlxuICAgIFttYXhSZXRyaWVzXT1cInNldHRpbmdzLnZpZXdlck1heFJldHJpZXNcIlxuICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICBbdmVyc2lvbklkXT1cInZlcnNpb25JZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW292ZXJsYXlNb2RlXT1cInRydWVcIlxuICAgIFtoaWRlSW5mb0J1dHRvbl09XCJ0cnVlXCJcbiAgICBbY2xvc2VCdXR0b25Qb3NpdGlvbl09XCJzZXR0aW5ncy52aWV3ZXJDbG9zZUJ1dHRvblBvc2l0aW9uXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKClcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoLmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIG9wZW5XaXRoOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uSWRcIj5cbiAgICAgICAgPGFwcC10b29sYmFyLW1lbnUtaXRlbSBbYWN0aW9uUmVmXT1cImFjdGlvblwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FkZi12aWV3ZXItb3Blbi13aXRoPlxuXG4gICAgPGFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICAgICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJ0b29sYmFyQWN0aW9uc1wiIC8+XG4gICAgPC9hZGYtdmlld2VyLXRvb2xiYXItYWN0aW9ucz5cbiAgPC9hZGYtYWxmcmVzY28tdmlld2VyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=