@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,8 +21,7 @@
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, EventEmitter, Input, Output, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';
25
- import { Subject } from 'rxjs';
24
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
26
25
  import { CommonModule } from '@angular/common';
27
26
  import { TranslateModule } from '@ngx-translate/core';
28
27
  import { MatButtonModule } from '@angular/material/button';
@@ -39,7 +38,6 @@ import * as i5 from "@angular/material/form-field";
39
38
  import * as i6 from "@angular/material/input";
40
39
  import * as i7 from "@angular/forms";
41
40
  class SearchInputControlComponent {
42
- onDestroy$ = new Subject();
43
41
  /** Type of the input field to render, e.g. "search" or "text" (default). */
44
42
  inputType = 'text';
45
43
  /** Emitted when the search is submitted pressing ENTER button.
@@ -55,10 +53,6 @@ class SearchInputControlComponent {
55
53
  searchChange = new EventEmitter();
56
54
  searchInput;
57
55
  searchTerm = '';
58
- ngOnDestroy() {
59
- this.onDestroy$.next(true);
60
- this.onDestroy$.complete();
61
- }
62
56
  searchSubmit(event) {
63
57
  this.submit.emit(event);
64
58
  }
@@ -91,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
91
85
  type: ViewChild,
92
86
  args: ['searchInput', { static: true }]
93
87
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtaW5wdXQtY29udHJvbC9zZWFyY2gtaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC1jb250cm9sL3NlYXJjaC1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQUU3QyxNQVNhLDJCQUEyQjtJQUN0QyxVQUFVLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFFdEQsNEVBQTRFO0lBRTVFLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFFbkI7O09BRUc7SUFFSCw0REFBNEQ7SUFDNUQsTUFBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRS9DOzs7O09BSUc7SUFFSCxZQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFHeEQsV0FBVyxDQUFhO0lBRXhCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7dUdBL0NVLDJCQUEyQjsyRkFBM0IsMkJBQTJCLCtWQzNDeEMsc2hDQWdDQSx5ZkRJWSxZQUFZLGtJQUFFLGVBQWUsMkZBQUUsZUFBZSwyTEFBRSxhQUFhLG1MQUFFLGtCQUFrQiwyZUFBRSxjQUFjLDBXQUFFLFdBQVc7O1NBTzdHLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQVR2QyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLFlBQy9HLDBCQUEwQixpQkFHckIsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTs4QkFPckMsU0FBUztzQkFEUixLQUFLOztRQU9OLDREQUE0RDtRQUM1RCxNQUFNO3NCQUZMLE1BQU07Z0JBVVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2FwcC1zZWFyY2gtaW5wdXQtY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtc2VhcmNoLWNvbnRyb2wnIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgb25EZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqIFR5cGUgb2YgdGhlIGlucHV0IGZpZWxkIHRvIHJlbmRlciwgZS5nLiBcInNlYXJjaFwiIG9yIFwidGV4dFwiIChkZWZhdWx0KS4gKi9cbiAgQElucHV0KClcbiAgaW5wdXRUeXBlID0gJ3RleHQnO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpcyBzdWJtaXR0ZWQgcHJlc3NpbmcgRU5URVIgYnV0dG9uLlxuICAgKiBUaGUgc2VhcmNoIHRlcm0gaXMgcHJvdmlkZWQgYXMgdmFsdWUgb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCB0ZXJtIGlzIGNoYW5nZWQuIFRoZSBzZWFyY2ggdGVybSBpcyBwcm92aWRlZFxuICAgKiBpbiB0aGUgJ3ZhbHVlJyBwcm9wZXJ0eSBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0LiAgSWYgdGhlIHRlcm0gaXMgbGVzc1xuICAgKiB0aGFuIHRocmVlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIHRoZW4gdGhlIHRlcm0gaXMgdHJ1bmNhdGVkIHRvIGFuIGVtcHR5XG4gICAqIHN0cmluZy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBzZWFyY2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgc2VhcmNoVGVybSA9ICcnO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VhcmNoU3VibWl0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGlucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQoJycpO1xuICB9XG5cbiAgaXNUZXJtVG9vU2hvcnQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuc2VhcmNoVGVybSAmJiB0aGlzLnNlYXJjaFRlcm0ubGVuZ3RoIDwgMik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNvbnRhaW5lclwiPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcHAtaW5wdXQtZm9ybS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIG1hdFByZWZpeFxuICAgICAgY2xhc3M9XCJhcHAtc2VhcmNoLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2VhcmNoU3VibWl0KHNlYXJjaFRlcm0pXCJcbiAgICAgIFt0aXRsZV09XCInU0VBUkNILkJVVFRPTi5UT09MVElQJyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NFQVJDSC5CVVRUT04uQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgI3NlYXJjaElucHV0XG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guSU5QVVQuQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3R5cGVdPVwiaW5wdXRUeXBlXCJcbiAgICAgIGlkPVwiYXBwLWNvbnRyb2wtaW5wdXRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNILklOUFVULlBMQUNFSE9MREVSJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgIC8+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWFyY2hUZXJtLmxlbmd0aFwiIGNsYXNzPVwiYXBwLXN1ZmZpeC1pY29uXCI+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtaW5wdXQtY29udHJvbC9zZWFyY2gtaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC1jb250cm9sL3NlYXJjaC1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFFN0MsTUFTYSwyQkFBMkI7SUFDdEMsNEVBQTRFO0lBRTVFLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFFbkI7O09BRUc7SUFFSCw0REFBNEQ7SUFDNUQsTUFBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRS9DOzs7O09BSUc7SUFFSCxZQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFHeEQsV0FBVyxDQUFhO0lBRXhCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzt1R0F4Q1UsMkJBQTJCOzJGQUEzQiwyQkFBMkIsK1ZDMUN4QyxzaENBZ0NBLHlmREdZLFlBQVksa0lBQUUsZUFBZSwyRkFBRSxlQUFlLDJMQUFFLGFBQWEsbUxBQUUsa0JBQWtCLDJlQUFFLGNBQWMsMFdBQUUsV0FBVzs7U0FPN0csMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBVHZDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsWUFDL0csMEJBQTBCLGlCQUdyQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFOzhCQUtyQyxTQUFTO3NCQURSLEtBQUs7O1FBT04sNERBQTREO1FBQzVELE1BQU07c0JBRkwsTUFBTTtnQkFVUCxZQUFZO3NCQURYLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2FwcC1zZWFyY2gtaW5wdXQtY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtc2VhcmNoLWNvbnRyb2wnIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGlucHV0IGZpZWxkIHRvIHJlbmRlciwgZS5nLiBcInNlYXJjaFwiIG9yIFwidGV4dFwiIChkZWZhdWx0KS4gKi9cbiAgQElucHV0KClcbiAgaW5wdXRUeXBlID0gJ3RleHQnO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpcyBzdWJtaXR0ZWQgcHJlc3NpbmcgRU5URVIgYnV0dG9uLlxuICAgKiBUaGUgc2VhcmNoIHRlcm0gaXMgcHJvdmlkZWQgYXMgdmFsdWUgb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCB0ZXJtIGlzIGNoYW5nZWQuIFRoZSBzZWFyY2ggdGVybSBpcyBwcm92aWRlZFxuICAgKiBpbiB0aGUgJ3ZhbHVlJyBwcm9wZXJ0eSBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0LiAgSWYgdGhlIHRlcm0gaXMgbGVzc1xuICAgKiB0aGFuIHRocmVlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIHRoZW4gdGhlIHRlcm0gaXMgdHJ1bmNhdGVkIHRvIGFuIGVtcHR5XG4gICAqIHN0cmluZy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBzZWFyY2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgc2VhcmNoVGVybSA9ICcnO1xuXG4gIHNlYXJjaFN1Ym1pdChldmVudDogYW55KSB7XG4gICAgdGhpcy5zdWJtaXQuZW1pdChldmVudCk7XG4gIH1cblxuICBpbnB1dENoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLnNlYXJjaENoYW5nZS5lbWl0KCcnKTtcbiAgfVxuXG4gIGlzVGVybVRvb1Nob3J0KCkge1xuICAgIHJldHVybiAhISh0aGlzLnNlYXJjaFRlcm0gJiYgdGhpcy5zZWFyY2hUZXJtLmxlbmd0aCA8IDIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jb250YWluZXJcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYXBwLWlucHV0LWZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBtYXRQcmVmaXhcbiAgICAgIGNsYXNzPVwiYXBwLXNlYXJjaC1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNlYXJjaFN1Ym1pdChzZWFyY2hUZXJtKVwiXG4gICAgICBbdGl0bGVdPVwiJ1NFQVJDSC5CVVRUT04uVE9PTFRJUCcgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guQlVUVE9OLkFSSUEtTEFCRUwnIHwgdHJhbnNsYXRlXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILklOUFVULkFSSUEtTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0eXBlXT1cImlucHV0VHlwZVwiXG4gICAgICBpZD1cImFwcC1jb250cm9sLWlucHV0XCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJpbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFQVJDSC5JTlBVVC5QTEFDRUhPTERFUicgfCB0cmFuc2xhdGVcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAvPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsZWFyKClcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGVybS5sZW5ndGhcIiBjbGFzcz1cImFwcC1zdWZmaXgtaWNvblwiPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
@@ -35,7 +35,7 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
35
35
  import { DocumentListDirective } from '../../../directives/document-list.directive';
36
36
  import { DocumentListComponent } from '@alfresco/adf-content-services';
37
37
  import { extractSearchedWordFromEncodedQuery } from '../../../utils/aca-search-utils';
38
- import { takeUntil } from 'rxjs/operators';
38
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
39
39
  import * as i0 from "@angular/core";
40
40
  import * as i1 from "./search-libraries-query-builder.service";
41
41
  import * as i2 from "@angular/router";
@@ -85,7 +85,7 @@ class SearchLibrariesResultsComponent extends PageComponent {
85
85
  catch (e) { }
86
86
  }));
87
87
  if (this.route) {
88
- this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {
88
+ this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
89
89
  const encodedQuery = params[this.queryParamName] || null;
90
90
  this.searchedWord = extractSearchedWordFromEncodedQuery(encodedQuery);
91
91
  if (this.searchedWord?.length > 1) {
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
152
152
  CustomEmptyContentTemplateDirective
153
153
  ], selector: 'aca-search-results', encapsulation: ViewEncapsulation.None, template: "<aca-page-layout>\n <div class=\"aca-page-layout-header\">\n <aca-search-input />\n <div class=\"aca-search-toolbar-spacer\"></div>\n <aca-toolbar [items]=\"actions\" />\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"aca-main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\" />\n <div class=\"adf-search-results__content-header aca-content-lib\" *ngIf=\"data?.list.entries.length\">\n <div class=\"aca-content__side--left\">\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults !== 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_RESULTS' | translate: { number: totalResults } }}\n </div>\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults === 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_ONE_RESULT' | translate: { number: totalResults } }}\n </div>\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaContextActions\n acaDocumentList\n [showHeader]=\"showHeader\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"true\"\n [sorting]=\"['name', 'asc']\"\n [node]=\"data\"\n [displayCheckboxesOnHover]=\"true\"\n [imageResolver]=\"imageResolver\"\n [isResizingEnabled]=\"true\"\n [blurOnResize]=\"false\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n />\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\" />\n </div>\n </div>\n </div>\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\" />\n </div>\n </div>\n</aca-page-layout>\n", styles: ["aca-search-results .aca-search-toolbar-spacer{width:100%}aca-search-results .adf-search-results{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden}aca-search-results .adf-search-results__content{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0;border-left:1px solid var(--theme-border-color)}aca-search-results .adf-search-results__content-header{display:flex;padding:0 25px;flex-direction:row;align-items:center;border-bottom:1px solid var(--theme-border-color);border-top:1px solid var(--theme-border-color)}aca-search-results .adf-search-results--info-text{flex:1;font-size:16px;color:#0000008a}aca-search-results .adf-search-results .aca-content-lib{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden;flex:unset;height:unset;padding-top:8px;padding-bottom:8px;flex-wrap:wrap;background-color:var(--theme-card-background-color)}aca-search-results .adf-search-results .aca-content-lib__side--left{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0;height:unset}\n"] }]
154
154
  }], ctorParameters: function () { return [{ type: i1.SearchLibrariesQueryBuilderService }, { type: i2.ActivatedRoute }, { type: i3.AppHookService }, { type: i3.AppService }]; } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy9zZWFyY2gtbGlicmFyaWVzLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RixPQUFPLEVBQ0wsY0FBYyxFQUNkLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBeUIsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3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QUNyQix1QkFBdUIseURBQ3ZCLG1CQUFtQiw0VEFDbkIsbUNBQW1DOztTQU8xQiwrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkF6QjNDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLG1DQUFtQztxQkFDcEMsWUFDUyxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBOYXZpZ2F0ZUxpYnJhcnlBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBOb2RlUGFnaW5nLCBQYWdpbmF0aW9uLCBTaXRlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZWFyY2gtbGlicmFyaWVzLXF1ZXJ5LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQge1xuICBBcHBIb29rU2VydmljZSxcbiAgQXBwU2VydmljZSxcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0UHJlc2V0UmVmLCBEeW5hbWljQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsIERhdGFDb2x1bW5Db21wb25lbnQsIERhdGFDb2x1bW5MaXN0Q29tcG9uZW50LCBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IERvY3VtZW50TGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IGV4dHJhY3RTZWFyY2hlZFdvcmRGcm9tRW5jb2RlZFF1ZXJ5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWNhLXNlYXJjaC11dGlscyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBTZWFyY2hJbnB1dENvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gICAgRG9jdW1lbnRMaXN0RGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIER5bmFtaWNDb2x1bW5Db21wb25lbnQsXG4gICAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICAgIERhdGFDb2x1bW5MaXN0Q29tcG9uZW50LFxuICAgIERhdGFDb2x1bW5Db21wb25lbnQsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoTGlicmFyaWVzUmVzdWx0c0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzZWFyY2hlZFdvcmQ6IHN0cmluZztcbiAgcXVlcnlQYXJhbU5hbWUgPSAncSc7XG4gIGRhdGE6IE5vZGVQYWdpbmc7XG4gIHRvdGFsUmVzdWx0cyA9IDA7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBjb2x1bW5zOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlicmFyaWVzUXVlcnlCdWlsZGVyOiBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYXBwSG9va1NlcnZpY2U6IEFwcEhvb2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGlicmFyaWVzUXVlcnlCdWlsZGVyLnBhZ2luZyA9IHtcbiAgICAgIHNraXBDb3VudDogMCxcbiAgICAgIG1heEl0ZW1zOiAyNVxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFwcFNlcnZpY2Uuc2V0QXBwTmF2YmFyTW9kZSgnY29sbGFwc2VkJyk7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZXh0ZW5zaW9ucy5kb2N1bWVudExpc3RQcmVzZXRzLnNlYXJjaExpYnJhcmllcyB8fCBbXTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5hcHBIb29rU2VydmljZS5saWJyYXJ5Sm9pbmVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGUoKSksXG4gICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLmxpYnJhcnlEZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGUoKSksXG4gICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLmxpYnJhcnlMZWZ0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGUoKSksXG5cbiAgICAgIHRoaXMubGlicmFyaWVzUXVlcnlCdWlsZGVyLnVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMubGlicmFyaWVzUXVlcnlCdWlsZGVyLmV4ZWN1dGUoKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5leGVjdXRlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaFJlc3VsdExvYWRlZChkYXRhKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5oYWRFcnJvci5zdWJzY3JpYmUoKGVycikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGVycm9yOiB7IHN0YXR1c0NvZGUgfVxuICAgICAgICAgIH0gPSBKU09OLnBhcnNlKGVyci5tZXNzYWdlKTtcbiAgICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gNDAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLmxpYnJhcnk0MDBFcnJvci5uZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMucm91dGUpIHtcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBlbmNvZGVkUXVlcnkgPSBwYXJhbXNbdGhpcy5xdWVyeVBhcmFtTmFtZV0gfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeShlbmNvZGVkUXVlcnkpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hlZFdvcmQ/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5wYWdpbmcuc2tpcENvdW50ID0gMDtcbiAgICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSB0aGlzLnNlYXJjaGVkV29yZDtcbiAgICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSBudWxsO1xuICAgICAgICAgIHRoaXMubGlicmFyaWVzUXVlcnlCdWlsZGVyLmV4ZWN1dGVkLm5leHQoe1xuICAgICAgICAgICAgbGlzdDogeyBwYWdpbmF0aW9uOiB7IHRvdGFsSXRlbXM6IDAgfSwgZW50cmllczogW10gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaFJlc3VsdExvYWRlZChub2RlUGFnaW5nOiBOb2RlUGFnaW5nKSB7XG4gICAgdGhpcy5kYXRhID0gbm9kZVBhZ2luZztcbiAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHRoaXMuZ2V0TnVtYmVyT2ZSZXN1bHRzKCk7XG4gIH1cblxuICBnZXROdW1iZXJPZlJlc3VsdHMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YT8ubGlzdD8ucGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5saXN0LnBhZ2luYXRpb24udG90YWxJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBvblBhZ2luYXRpb25DaGFuZ2VkKHBhZ2luYXRpb246IFBhZ2luYXRpb24pIHtcbiAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5wYWdpbmcgPSB7XG4gICAgICBtYXhJdGVtczogcGFnaW5hdGlvbi5tYXhJdGVtcyxcbiAgICAgIHNraXBDb3VudDogcGFnaW5hdGlvbi5za2lwQ291bnRcbiAgICB9O1xuICAgIHRoaXMubGlicmFyaWVzUXVlcnlCdWlsZGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgbmF2aWdhdGVUbyhub2RlOiBTaXRlRW50cnkpIHtcbiAgICBpZiAobm9kZT8uZW50cnk/Lmd1aWQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5hdmlnYXRlTGlicmFyeUFjdGlvbihub2RlLmVudHJ5Lmd1aWQpKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvKChldmVudCBhcyBDdXN0b21FdmVudCkuZGV0YWlsPy5ub2RlKTtcbiAgfVxufVxuIiwiPGFjYS1wYWdlLWxheW91dD5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1oZWFkZXJcIj5cbiAgICA8YWNhLXNlYXJjaC1pbnB1dCAvPlxuICAgIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLXRvb2xiYXItc3BhY2VyXCI+PC9kaXY+XG4gICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJhY3Rpb25zXCIgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1tYWluLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0c19fY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnQtaGVhZGVyIGFjYS1jb250ZW50LWxpYlwiICpuZ0lmPVwiZGF0YT8ubGlzdC5lbnRyaWVzLmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19zaWRlLS1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtLWluZm8tdGV4dFwiICpuZ0lmPVwidG90YWxSZXN1bHRzICE9PSAxXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNIX0xJQlJBUklFUy5GT1VORF9SRVNVTFRTJyB8IHRyYW5zbGF0ZTogeyBudW1iZXI6IHRvdGFsUmVzdWx0cyB9IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS1pbmZvLXRleHRcIiAqbmdJZj1cInRvdGFsUmVzdWx0cyA9PT0gMVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSF9MSUJSQVJJRVMuRk9VTkRfT05FX1JFU1VMVCcgfCB0cmFuc2xhdGU6IHsgbnVtYmVyOiB0b3RhbFJlc3VsdHMgfSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICAgICAjZG9jdW1lbnRMaXN0XG4gICAgICAgICAgICBhY2FDb250ZXh0QWN0aW9uc1xuICAgICAgICAgICAgYWNhRG9jdW1lbnRMaXN0XG4gICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJzaG93SGVhZGVyXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidtdWx0aXBsZSdcIlxuICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwiWyduYW1lJywgJ2FzYyddXCJcbiAgICAgICAgICAgIFtub2RlXT1cImRhdGFcIlxuICAgICAgICAgICAgW2Rpc3BsYXlDaGVja2JveGVzT25Ib3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpbWFnZVJlc29sdmVyXT1cImltYWdlUmVzb2x2ZXJcIlxuICAgICAgICAgICAgW2lzUmVzaXppbmdFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW2JsdXJPblJlc2l6ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAobm9kZS1kYmxjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAobmFtZS1jbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRhdGEtY29sdW1ucz5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlDb2x1bW5JZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cImNvbHVtbi5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbnRleHRdPVwiY29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cImNvbHVtbi5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgICAgICAgICAgPGFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc2VhcmNoX19ibG9ja1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILk5PX1JFU1VMVFMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgPC9hZGYtZG9jdW1lbnQtbGlzdD5cblxuICAgICAgICAgIDxhZGYtcGFnaW5hdGlvbiAqbmdJZj1cInRvdGFsUmVzdWx0cyA+IDBcIiBhY2FQYWdpbmF0aW9uIFt0YXJnZXRdPVwiZG9jdW1lbnRMaXN0XCIgKGNoYW5nZSk9XCJvblBhZ2luYXRpb25DaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhY2Etc2lkZWJhclwiICpuZ0lmPVwiaW5mb0RyYXdlck9wZW5lZCQgfCBhc3luY1wiPlxuICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24ubGFzdFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy9zZWFyY2gtbGlicmFyaWVzLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RixPQUFPLEVBQ0wsY0FBYyxFQUNkLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBeUIsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3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LGk4QkFDckIsdUJBQXVCLHlEQUN2QixtQkFBbUIsNFRBQ25CLG1DQUFtQzs7U0FPMUIsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBekIzQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixtQ0FBbUM7cUJBQ3BDLFlBQ1Msb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgTmF2aWdhdGVMaWJyYXJ5QWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgTm9kZVBhZ2luZywgUGFnaW5hdGlvbiwgU2l0ZUVudHJ5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2VhcmNoTGlicmFyaWVzUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vc2VhcmNoLWxpYnJhcmllcy1xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXBwSG9va1NlcnZpY2UsXG4gIEFwcFNlcnZpY2UsXG4gIENvbnRleHRBY3Rpb25zRGlyZWN0aXZlLFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBQYWdlQ29tcG9uZW50LFxuICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICBUb29sYmFyQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IERvY3VtZW50TGlzdFByZXNldFJlZiwgRHluYW1pY0NvbHVtbkNvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCBEYXRhQ29sdW1uQ29tcG9uZW50LCBEYXRhQ29sdW1uTGlzdENvbXBvbmVudCwgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBEb2N1bWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RvY3VtZW50LWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IERvY3VtZW50TGlzdENvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjYS1zZWFyY2gtdXRpbHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICAgIENvbnRleHRBY3Rpb25zRGlyZWN0aXZlLFxuICAgIERvY3VtZW50TGlzdERpcmVjdGl2ZSxcbiAgICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICAgIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBEeW5hbWljQ29sdW1uQ29tcG9uZW50LFxuICAgIERvY3VtZW50TGlzdENvbXBvbmVudCxcbiAgICBEYXRhQ29sdW1uTGlzdENvbXBvbmVudCxcbiAgICBEYXRhQ29sdW1uQ29tcG9uZW50LFxuICAgIEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLXNlYXJjaC1yZXN1bHRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1saWJyYXJpZXMtcmVzdWx0cy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaExpYnJhcmllc1Jlc3VsdHNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2VhcmNoZWRXb3JkOiBzdHJpbmc7XG4gIHF1ZXJ5UGFyYW1OYW1lID0gJ3EnO1xuICBkYXRhOiBOb2RlUGFnaW5nO1xuICB0b3RhbFJlc3VsdHMgPSAwO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgY29sdW1uczogRG9jdW1lbnRMaXN0UHJlc2V0UmVmW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxpYnJhcmllc1F1ZXJ5QnVpbGRlcjogU2VhcmNoTGlicmFyaWVzUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxpYnJhcmllc1F1ZXJ5QnVpbGRlci5wYWdpbmcgPSB7XG4gICAgICBza2lwQ291bnQ6IDAsXG4gICAgICBtYXhJdGVtczogMjVcbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcHBTZXJ2aWNlLnNldEFwcE5hdmJhck1vZGUoJ2NvbGxhcHNlZCcpO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmV4dGVuc2lvbnMuZG9jdW1lbnRMaXN0UHJlc2V0cy5zZWFyY2hMaWJyYXJpZXMgfHwgW107XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYXBwSG9va1NlcnZpY2UubGlicmFyeUpvaW5lZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXBkYXRlKCkpLFxuICAgICAgdGhpcy5hcHBIb29rU2VydmljZS5saWJyYXJ5RGVsZXRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXBkYXRlKCkpLFxuICAgICAgdGhpcy5hcHBIb29rU2VydmljZS5saWJyYXJ5TGVmdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXBkYXRlKCkpLFxuXG4gICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5leGVjdXRlKCk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIuZXhlY3V0ZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXN1bHRMb2FkZWQoZGF0YSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIuaGFkRXJyb3Iuc3Vic2NyaWJlKChlcnIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBlcnJvcjogeyBzdGF0dXNDb2RlIH1cbiAgICAgICAgICB9ID0gSlNPTi5wYXJzZShlcnIubWVzc2FnZSk7XG4gICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy5hcHBIb29rU2VydmljZS5saWJyYXJ5NDAwRXJyb3IubmV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnJvdXRlKSB7XG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgZW5jb2RlZFF1ZXJ5ID0gcGFyYW1zW3RoaXMucXVlcnlQYXJhbU5hbWVdIHx8IG51bGw7XG4gICAgICAgIHRoaXMuc2VhcmNoZWRXb3JkID0gZXh0cmFjdFNlYXJjaGVkV29yZEZyb21FbmNvZGVkUXVlcnkoZW5jb2RlZFF1ZXJ5KTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRXb3JkPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIucGFnaW5nLnNraXBDb3VudCA9IDA7XG4gICAgICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXNlclF1ZXJ5ID0gdGhpcy5zZWFyY2hlZFdvcmQ7XG4gICAgICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIudXNlclF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci5leGVjdXRlZC5uZXh0KHtcbiAgICAgICAgICAgIGxpc3Q6IHsgcGFnaW5hdGlvbjogeyB0b3RhbEl0ZW1zOiAwIH0sIGVudHJpZXM6IFtdIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hSZXN1bHRMb2FkZWQobm9kZVBhZ2luZzogTm9kZVBhZ2luZykge1xuICAgIHRoaXMuZGF0YSA9IG5vZGVQYWdpbmc7XG4gICAgdGhpcy50b3RhbFJlc3VsdHMgPSB0aGlzLmdldE51bWJlck9mUmVzdWx0cygpO1xuICB9XG5cbiAgZ2V0TnVtYmVyT2ZSZXN1bHRzKCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lmxpc3Q/LnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEubGlzdC5wYWdpbmF0aW9uLnRvdGFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uQ2hhbmdlZChwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgdGhpcy5saWJyYXJpZXNRdWVyeUJ1aWxkZXIucGFnaW5nID0ge1xuICAgICAgbWF4SXRlbXM6IHBhZ2luYXRpb24ubWF4SXRlbXMsXG4gICAgICBza2lwQ291bnQ6IHBhZ2luYXRpb24uc2tpcENvdW50XG4gICAgfTtcbiAgICB0aGlzLmxpYnJhcmllc1F1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG8obm9kZTogU2l0ZUVudHJ5KSB7XG4gICAgaWYgKG5vZGU/LmVudHJ5Py5ndWlkKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZUxpYnJhcnlBY3Rpb24obm9kZS5lbnRyeS5ndWlkKSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMubmF2aWdhdGVUbygoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbD8ubm9kZSk7XG4gIH1cbn1cbiIsIjxhY2EtcGFnZS1sYXlvdXQ+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFjYS1zZWFyY2gtaW5wdXQgLz5cbiAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiIC8+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFpbi1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzX19jb250ZW50LWhlYWRlciBhY2EtY29udGVudC1saWJcIiAqbmdJZj1cImRhdGE/Lmxpc3QuZW50cmllcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtY29udGVudF9fc2lkZS0tbGVmdFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS1pbmZvLXRleHRcIiAqbmdJZj1cInRvdGFsUmVzdWx0cyAhPT0gMVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSF9MSUJSQVJJRVMuRk9VTkRfUkVTVUxUUycgfCB0cmFuc2xhdGU6IHsgbnVtYmVyOiB0b3RhbFJlc3VsdHMgfSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0cy0taW5mby10ZXh0XCIgKm5nSWY9XCJ0b3RhbFJlc3VsdHMgPT09IDFcIj5cbiAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0hfTElCUkFSSUVTLkZPVU5EX09ORV9SRVNVTFQnIHwgdHJhbnNsYXRlOiB7IG51bWJlcjogdG90YWxSZXN1bHRzIH0gfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxhZGYtZG9jdW1lbnQtbGlzdFxuICAgICAgICAgICAgI2RvY3VtZW50TGlzdFxuICAgICAgICAgICAgYWNhQ29udGV4dEFjdGlvbnNcbiAgICAgICAgICAgIGFjYURvY3VtZW50TGlzdFxuICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwic2hvd0hlYWRlclwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cIlsnbmFtZScsICdhc2MnXVwiXG4gICAgICAgICAgICBbbm9kZV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtkaXNwbGF5Q2hlY2tib3hlc09uSG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgICAgIFtpc1Jlc2l6aW5nRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtibHVyT25SZXNpemVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgKG5vZGUtZGJsY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgKG5hbWUtY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Q29sdW1uSWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbHVtbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbHVtbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kYXRhLWNvbHVtbnM+XG5cbiAgICAgICAgICAgIDxhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNlYXJjaF9fYmxvY2tcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHktc2VhcmNoX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5OT19SRVNVTFRTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgIDwvYWRmLWRvY3VtZW50LWxpc3Q+XG5cbiAgICAgICAgICA8YWRmLXBhZ2luYXRpb24gKm5nSWY9XCJ0b3RhbFJlc3VsdHMgPiAwXCIgYWNhUGFnaW5hdGlvbiBbdGFyZ2V0XT1cImRvY3VtZW50TGlzdFwiIChjaGFuZ2UpPVwib25QYWdpbmF0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNhLXNpZGViYXJcIiAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmxhc3RcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
@@ -21,7 +21,7 @@
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 { ChangeDetectorRef, Component, DestroyRef, inject, ViewEncapsulation } from '@angular/core';
24
+ import { ChangeDetectorRef, Component, inject, ViewEncapsulation } from '@angular/core';
25
25
  import { ActivatedRoute } from '@angular/router';
26
26
  import { AlfrescoViewerComponent, DocumentListComponent, ResetSearchDirective, SavedSearchesService, SearchFilterChipsComponent, SearchFormComponent, SearchQueryBuilderService, TagService } from '@alfresco/adf-content-services';
27
27
  import { infoDrawerPreview, NavigateToFolder, SetInfoDrawerPreviewStateAction, SetInfoDrawerStateAction, SetSearchItemsTotalCountAction, ShowInfoDrawerPreviewAction, SnackbarErrorAction, SnackbarInfoAction } from '@alfresco/aca-shared/store';
@@ -79,7 +79,6 @@ class SearchResultsComponent extends PageComponent {
79
79
  encodedQuery;
80
80
  searchConfig;
81
81
  loadedFilters$ = new Subject();
82
- destroyRef = inject(DestroyRef);
83
82
  constructor(tagsService, queryBuilder, changeDetectorRef, route, translationService, savedSearchesService) {
84
83
  super();
85
84
  this.queryBuilder = queryBuilder;
@@ -276,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
276
275
  SaveSearchDirective
277
276
  ], selector: 'aca-search-results', encapsulation: ViewEncapsulation.None, template: "<aca-page-layout [class.aca-search-results-active-search-ai-input]=\"searchAiInputState.active\">\n <div class=\"aca-page-layout-header\">\n <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <div class=\"aca-header-container\">\n <aca-search-input />\n <aca-bulk-actions-dropdown *ngIf=\"bulkActions\" [items]=\"bulkActions\" />\n <div class=\"aca-search-toolbar-spacer\"></div>\n <aca-toolbar [items]=\"actions\" />\n </div>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"aca-main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\" aria-live=\"polite\" />\n <div class=\"adf-search-results__content-header aca-content\">\n <div class=\"aca-content__filter-set\">\n <p>{{ 'APP.BROWSE.SEARCH.FILTER_SET' | translate }}</p>\n <adf-search-form />\n </div>\n <mat-divider [vertical]=\"true\" class=\"aca-content__divider\" />\n <div class=\"aca-content__advanced-filters\">\n <div class=\"aca-content__advanced-filters--header\">\n <p>{{ 'APP.BROWSE.SEARCH.ADVANCED_FILTERS' | translate }}</p>\n <div class=\"aca-content__advanced-filters--header--action-buttons\">\n <button\n *ngIf=\"initialSavedSearch !== undefined else saveSearchButton\"\n mat-button\n [disabled]=\"!encodedQuery\"\n class=\"aca-content__save-search-action\"\n title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate \"\n [matMenuTriggerFor]=\"saveSearchOptionsMenu\">\n {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\n <mat-icon iconPositionEnd>keyboard_arrow_down</mat-icon>\n </button>\n <mat-menu #saveSearchOptionsMenu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"editSavedSearch(initialSavedSearch)\"\n title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate \">\n {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate }}\n </button>\n <button\n mat-menu-item\n acaSaveSearch\n [acaSaveSearchQuery]=\"encodedQuery\"\n title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate \">\n {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate }}\n </button>\n </mat-menu>\n <ng-template #saveSearchButton>\n <button\n mat-button\n acaSaveSearch\n [acaSaveSearchQuery]=\"encodedQuery\"\n [disabled]=\"!encodedQuery\"\n class=\"aca-content__save-search-action\"\n title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate \">\n {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\n </button>\n </ng-template>\n <button\n mat-button\n adf-reset-search\n class=\"aca-content__reset-action\"\n title=\"{{ 'APP.BROWSE.SEARCH.RESET_ACTION' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.RESET_ACTION' | translate \">\n {{ 'APP.BROWSE.SEARCH.RESET' | translate }}\n </button>\n </div>\n </div>\n <adf-search-filter-chips />\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"true\"\n [sortingMode]=\"'server'\"\n [sorting]=\"sorting\"\n [preselectNodes]=\"selectedNodesState?.nodes\"\n [displayCheckboxesOnHover]=\"true\"\n [imageResolver]=\"imageResolver\"\n [isResizingEnabled]=\"true\"\n [blurOnResize]=\"false\"\n [node]=\"$any(data)\"\n (node-dblclick)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <data-column id=\"app.search.thumbnail\" key=\"$thumbnail\" type=\"image\" [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-custom-thumbnail-column [context]=\"context\" />\n </ng-template>\n\n <adf-data-column-header>\n <ng-template>\n <aca-search-action-menu (sortingSelected)=\"onSearchSortingUpdate($event)\" />\n </ng-template>\n </adf-data-column-header>\n </data-column>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n [isHidden]=\"column.isHidden\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n [isHidden]=\"column.isHidden\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n />\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\" />\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"\n (infoDrawerPreview$ | async) === true ? 'adf-search-results--right_panel_section-extended' : 'adf-search-results--right_panel_section'\n \"\n *ngIf=\"infoDrawerOpened$ | async\"\n >\n <adf-alfresco-viewer\n class=\"adf-search-results--embedded_viewer\"\n [nodeId]=\"selection.last.entry.id\"\n *ngIf=\"infoDrawerPreview$ | async; else infoDrawerPanel\"\n >\n <adf-viewer-toolbar>\n <div class=\"adf-search-results--preview-toolbar\">\n <div>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onDrawerClosed()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <button\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREVIEW' | translate }}\"\n color=\"accent\"\n class=\"adf-search-results--visibility_button\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\" (click)=\"onPreviewClosed()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </div>\n </div>\n </adf-viewer-toolbar>\n </adf-alfresco-viewer>\n <ng-template #infoDrawerPanel>\n <div class=\"aca-sidebar\">\n <aca-info-drawer [node]=\"selection.last\" />\n </div>\n </ng-template>\n </div>\n </div>\n</aca-page-layout>\n", styles: ["aca-search-results .aca-search-results-active-search-ai-input .aca-header-container,aca-search-results .aca-search-results-active-search-ai-input .adf-search-results__content-header.aca-content{display:none}aca-search-results .aca-search-toolbar-spacer{width:100%}aca-search-results .adf-search-results{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden}aca-search-results .adf-search-results__facets{display:flex;flex-direction:row;margin-top:5px;margin-bottom:15px}aca-search-results .adf-search-results__content{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0;border-left:1px solid var(--theme-border-color)}aca-search-results .adf-search-results__content-header{display:flex;padding:0 25px;flex-direction:row;align-items:center;border-top:1px solid var(--theme-border-color);border-bottom:1px solid var(--theme-border-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .mat-mdc-chip-action{padding-left:12px;padding-right:12px}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .mdc-evolution-chip__text-label{color:var(--theme-selected-text-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed{background-color:var(--theme-dropdown-color);color:var(--theme-selected-text-color);height:32px;margin-top:4px;margin-bottom:4px;box-sizing:border-box}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip:hover,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip:focus,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed:hover,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed:focus{background-color:var(--theme-dropdown-background-hover)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip[disabled],aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed[disabled]{background-color:var(--theme-disabled-chip-background-color);color:var(--theme-search-chip-icon-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip .adf-search-filter-chip-icon,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed .adf-search-filter-chip-icon{color:var(--theme-search-chip-icon-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-placeholder{color:var(--theme-selected-text-color)}aca-search-results .adf-search-results--info-text{flex:1;font-size:16px;color:#0000008a}aca-search-results .adf-search-results--embedded_viewer{position:unset;display:flex;width:100%}aca-search-results .adf-search-results--right_panel_section{display:flex;justify-content:flex-start}aca-search-results .adf-search-results--right_panel_section-extended{display:flex;justify-content:flex-start;flex-basis:55%}aca-search-results .adf-search-results--right_panel_section-extended .adf-viewer{position:relative}aca-search-results .adf-search-results--preview-toolbar{display:flex;align-items:flex-end;justify-content:space-between;margin:5px;padding-right:24px}aca-search-results .adf-search-results--visibility_button{margin-right:8px;cursor:default}aca-search-results .adf-search-results .adf-search-filter{min-width:260px;max-width:320px;padding:5px;height:100%;overflow:scroll}aca-search-results .adf-search-results .adf-search-filter--hidden{display:none}aca-search-results .adf-search-results .aca-content{box-sizing:border-box;display:flex;place-content:flex-start space-between;align-items:flex-start;padding:16px 12px;background-color:var(--theme-card-background-color)}aca-search-results .adf-search-results .aca-content__filter-set p{padding:0 16px}aca-search-results .adf-search-results .aca-content__divider{height:100%}aca-search-results .adf-search-results .aca-content__advanced-filters{width:100%;padding:0 12px}aca-search-results .adf-search-results .aca-content__advanced-filters--header{display:flex;justify-content:space-between}aca-search-results .adf-search-results .aca-content__advanced-filters--header--action-buttons{display:flex}aca-search-results .adf-search-results .aca-content__reset-action,aca-search-results .adf-search-results .aca-content__save-search-action{margin-top:5px;margin-right:2px;line-height:33px;font-weight:lighter}aca-search-results .adf-search-results .aca-content__sort-picker{min-width:220px}aca-search-results .adf-search-results .adf-datatable aca-search-action-menu button{width:0}aca-search-results .adf-search-results .adf-datatable .aca-location-link a{font-size:12px;max-width:350px;text-align:left;direction:rtl}\n"] }]
278
277
  }], ctorParameters: function () { return [{ type: i1.TagService }, { type: i1.SearchQueryBuilderService }, { type: i0.ChangeDetectorRef }, { type: i2.ActivatedRoute }, { type: i3.TranslationService }, { type: i1.SavedSearchesService }]; } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBRXBCLDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDWCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FB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d0JBQ25CLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsbUNBQW1DO3dCQUNuQyxzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQixtQkFBbUI7cUJBQ3BCLFlBQ1Msb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlRW50cnksIFBhZ2luYXRpb24sIFJlc3VsdFNldFBhZ2luZyB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBbGZyZXNjb1ZpZXdlckNvbXBvbmVudCxcbiAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICBSZXNldFNlYXJjaERpcmVjdGl2ZSxcbiAgU2F2ZWRTZWFyY2gsXG4gIFNhdmVkU2VhcmNoZXNTZXJ2aWNlLFxuICBTZWFyY2hDb25maWd1cmF0aW9uLFxuICBTZWFyY2hGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgU2VhcmNoRm9ybUNvbXBvbmVudCxcbiAgU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgVGFnU2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgaW5mb0RyYXdlclByZXZpZXcsXG4gIE5hdmlnYXRlVG9Gb2xkZXIsXG4gIFNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGVBY3Rpb24sXG4gIFNldEluZm9EcmF3ZXJTdGF0ZUFjdGlvbixcbiAgU2V0U2VhcmNoSXRlbXNUb3RhbENvdW50QWN0aW9uLFxuICBTaG93SW5mb0RyYXdlclByZXZpZXdBY3Rpb24sXG4gIFNuYWNrYmFyRXJyb3JBY3Rpb24sXG4gIFNuYWNrYmFySW5mb0FjdGlvblxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQge1xuICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gIERhdGVDb2x1bW5IZWFkZXJDb21wb25lbnQsXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFBhZ2luYXRpb25Db21wb25lbnQsXG4gIFRyYW5zbGF0aW9uU2VydmljZSxcbiAgVmlld2VyVG9vbGJhckNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHtcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoU29ydGluZ0RlZmluaXRpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMvbGliL3NlYXJjaC9tb2RlbHMvc2VhcmNoLXNvcnRpbmctZGVmaW5pdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kb2N1bWVudC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kbC1jdXN0b20tY29tcG9uZW50cy90aHVtYm5haWwtY29sdW1uL3RodW1ibmFpbC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtYWN0aW9uLW1lbnUvc2VhcmNoLWFjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvdGFncy1jb2x1bW4vdGFncy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdHNSb3dDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0cy1yb3cvc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYsIER5bmFtaWNDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQnVsa0FjdGlvbnNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1bGstYWN0aW9ucy1kcm9wZG93bi9idWxrLWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFpSW5wdXRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyL3NlYXJjaC1haS1pbnB1dC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIGV4dHJhY3RGaWx0ZXJzRnJvbUVuY29kZWRRdWVyeSxcbiAgZXh0cmFjdFNlYXJjaGVkV29yZEZyb21FbmNvZGVkUXVlcnksXG4gIGV4dHJhY3RVc2VyUXVlcnlGcm9tRW5jb2RlZFF1ZXJ5LFxuICBmb3JtYXRTZWFyY2hUZXJtXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjYS1zZWFyY2gtdXRpbHMnO1xuaW1wb3J0IHsgU2F2ZVNlYXJjaERpcmVjdGl2ZSB9IGZyb20gJy4uL3NlYXJjaC1zYXZlL2RpcmVjdGl2ZS9zYXZlLXNlYXJjaC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBEb2N1bWVudExpc3REaXJlY3RpdmUsXG4gICAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gICAgVGh1bWJuYWlsQ29sdW1uQ29tcG9uZW50LFxuICAgIFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgVGFnc0NvbHVtbkNvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgICBTZWFyY2hSZXN1bHRzUm93Q29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LFxuICAgIER5bmFtaWNDb2x1bW5Db21wb25lbnQsXG4gICAgU2VhcmNoRm9ybUNvbXBvbmVudCxcbiAgICBSZXNldFNlYXJjaERpcmVjdGl2ZSxcbiAgICBTZWFyY2hGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgICBEb2N1bWVudExpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgICBEYXRlQ29sdW1uSGVhZGVyQ29tcG9uZW50LFxuICAgIEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIFZpZXdlclRvb2xiYXJDb21wb25lbnQsXG4gICAgQnVsa0FjdGlvbnNEcm9wZG93bkNvbXBvbmVudCxcbiAgICBTZWFyY2hBaUlucHV0Q29udGFpbmVyQ29tcG9uZW50LFxuICAgIFNhdmVTZWFyY2hEaXJlY3RpdmVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdHNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGluZm9EcmF3ZXJQcmV2aWV3JCA9IHRoaXMuc3RvcmUuc2VsZWN0KGluZm9EcmF3ZXJQcmV2aWV3KTtcblxuICBzZWFyY2hlZFdvcmQ6IHN0cmluZztcbiAgcXVlcnlQYXJhbU5hbWUgPSAncSc7XG4gIGRhdGE6IFJlc3VsdFNldFBhZ2luZztcbiAgc29ydGluZyA9IFsnbmFtZScsICdhc2MnXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHRvdGFsUmVzdWx0czogbnVtYmVyO1xuICBpc1RhZ3NFbmFibGVkID0gZmFsc2U7XG4gIGluaXRpYWxTYXZlZFNlYXJjaDogU2F2ZWRTZWFyY2ggPSB1bmRlZmluZWQ7XG4gIGNvbHVtbnM6IERvY3VtZW50TGlzdFByZXNldFJlZltdID0gW107XG4gIGVuY29kZWRRdWVyeTogc3RyaW5nO1xuICBzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkZWRGaWx0ZXJzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWdzU2VydmljZTogVGFnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5QnVpbGRlcjogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2F2ZWRTZWFyY2hlc1NlcnZpY2U6IFNhdmVkU2VhcmNoZXNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFnc0VuYWJsZWQgPSB0YWdzU2VydmljZS5hcmVUYWdzRW5hYmxlZCgpO1xuXG4gICAgcXVlcnlCdWlsZGVyLnBhZ2luZyA9IHtcbiAgICAgIHNraXBDb3VudDogMCxcbiAgICAgIG1heEl0ZW1zOiAyNVxuICAgIH07XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5jb25maWdVcGRhdGVkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoQ29uZmlnKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29uZmlnID0gc2VhcmNoQ29uZmlnO1xuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJRdWVyeSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVzZXRUb0RlZmF1bHRzKCk7XG4gICAgdGhpcy5zb3J0aW5nID0gdGhpcy5nZXRTb3J0aW5nKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLnVwZGF0ZWQuc3Vic2NyaWJlKChxdWVyeSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIHRoaXMuc29ydGluZyA9IHRoaXMuZ2V0U29ydGluZygpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KSxcblxuICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXhlY3V0ZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLnBhZ2luZy5za2lwQ291bnQgPSAwO1xuXG4gICAgICAgIHRoaXMub25TZWFyY2hSZXN1bHRMb2FkZWQoZGF0YSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmVycm9yLnN1YnNjcmliZSgoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaEVycm9yKGVycik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmV4dGVuc2lvbnMuZG9jdW1lbnRMaXN0UHJlc2V0cy5zZWFyY2hSZXN1bHRzIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMucm91dGUpIHtcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICB0aGlzLnNhdmVkU2VhcmNoZXNTZXJ2aWNlXG4gICAgICAgICAgLmdldFNhdmVkU2VhcmNoZXMoKVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHNhdmVkU2VhcmNoZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkU2VhcmNoRm91bmQgPSBzYXZlZFNlYXJjaGVzLmZpbmQoKHNhdmVkU2VhcmNoKSA9PiBzYXZlZFNlYXJjaC5lbmNvZGVkVXJsID09PSBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW3RoaXMucXVlcnlQYXJhbU5hbWVdKSk7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxTYXZlZFNlYXJjaCA9IHNhdmVkU2VhcmNoRm91bmQgIT09IHVuZGVmaW5lZCA/IHNhdmVkU2VhcmNoRm91bmQgOiB0aGlzLmluaXRpYWxTYXZlZFNlYXJjaDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKHBhcmFtc1t0aGlzLnF1ZXJ5UGFyYW1OYW1lXSkge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRlZEZpbHRlcnMkLm5leHQoKTtcbiAgICAgICAgdGhpcy5lbmNvZGVkUXVlcnkgPSBwYXJhbXNbdGhpcy5xdWVyeVBhcmFtTmFtZV0gfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeSh0aGlzLmVuY29kZWRRdWVyeSk7XG4gICAgICAgIHRoaXMudXBkYXRlVXNlclF1ZXJ5KCk7XG4gICAgICAgIGNvbnN0IGZpbHRlcnNGcm9tRW5jb2RlZFF1ZXJ5ID0gZXh0cmFjdEZpbHRlcnNGcm9tRW5jb2RlZFF1ZXJ5KHRoaXMuZW5jb2RlZFF1ZXJ5KTtcbiAgICAgICAgaWYgKGZpbHRlcnNGcm9tRW5jb2RlZFF1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyc1RvTG9hZCA9IHRoaXMucXVlcnlCdWlsZGVyLmNhdGVnb3JpZXMubGVuZ3RoO1xuICAgICAgICAgIGxldCBsb2FkZWRGaWx0ZXJzID0gdGhpcy5zZWFyY2hlZFdvcmQgPT09ICcnID8gMCA6IDE7XG4gICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZmlsdGVyTG9hZGVkXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLCB0YWtlVW50aWwodGhpcy5sb2FkZWRGaWx0ZXJzJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgbG9hZGVkRmlsdGVycysrO1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyc1RvTG9hZCA9PT0gbG9hZGVkRmlsdGVycykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkRmlsdGVycyQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGUoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5wb3B1bGF0ZUZpbHRlcnMubmV4dChmaWx0ZXJzRnJvbUVuY29kZWRRdWVyeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIucG9wdWxhdGVGaWx0ZXJzLm5leHQoe30pO1xuICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLnVzZXJRdWVyeSA9IGV4dHJhY3RVc2VyUXVlcnlGcm9tRW5jb2RlZFF1ZXJ5KHRoaXMuZW5jb2RlZFF1ZXJ5KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoRXJyb3IoZXJyb3I6IHsgbWVzc2FnZTogYW55IH0pIHtcbiAgICBjb25zdCB7IHN0YXR1c0NvZGUgfSA9IEpTT04ucGFyc2UoZXJyb3IubWVzc2FnZSkuZXJyb3I7XG5cbiAgICBjb25zdCBtZXNzYWdlS2V5ID0gYEFQUC5CUk9XU0UuU0VBUkNILkVSUk9SUy4ke3N0YXR1c0NvZGV9YDtcbiAgICBsZXQgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobWVzc2FnZUtleSk7XG5cbiAgICBpZiAobWVzc2FnZSA9PT0gbWVzc2FnZUtleSkge1xuICAgICAgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoYEFQUC5CUk9XU0UuU0VBUkNILkVSUk9SUy5HRU5FUklDYCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIG9uU2VhcmNoUmVzdWx0TG9hZGVkKG5vZGVQYWdpbmc6IFJlc3VsdFNldFBhZ2luZykge1xuICAgIHRoaXMuZGF0YSA9IG5vZGVQYWdpbmc7XG4gICAgdGhpcy50b3RhbFJlc3VsdHMgPSB0aGlzLmdldE51bWJlck9mUmVzdWx0cygpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlYXJjaEl0ZW1zVG90YWxDb3VudEFjdGlvbih0aGlzLnRvdGFsUmVzdWx0cykpO1xuICB9XG5cbiAgZ2V0TnVtYmVyT2ZSZXN1bHRzKCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lmxpc3Q/LnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEubGlzdC5wYWdpbmF0aW9uLnRvdGFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uQ2hhbmdlZChwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucGFnaW5nID0ge1xuICAgICAgbWF4SXRlbXM6IHBhZ2luYXRpb24ubWF4SXRlbXMsXG4gICAgICBza2lwQ291bnQ6IHBhZ2luYXRpb24uc2tpcENvdW50XG4gICAgfTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydGluZygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcHJpbWFyeSA9IHRoaXMucXVlcnlCdWlsZGVyLmdldFByaW1hcnlTb3J0aW5nKCk7XG5cbiAgICBpZiAocHJpbWFyeSkge1xuICAgICAgcmV0dXJuIFtwcmltYXJ5LmtleSwgcHJpbWFyeS5hc2NlbmRpbmcgPyAnYXNjJyA6ICdkZXNjJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsnbmFtZScsICdhc2MnXTtcbiAgfVxuXG4gIG9uTm9kZURvdWJsZUNsaWNrKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGlmIChub2RlPy5lbnRyeSkge1xuICAgICAgaWYgKG5vZGUuZW50cnkuaXNGb2xkZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVUb0ZvbGRlcihub2RlKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG93UHJldmlldyhub2RlLCB7IGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmwgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25Ob2RlRG91YmxlQ2xpY2soKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw/Lm5vZGUpO1xuICB9XG5cbiAgb25QcmV2aWV3Q2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNob3dJbmZvRHJhd2VyUHJldmlld0FjdGlvbigpKTtcbiAgfVxuXG4gIG9uRHJhd2VyQ2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgfVxuXG4gIG9uU2VhcmNoU29ydGluZ1VwZGF0ZShvcHRpb246IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIuc29ydGluZyA9IFt7IC4uLm9wdGlvbiwgYXNjZW5kaW5nOiBvcHRpb24uYXNjZW5kaW5nIH1dO1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgZWRpdFNhdmVkU2VhcmNoKHNlYXJjaFRvU2F2ZTogU2F2ZWRTZWFyY2gpIHtcbiAgICBzZWFyY2hUb1NhdmUuZW5jb2RlZFVybCA9IHRoaXMuZW5jb2RlZFF1ZXJ5O1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hlc1NlcnZpY2VcbiAgICAgIC5lZGl0U2F2ZWRTZWFyY2goc2VhcmNoVG9TYXZlKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJJbmZvQWN0aW9uKCdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5FRElUX0RJQUxPRy5TVUNDRVNTX01FU1NBR0UnKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guRURJVF9ESUFMT0cuRVJST1JfTUVTU0FHRScpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVVzZXJRdWVyeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkVXNlclF1ZXJ5ID0gZm9ybWF0U2VhcmNoVGVybSh0aGlzLnNlYXJjaGVkV29yZCwgdGhpcy5zZWFyY2hDb25maWdbJ2FwcDpmaWVsZHMnXSk7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIudXNlclF1ZXJ5ID0gdXBkYXRlZFVzZXJRdWVyeTtcbiAgfVxufVxuIiwiPGFjYS1wYWdlLWxheW91dCBbY2xhc3MuYWNhLXNlYXJjaC1yZXN1bHRzLWFjdGl2ZS1zZWFyY2gtYWktaW5wdXRdPVwic2VhcmNoQWlJbnB1dFN0YXRlLmFjdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhY2Etc2VhcmNoLWFpLWlucHV0LWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJzZWFyY2hBaUlucHV0U3RhdGUuYWN0aXZlXCJcbiAgICAgIFthZ2VudElkXT1cInNlYXJjaEFpSW5wdXRTdGF0ZS5zZWxlY3RlZEFnZW50SWRcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgPGFjYS1zZWFyY2gtaW5wdXQgLz5cbiAgICAgIDxhY2EtYnVsay1hY3Rpb25zLWRyb3Bkb3duICpuZ0lmPVwiYnVsa0FjdGlvbnNcIiBbaXRlbXNdPVwiYnVsa0FjdGlvbnNcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtdG9vbGJhci1zcGFjZXJcIj48L2Rpdj5cbiAgICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFpbi1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgYXJpYS1saXZlPVwicG9saXRlXCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzX19jb250ZW50LWhlYWRlciBhY2EtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19maWx0ZXItc2V0XCI+XG4gICAgICAgICAgICAgIDxwPnt7ICdBUFAuQlJPV1NFLlNFQVJDSC5GSUxURVJfU0VUJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGFkZi1zZWFyY2gtZm9ybSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWRpdmlkZXIgW3ZlcnRpY2FsXT1cInRydWVcIiBjbGFzcz1cImFjYS1jb250ZW50X19kaXZpZGVyXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtY29udGVudF9fYWR2YW5jZWQtZmlsdGVyc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLWNvbnRlbnRfX2FkdmFuY2VkLWZpbHRlcnMtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxwPnt7ICdBUFAuQlJPV1NFLlNFQVJDSC5BRFZBTkNFRF9GSUxURVJTJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLWNvbnRlbnRfX2FkdmFuY2VkLWZpbHRlcnMtLWhlYWRlci0tYWN0aW9uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbml0aWFsU2F2ZWRTZWFyY2ggIT09IHVuZGVmaW5lZCBlbHNlIHNhdmVTZWFyY2hCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5jb2RlZFF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2EtY29udGVudF9fc2F2ZS1zZWFyY2gtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guQUNUSU9OX0JVVFRPTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5BQ1RJT05fQlVUVE9OJyB8IHRyYW5zbGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2F2ZVNlYXJjaE9wdGlvbnNNZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5BQ1RJT05fQlVUVE9OJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gaWNvblBvc2l0aW9uRW5kPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI3NhdmVTZWFyY2hPcHRpb25zTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFNhdmVkU2VhcmNoKGluaXRpYWxTYXZlZFNlYXJjaClcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILlNBVkVfQ0hBTkdFUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILlNBVkVfQ0hBTkdFUycgfCB0cmFuc2xhdGUgXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILlNBVkVfQ0hBTkdFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgYWNhU2F2ZVNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgIFthY2FTYXZlU2VhcmNoUXVlcnldPVwiZW5jb2RlZFF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5TQVZFX0FTX05FVycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILlNBVkVfQVNfTkVXJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guU0FWRV9BU19ORVcnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2F2ZVNlYXJjaEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBhY2FTYXZlU2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgW2FjYVNhdmVTZWFyY2hRdWVyeV09XCJlbmNvZGVkUXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5jb2RlZFF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjYS1jb250ZW50X19zYXZlLXNlYXJjaC1hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILkFDVElPTl9CVVRUT04nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5BQ1RJT05fQlVUVE9OJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guQUNUSU9OX0JVVFRPTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFkZi1yZXNldC1zZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2EtY29udGVudF9fcmVzZXQtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQVBQLkJST1dTRS5TRUFSQ0guUkVTRVRfQUNUSU9OJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FQUC5CUk9XU0UuU0VBUkNILlJFU0VUX0FDVElPTicgfCB0cmFuc2xhdGUgXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5SRVNFVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGFkZi1zZWFyY2gtZmlsdGVyLWNoaXBzIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxhZGYtZG9jdW1lbnQtbGlzdFxuICAgICAgICAgICAgI2RvY3VtZW50TGlzdFxuICAgICAgICAgICAgYWNhRG9jdW1lbnRMaXN0XG4gICAgICAgICAgICBhY2FDb250ZXh0QWN0aW9uc1xuICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ211bHRpcGxlJ1wiXG4gICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc29ydGluZ01vZGVdPVwiJ3NlcnZlcidcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwic29ydGluZ1wiXG4gICAgICAgICAgICBbcHJlc2VsZWN0Tm9kZXNdPVwic2VsZWN0ZWROb2Rlc1N0YXRlPy5ub2Rlc1wiXG4gICAgICAgICAgICBbZGlzcGxheUNoZWNrYm94ZXNPbkhvdmVyXT1cInRydWVcIlxuICAgICAgICAgICAgW2ltYWdlUmVzb2x2ZXJdPVwiaW1hZ2VSZXNvbHZlclwiXG4gICAgICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYmx1ck9uUmVzaXplXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtub2RlXT1cIiRhbnkoZGF0YSlcIlxuICAgICAgICAgICAgKG5vZGUtZGJsY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBpZD1cImFwcC5zZWFyY2gudGh1bWJuYWlsXCIga2V5PVwiJHRodW1ibmFpbFwiIHR5cGU9XCJpbWFnZVwiIFtzci10aXRsZV09XCInQURGLURPQ1VNRU5ULUxJU1QuTEFZT1VULlRIVU1CTkFJTCdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICA8YWNhLWN1c3RvbS10aHVtYm5haWwtY29sdW1uIFtjb250ZXh0XT1cImNvbnRleHRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8YWRmLWRhdGEtY29sdW1uLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGFjYS1zZWFyY2gtYWN0aW9uLW1lbnUgKHNvcnRpbmdTZWxlY3RlZCk9XCJvblNlYXJjaFNvcnRpbmdVcGRhdGUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYWRmLWRhdGEtY29sdW1uLWhlYWRlcj5cbiAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtbklkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIaWRkZW5dPVwiY29sdW1uLmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbHVtbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NvcnRpbmdLZXldPVwiY29sdW1uLnNvcnRpbmdLZXkgfHwgY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0hpZGRlbl09XCJjb2x1bW4uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cImNvbHVtbi5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgICAgICAgICAgPGFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc2VhcmNoX19ibG9ja1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILk5PX1JFU1VMVFMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgPC9hZGYtZG9jdW1lbnQtbGlzdD5cblxuICAgICAgICAgIDxhZGYtcGFnaW5hdGlvbiAqbmdJZj1cInRvdGFsUmVzdWx0cyA+IDBcIiBhY2FQYWdpbmF0aW9uIFt0YXJnZXRdPVwiZG9jdW1lbnRMaXN0XCIgKGNoYW5nZSk9XCJvblBhZ2luYXRpb25DaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAoaW5mb0RyYXdlclByZXZpZXckIHwgYXN5bmMpID09PSB0cnVlID8gJ2FkZi1zZWFyY2gtcmVzdWx0cy0tcmlnaHRfcGFuZWxfc2VjdGlvbi1leHRlbmRlZCcgOiAnYWRmLXNlYXJjaC1yZXN1bHRzLS1yaWdodF9wYW5lbF9zZWN0aW9uJ1xuICAgICAgXCJcbiAgICAgICpuZ0lmPVwiaW5mb0RyYXdlck9wZW5lZCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICAgICAgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtLWVtYmVkZGVkX3ZpZXdlclwiXG4gICAgICAgIFtub2RlSWRdPVwic2VsZWN0aW9uLmxhc3QuZW50cnkuaWRcIlxuICAgICAgICAqbmdJZj1cImluZm9EcmF3ZXJQcmV2aWV3JCB8IGFzeW5jOyBlbHNlIGluZm9EcmF3ZXJQYW5lbFwiXG4gICAgICA+XG4gICAgICAgIDxhZGYtdmlld2VyLXRvb2xiYXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0cy0tcHJldmlldy10b29sYmFyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cIm9uRHJhd2VyQ2xvc2VkKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWSUVXJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS12aXNpYmlsaXR5X2J1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25QcmV2aWV3Q2xvc2VkKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hZGYtdmlld2VyLXRvb2xiYXI+XG4gICAgICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZm9EcmF3ZXJQYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCI+XG4gICAgICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24ubGFzdFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FjYS1wYWdlLWxheW91dD5cbiJdfQ==
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUVwQixvQkFBb0IsRUFFcEIsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsVUFBVSxFQUNYLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN2QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9B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QUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsbUNBQW1DO3dCQUNuQyxzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQixtQkFBbUI7cUJBQ3BCLFlBQ1Msb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlRW50cnksIFBhZ2luYXRpb24sIFJlc3VsdFNldFBhZ2luZyB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBbGZyZXNjb1ZpZXdlckNvbXBvbmVudCxcbiAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICBSZXNldFNlYXJjaERpcmVjdGl2ZSxcbiAgU2F2ZWRTZWFyY2gsXG4gIFNhdmVkU2VhcmNoZXNTZXJ2aWNlLFxuICBTZWFyY2hDb25maWd1cmF0aW9uLFxuICBTZWFyY2hGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgU2VhcmNoRm9ybUNvbXBvbmVudCxcbiAgU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgVGFnU2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgaW5mb0RyYXdlclByZXZpZXcsXG4gIE5hdmlnYXRlVG9Gb2xkZXIsXG4gIFNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGVBY3Rpb24sXG4gIFNldEluZm9EcmF3ZXJTdGF0ZUFjdGlvbixcbiAgU2V0U2VhcmNoSXRlbXNUb3RhbENvdW50QWN0aW9uLFxuICBTaG93SW5mb0RyYXdlclByZXZpZXdBY3Rpb24sXG4gIFNuYWNrYmFyRXJyb3JBY3Rpb24sXG4gIFNuYWNrYmFySW5mb0FjdGlvblxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQge1xuICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gIERhdGVDb2x1bW5IZWFkZXJDb21wb25lbnQsXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFBhZ2luYXRpb25Db21wb25lbnQsXG4gIFRyYW5zbGF0aW9uU2VydmljZSxcbiAgVmlld2VyVG9vbGJhckNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHtcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoU29ydGluZ0RlZmluaXRpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMvbGliL3NlYXJjaC9tb2RlbHMvc2VhcmNoLXNvcnRpbmctZGVmaW5pdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kb2N1bWVudC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kbC1jdXN0b20tY29tcG9uZW50cy90aHVtYm5haWwtY29sdW1uL3RodW1ibmFpbC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtYWN0aW9uLW1lbnUvc2VhcmNoLWFjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvdGFncy1jb2x1bW4vdGFncy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdHNSb3dDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0cy1yb3cvc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYsIER5bmFtaWNDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQnVsa0FjdGlvbnNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1bGstYWN0aW9ucy1kcm9wZG93bi9idWxrLWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFpSW5wdXRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyL3NlYXJjaC1haS1pbnB1dC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIGV4dHJhY3RGaWx0ZXJzRnJvbUVuY29kZWRRdWVyeSxcbiAgZXh0cmFjdFNlYXJjaGVkV29yZEZyb21FbmNvZGVkUXVlcnksXG4gIGV4dHJhY3RVc2VyUXVlcnlGcm9tRW5jb2RlZFF1ZXJ5LFxuICBmb3JtYXRTZWFyY2hUZXJtXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjYS1zZWFyY2gtdXRpbHMnO1xuaW1wb3J0IHsgU2F2ZVNlYXJjaERpcmVjdGl2ZSB9IGZyb20gJy4uL3NlYXJjaC1zYXZlL2RpcmVjdGl2ZS9zYXZlLXNlYXJjaC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBEb2N1bWVudExpc3REaXJlY3RpdmUsXG4gICAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gICAgVGh1bWJuYWlsQ29sdW1uQ29tcG9uZW50LFxuICAgIFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgVGFnc0NvbHVtbkNvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgICBTZWFyY2hSZXN1bHRzUm93Q29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LFxuICAgIER5bmFtaWNDb2x1bW5Db21wb25lbnQsXG4gICAgU2VhcmNoRm9ybUNvbXBvbmVudCxcbiAgICBSZXNldFNlYXJjaERpcmVjdGl2ZSxcbiAgICBTZWFyY2hGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgICBEb2N1bWVudExpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgICBEYXRlQ29sdW1uSGVhZGVyQ29tcG9uZW50LFxuICAgIEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIFZpZXdlclRvb2xiYXJDb21wb25lbnQsXG4gICAgQnVsa0FjdGlvbnNEcm9wZG93bkNvbXBvbmVudCxcbiAgICBTZWFyY2hBaUlucHV0Q29udGFpbmVyQ29tcG9uZW50LFxuICAgIFNhdmVTZWFyY2hEaXJlY3RpdmVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdHNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGluZm9EcmF3ZXJQcmV2aWV3JCA9IHRoaXMuc3RvcmUuc2VsZWN0KGluZm9EcmF3ZXJQcmV2aWV3KTtcblxuICBzZWFyY2hlZFdvcmQ6IHN0cmluZztcbiAgcXVlcnlQYXJhbU5hbWUgPSAncSc7XG4gIGRhdGE6IFJlc3VsdFNldFBhZ2luZztcbiAgc29ydGluZyA9IFsnbmFtZScsICdhc2MnXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHRvdGFsUmVzdWx0czogbnVtYmVyO1xuICBpc1RhZ3NFbmFibGVkID0gZmFsc2U7XG4gIGluaXRpYWxTYXZlZFNlYXJjaDogU2F2ZWRTZWFyY2ggPSB1bmRlZmluZWQ7XG4gIGNvbHVtbnM6IERvY3VtZW50TGlzdFByZXNldFJlZltdID0gW107XG4gIGVuY29kZWRRdWVyeTogc3RyaW5nO1xuICBzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkZWRGaWx0ZXJzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHRhZ3NTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVlcnlCdWlsZGVyOiBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzYXZlZFNlYXJjaGVzU2VydmljZTogU2F2ZWRTZWFyY2hlc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaXNUYWdzRW5hYmxlZCA9IHRhZ3NTZXJ2aWNlLmFyZVRhZ3NFbmFibGVkKCk7XG5cbiAgICBxdWVyeUJ1aWxkZXIucGFnaW5nID0ge1xuICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgbWF4SXRlbXM6IDI1XG4gICAgfTtcblxuICAgIHRoaXMucXVlcnlCdWlsZGVyLmNvbmZpZ1VwZGF0ZWRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWFyY2hDb25maWcpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hDb25maWcgPSBzZWFyY2hDb25maWc7XG4gICAgICAgIHRoaXMudXBkYXRlVXNlclF1ZXJ5KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZXNldFRvRGVmYXVsdHMoKTtcbiAgICB0aGlzLnNvcnRpbmcgPSB0aGlzLmdldFNvcnRpbmcoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlZC5zdWJzY3JpYmUoKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgdGhpcy5zb3J0aW5nID0gdGhpcy5nZXRTb3J0aW5nKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5leGVjdXRlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIucGFnaW5nLnNraXBDb3VudCA9IDA7XG5cbiAgICAgICAgdGhpcy5vblNlYXJjaFJlc3VsdExvYWRlZChkYXRhKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uU2VhcmNoRXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZXh0ZW5zaW9ucy5kb2N1bWVudExpc3RQcmVzZXRzLnNlYXJjaFJlc3VsdHMgfHwgW107XG5cbiAgICBpZiAodGhpcy5yb3V0ZSkge1xuICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZWRTZWFyY2hlc1NlcnZpY2VcbiAgICAgICAgICAuZ2V0U2F2ZWRTZWFyY2hlcygpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoc2F2ZWRTZWFyY2hlcykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2F2ZWRTZWFyY2hGb3VuZCA9IHNhdmVkU2VhcmNoZXMuZmluZCgoc2F2ZWRTZWFyY2gpID0+IHNhdmVkU2VhcmNoLmVuY29kZWRVcmwgPT09IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNbdGhpcy5xdWVyeVBhcmFtTmFtZV0pKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNhdmVkU2VhcmNoID0gc2F2ZWRTZWFyY2hGb3VuZCAhPT0gdW5kZWZpbmVkID8gc2F2ZWRTZWFyY2hGb3VuZCA6IHRoaXMuaW5pdGlhbFNhdmVkU2VhcmNoO1xuICAgICAgICAgIH0pO1xuICAgICAgICBpZiAocGFyYW1zW3RoaXMucXVlcnlQYXJhbU5hbWVdKSB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVkRmlsdGVycyQubmV4dCgpO1xuICAgICAgICB0aGlzLmVuY29kZWRRdWVyeSA9IHBhcmFtc1t0aGlzLnF1ZXJ5UGFyYW1OYW1lXSB8fCBudWxsO1xuICAgICAgICB0aGlzLnNlYXJjaGVkV29yZCA9IGV4dHJhY3RTZWFyY2hlZFdvcmRGcm9tRW5jb2RlZFF1ZXJ5KHRoaXMuZW5jb2RlZFF1ZXJ5KTtcbiAgICAgICAgdGhpcy51cGRhdGVVc2VyUXVlcnkoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyc0Zyb21FbmNvZGVkUXVlcnkgPSBleHRyYWN0RmlsdGVyc0Zyb21FbmNvZGVkUXVlcnkodGhpcy5lbmNvZGVkUXVlcnkpO1xuICAgICAgICBpZiAoZmlsdGVyc0Zyb21FbmNvZGVkUXVlcnkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJzVG9Mb2FkID0gdGhpcy5xdWVyeUJ1aWxkZXIuY2F0ZWdvcmllcy5sZW5ndGg7XG4gICAgICAgICAgbGV0IGxvYWRlZEZpbHRlcnMgPSB0aGlzLnNlYXJjaGVkV29yZCA9PT0gJycgPyAwIDogMTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5maWx0ZXJMb2FkZWRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksIHRha2VVbnRpbCh0aGlzLmxvYWRlZEZpbHRlcnMkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBsb2FkZWRGaWx0ZXJzKys7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXJzVG9Mb2FkID09PSBsb2FkZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRGaWx0ZXJzJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXhlY3V0ZShmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLnBvcHVsYXRlRmlsdGVycy5uZXh0KGZpbHRlcnNGcm9tRW5jb2RlZFF1ZXJ5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5wb3B1bGF0ZUZpbHRlcnMubmV4dCh7fSk7XG4gICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXhlY3V0ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXNlclF1ZXJ5ID0gZXh0cmFjdFVzZXJRdWVyeUZyb21FbmNvZGVkUXVlcnkodGhpcy5lbmNvZGVkUXVlcnkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hFcnJvcihlcnJvcjogeyBtZXNzYWdlOiBhbnkgfSkge1xuICAgIGNvbnN0IHsgc3RhdHVzQ29kZSB9ID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvcjtcblxuICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBgQVBQLkJST1dTRS5TRUFSQ0guRVJST1JTLiR7c3RhdHVzQ29kZX1gO1xuICAgIGxldCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChtZXNzYWdlS2V5KTtcblxuICAgIGlmIChtZXNzYWdlID09PSBtZXNzYWdlS2V5KSB7XG4gICAgICBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChgQVBQLkJST1dTRS5TRUFSQ0guRVJST1JTLkdFTkVSSUNgKTtcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgb25TZWFyY2hSZXN1bHRMb2FkZWQobm9kZVBhZ2luZzogUmVzdWx0U2V0UGFnaW5nKSB7XG4gICAgdGhpcy5kYXRhID0gbm9kZVBhZ2luZztcbiAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHRoaXMuZ2V0TnVtYmVyT2ZSZXN1bHRzKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VhcmNoSXRlbXNUb3RhbENvdW50QWN0aW9uKHRoaXMudG90YWxSZXN1bHRzKSk7XG4gIH1cblxuICBnZXROdW1iZXJPZlJlc3VsdHMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YT8ubGlzdD8ucGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5saXN0LnBhZ2luYXRpb24udG90YWxJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBvblBhZ2luYXRpb25DaGFuZ2VkKHBhZ2luYXRpb246IFBhZ2luYXRpb24pIHtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5wYWdpbmcgPSB7XG4gICAgICBtYXhJdGVtczogcGFnaW5hdGlvbi5tYXhJdGVtcyxcbiAgICAgIHNraXBDb3VudDogcGFnaW5hdGlvbi5za2lwQ291bnRcbiAgICB9O1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0aW5nKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwcmltYXJ5ID0gdGhpcy5xdWVyeUJ1aWxkZXIuZ2V0UHJpbWFyeVNvcnRpbmcoKTtcblxuICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICByZXR1cm4gW3ByaW1hcnkua2V5LCBwcmltYXJ5LmFzY2VuZGluZyA/ICdhc2MnIDogJ2Rlc2MnXTtcbiAgICB9XG5cbiAgICByZXR1cm4gWyduYW1lJywgJ2FzYyddO1xuICB9XG5cbiAgb25Ob2RlRG91YmxlQ2xpY2sobm9kZTogTm9kZUVudHJ5KSB7XG4gICAgaWYgKG5vZGU/LmVudHJ5KSB7XG4gICAgICBpZiAobm9kZS5lbnRyeS5pc0ZvbGRlcikge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZVRvRm9sZGVyKG5vZGUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNob3dQcmV2aWV3KG5vZGUsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5vbk5vZGVEb3VibGVDbGljaygoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbD8ubm9kZSk7XG4gIH1cblxuICBvblByZXZpZXdDbG9zZWQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2hvd0luZm9EcmF3ZXJQcmV2aWV3QWN0aW9uKCkpO1xuICB9XG5cbiAgb25EcmF3ZXJDbG9zZWQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbihmYWxzZSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEluZm9EcmF3ZXJTdGF0ZUFjdGlvbihmYWxzZSkpO1xuICB9XG5cbiAgb25TZWFyY2hTb3J0aW5nVXBkYXRlKG9wdGlvbjogU2VhcmNoU29ydGluZ0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5zb3J0aW5nID0gW3sgLi4ub3B0aW9uLCBhc2NlbmRpbmc6IG9wdGlvbi5hc2NlbmRpbmcgfV07XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gIH1cblxuICBlZGl0U2F2ZWRTZWFyY2goc2VhcmNoVG9TYXZlOiBTYXZlZFNlYXJjaCkge1xuICAgIHNlYXJjaFRvU2F2ZS5lbmNvZGVkVXJsID0gdGhpcy5lbmNvZGVkUXVlcnk7XG4gICAgdGhpcy5zYXZlZFNlYXJjaGVzU2VydmljZVxuICAgICAgLmVkaXRTYXZlZFNlYXJjaChzZWFyY2hUb1NhdmUpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTbmFja2JhckluZm9BY3Rpb24oJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILkVESVRfRElBTE9HLlNVQ0NFU1NfTUVTU0FHRScpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTbmFja2JhckVycm9yQWN0aW9uKCdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5FRElUX0RJQUxPRy5FUlJPUl9NRVNTQUdFJykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVXNlclF1ZXJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRVc2VyUXVlcnkgPSBmb3JtYXRTZWFyY2hUZXJtKHRoaXMuc2VhcmNoZWRXb3JkLCB0aGlzLnNlYXJjaENvbmZpZ1snYXBwOmZpZWxkcyddKTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSB1cGRhdGVkVXNlclF1ZXJ5O1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0IFtjbGFzcy5hY2Etc2VhcmNoLXJlc3VsdHMtYWN0aXZlLXNlYXJjaC1haS1pbnB1dF09XCJzZWFyY2hBaUlucHV0U3RhdGUuYWN0aXZlXCI+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFjYS1zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyXG4gICAgICAqbmdJZj1cInNlYXJjaEFpSW5wdXRTdGF0ZS5hY3RpdmVcIlxuICAgICAgW2FnZW50SWRdPVwic2VhcmNoQWlJbnB1dFN0YXRlLnNlbGVjdGVkQWdlbnRJZFwiIC8+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8YWNhLXNlYXJjaC1pbnB1dCAvPlxuICAgICAgPGFjYS1idWxrLWFjdGlvbnMtZHJvcGRvd24gKm5nSWY9XCJidWxrQWN0aW9uc1wiIFtpdGVtc109XCJidWxrQWN0aW9uc1wiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuICAgICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJhY3Rpb25zXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1tYWluLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0c19fY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnQtaGVhZGVyIGFjYS1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLWNvbnRlbnRfX2ZpbHRlci1zZXRcIj5cbiAgICAgICAgICAgICAgPHA+e3sgJ0FQUC5CUk9XU0UuU0VBUkNILkZJTFRFUl9TRVQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8YWRmLXNlYXJjaC1mb3JtIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlciBbdmVydGljYWxdPVwidHJ1ZVwiIGNsYXNzPVwiYWNhLWNvbnRlbnRfX2RpdmlkZXJcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19hZHZhbmNlZC1maWx0ZXJzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtY29udGVudF9fYWR2YW5jZWQtZmlsdGVycy0taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHA+e3sgJ0FQUC5CUk9XU0UuU0VBUkNILkFEVkFOQ0VEX0ZJTFRFUlMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtY29udGVudF9fYWR2YW5jZWQtZmlsdGVycy0taGVhZGVyLS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImluaXRpYWxTYXZlZFNlYXJjaCAhPT0gdW5kZWZpbmVkIGVsc2Ugc2F2ZVNlYXJjaEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmNvZGVkUXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjYS1jb250ZW50X19zYXZlLXNlYXJjaC1hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5BQ1RJT05fQlVUVE9OJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILkFDVElPTl9CVVRUT04nIHwgdHJhbnNsYXRlIFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzYXZlU2VhcmNoT3B0aW9uc01lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILkFDVElPTl9CVVRUT04nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBpY29uUG9zaXRpb25FbmQ+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjc2F2ZVNlYXJjaE9wdGlvbnNNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0U2F2ZWRTZWFyY2goaW5pdGlhbFNhdmVkU2VhcmNoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guU0FWRV9DSEFOR0VTJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guU0FWRV9DSEFOR0VTJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guU0FWRV9DSEFOR0VTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBhY2FTYXZlU2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgW2FjYVNhdmVTZWFyY2hRdWVyeV09XCJlbmNvZGVkUXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILlNBVkVfQVNfTkVXJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guU0FWRV9BU19ORVcnIHwgdHJhbnNsYXRlIFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5TQVZFX0FTX05FVycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzYXZlU2VhcmNoQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGFjYVNhdmVTZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICBbYWNhU2F2ZVNlYXJjaFF1ZXJ5XT1cImVuY29kZWRRdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmNvZGVkUXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNhLWNvbnRlbnRfX3NhdmUtc2VhcmNoLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQVBQLkJST1dTRS5TRUFSQ0guU0FWRV9TRUFSQ0guQUNUSU9OX0JVVFRPTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FQUC5CUk9XU0UuU0VBUkNILlNBVkVfU0VBUkNILkFDVElPTl9CVVRUT04nIHwgdHJhbnNsYXRlIFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5TQVZFX1NFQVJDSC5BQ1RJT05fQlVUVE9OJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgYWRmLXJlc2V0LXNlYXJjaFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjYS1jb250ZW50X19yZXNldC1hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBUFAuQlJPV1NFLlNFQVJDSC5SRVNFVF9BQ1RJT04nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLkJST1dTRS5TRUFSQ0guUkVTRVRfQUNUSU9OJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILlJFU0VUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YWRmLXNlYXJjaC1maWx0ZXItY2hpcHMgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICAgICAjZG9jdW1lbnRMaXN0XG4gICAgICAgICAgICBhY2FEb2N1bWVudExpc3RcbiAgICAgICAgICAgIGFjYUNvbnRleHRBY3Rpb25zXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzb3J0aW5nTW9kZV09XCInc2VydmVyJ1wiXG4gICAgICAgICAgICBbc29ydGluZ109XCJzb3J0aW5nXCJcbiAgICAgICAgICAgIFtwcmVzZWxlY3ROb2Rlc109XCJzZWxlY3RlZE5vZGVzU3RhdGU/Lm5vZGVzXCJcbiAgICAgICAgICAgIFtkaXNwbGF5Q2hlY2tib3hlc09uSG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgICAgIFtpc1Jlc2l6aW5nRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtibHVyT25SZXNpemVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW25vZGVdPVwiJGFueShkYXRhKVwiXG4gICAgICAgICAgICAobm9kZS1kYmxjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRhdGEtY29sdW1ucz5cbiAgICAgICAgICAgICAgPGRhdGEtY29sdW1uIGlkPVwiYXBwLnNlYXJjaC50aHVtYm5haWxcIiBrZXk9XCIkdGh1bWJuYWlsXCIgdHlwZT1cImltYWdlXCIgW3NyLXRpdGxlXT1cIidBREYtRE9DVU1FTlQtTElTVC5MQVlPVVQuVEhVTUJOQUlMJ1wiIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtY29udGV4dD5cbiAgICAgICAgICAgICAgICAgIDxhY2EtY3VzdG9tLXRodW1ibmFpbC1jb2x1bW4gW2NvbnRleHRdPVwiY29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxhZGYtZGF0YS1jb2x1bW4taGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8YWNhLXNlYXJjaC1hY3Rpb24tbWVudSAoc29ydGluZ1NlbGVjdGVkKT1cIm9uU2VhcmNoU29ydGluZ1VwZGF0ZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9hZGYtZGF0YS1jb2x1bW4taGVhZGVyPlxuICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Q29sdW1uSWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbHVtbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NvcnRpbmdLZXldPVwiY29sdW1uLnNvcnRpbmdLZXkgfHwgY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0hpZGRlbl09XCJjb2x1bW4uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cImNvbHVtbi5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbnRleHRdPVwiY29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGluZ0tleV09XCJjb2x1bW4uc29ydGluZ0tleSB8fCBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSGlkZGVuXT1cImNvbHVtbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiY29sdW1uLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiY29sdW1uLnJlc2l6YWJsZVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuXG4gICAgICAgICAgICA8YWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX2Jsb2NrXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LXNlYXJjaF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guTk9fUkVTVUxUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2FkZi1kb2N1bWVudC1saXN0PlxuXG4gICAgICAgICAgPGFkZi1wYWdpbmF0aW9uICpuZ0lmPVwidG90YWxSZXN1bHRzID4gMFwiIGFjYVBhZ2luYXRpb24gW3RhcmdldF09XCJkb2N1bWVudExpc3RcIiAoY2hhbmdlKT1cIm9uUGFnaW5hdGlvbkNoYW5nZWQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIChpbmZvRHJhd2VyUHJldmlldyQgfCBhc3luYykgPT09IHRydWUgPyAnYWRmLXNlYXJjaC1yZXN1bHRzLS1yaWdodF9wYW5lbF9zZWN0aW9uLWV4dGVuZGVkJyA6ICdhZGYtc2VhcmNoLXJlc3VsdHMtLXJpZ2h0X3BhbmVsX3NlY3Rpb24nXG4gICAgICBcIlxuICAgICAgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgICAgICBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0cy0tZW1iZWRkZWRfdmlld2VyXCJcbiAgICAgICAgW25vZGVJZF09XCJzZWxlY3Rpb24ubGFzdC5lbnRyeS5pZFwiXG4gICAgICAgICpuZ0lmPVwiaW5mb0RyYXdlclByZXZpZXckIHwgYXN5bmM7IGVsc2UgaW5mb0RyYXdlclBhbmVsXCJcbiAgICAgID5cbiAgICAgICAgPGFkZi12aWV3ZXItdG9vbGJhcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS1wcmV2aWV3LXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25EcmF3ZXJDbG9zZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSRVZJRVcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtLXZpc2liaWxpdHlfYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJvblByZXZpZXdDbG9zZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FkZi12aWV3ZXItdG9vbGJhcj5cbiAgICAgIDwvYWRmLWFsZnJlc2NvLXZpZXdlcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5mb0RyYXdlclBhbmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLXNpZGViYXJcIj5cbiAgICAgICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5sYXN0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
@@ -21,18 +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, Input, ViewEncapsulation, ChangeDetectionStrategy, inject } from '@angular/core';
24
+ import { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, ViewEncapsulation } from '@angular/core';
25
25
  import { NavigateToFolder, ViewNodeAction } from '@alfresco/aca-shared/store';
26
26
  import { Store } from '@ngrx/store';
27
- import { BehaviorSubject, Subject } from 'rxjs';
27
+ import { BehaviorSubject } from 'rxjs';
28
28
  import { NodesApiService } from '@alfresco/adf-content-services';
29
- import { takeUntil } from 'rxjs/operators';
30
29
  import { Router } from '@angular/router';
31
- import { AutoDownloadService, AppSettingsService } from '@alfresco/aca-shared';
30
+ import { AppSettingsService, AutoDownloadService } from '@alfresco/aca-shared';
32
31
  import { CommonModule } from '@angular/common';
33
32
  import { LocationLinkComponent } from '../../common/location-link/location-link.component';
34
33
  import { MatDialogModule } from '@angular/material/dialog';
35
34
  import { DatatableCellBadgesComponent } from '../../dl-custom-components/datatable-cell-badges/datatable-cell-badges.component';
35
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
36
36
  import * as i0 from "@angular/core";
37
37
  import * as i1 from "@ngrx/store";
38
38
  import * as i2 from "@alfresco/adf-content-services";
@@ -48,7 +48,6 @@ class SearchResultsRowComponent {
48
48
  highlightPrefix = "<span class='aca-highlight'>";
49
49
  highlightPostfix = '</span>';
50
50
  node;
51
- onDestroy$ = new Subject();
52
51
  context;
53
52
  name$ = new BehaviorSubject('');
54
53
  title$ = new BehaviorSubject('');
@@ -59,6 +58,7 @@ class SearchResultsRowComponent {
59
58
  descriptionStripped = '';
60
59
  contentStripped = '';
61
60
  isFile = false;
61
+ destroyRef = inject(DestroyRef);
62
62
  constructor(store, nodesApiService, router, autoDownloadService) {
63
63
  this.store = store;
64
64
  this.nodesApiService = nodesApiService;
@@ -67,7 +67,7 @@ class SearchResultsRowComponent {
67
67
  }
68
68
  ngOnInit() {
69
69
  this.updateValues();
70
- this.nodesApiService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).subscribe((node) => {
70
+ this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {
71
71
  const row = this.context.row;
72
72
  if (row) {
73
73
  const { entry } = row.node;
@@ -117,10 +117,6 @@ class SearchResultsRowComponent {
117
117
  this.titleStripped = this.stripHighlighting(title);
118
118
  }
119
119
  }
120
- ngOnDestroy() {
121
- this.onDestroy$.next(true);
122
- this.onDestroy$.complete();
123
- }
124
120
  showPreview(event) {
125
121
  event.stopPropagation();
126
122
  if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(this.node, this.settings.authDownloadThreshold)) {
@@ -146,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
146
142
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.NodesApiService }, { type: i3.Router }, { type: i4.AutoDownloadService }]; }, propDecorators: { context: [{
147
143
  type: Input
148
144
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtcm93L3NlYXJjaC1yZXN1bHRzLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzLXJvdy9zZWFyY2gtcmVzdWx0cy1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9B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LGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzSCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQzt1R0FoSFUseUJBQXlCOzJGQUF6Qix5QkFBeUIsc0tDaER0QywyekNBeUNBLGlpQ0REWSxZQUFZLHdMQUFFLHFCQUFxQixrR0FBRSxlQUFlLCtCQUFFLDRCQUE0Qjs7U0FRakYseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBVnJDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSw0QkFBNEIsQ0FBQyxZQUNuRix3QkFBd0IsaUJBR25CLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7aUxBWXpDLE9BQU87c0JBRE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVFbnRyeSwgU2VhcmNoRW50cnlIaWdobGlnaHQgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5hdmlnYXRlVG9Gb2xkZXIsIFZpZXdOb2RlQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVzQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0b0Rvd25sb2FkU2VydmljZSwgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvY2F0aW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9sb2NhdGlvbi1saW5rL2xvY2F0aW9uLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEYXRhdGFibGVDZWxsQmFkZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvZGF0YXRhYmxlLWNlbGwtYmFkZ2VzL2RhdGF0YWJsZS1jZWxsLWJhZGdlcy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9jYXRpb25MaW5rQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGUsIERhdGF0YWJsZUNlbGxCYWRnZXNDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtcmVzdWx0cy1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXNlYXJjaC1yZXN1bHRzLXJvdycgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNldHRpbmdzID0gaW5qZWN0KEFwcFNldHRpbmdzU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoaWdobGlnaHRQcmVmaXggPSBcIjxzcGFuIGNsYXNzPSdhY2EtaGlnaGxpZ2h0Jz5cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBoaWdobGlnaHRQb3N0Zml4ID0gJzwvc3Bhbj4nO1xuXG4gIHByaXZhdGUgbm9kZTogTm9kZUVudHJ5O1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IGFueTtcblxuICBuYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGRlc2NyaXB0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGNvbnRlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgbmFtZVN0cmlwcGVkID0gJyc7XG4gIHRpdGxlU3RyaXBwZWQgPSAnJztcbiAgZGVzY3JpcHRpb25TdHJpcHBlZCA9ICcnO1xuICBjb250ZW50U3RyaXBwZWQgPSAnJztcbiAgaXNGaWxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRvRG93bmxvYWRTZXJ2aWNlOiBBdXRvRG93bmxvYWRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xuXG4gICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChub2RlKSA9PiB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLmNvbnRleHQucm93O1xuICAgICAgaWYgKHJvdykge1xuICAgICAgICBjb25zdCB7IGVudHJ5IH0gPSByb3cubm9kZTtcblxuICAgICAgICBpZiAoZW50cnkuaWQgPT09IG5vZGUuaWQpIHtcbiAgICAgICAgICBlbnRyeS5uYW1lID0gbm9kZS5uYW1lO1xuICAgICAgICAgIGVudHJ5LnByb3BlcnRpZXMgPSB7IC4uLm5vZGUucHJvcGVydGllcyB9O1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XG4gICAgdGhpcy5ub2RlID0gdGhpcy5jb250ZXh0LnJvdy5ub2RlO1xuICAgIHRoaXMuaXNGaWxlID0gdGhpcy5ub2RlLmVudHJ5LmlzRmlsZTtcblxuICAgIGNvbnN0IGhpZ2hsaWdodHM6IFNlYXJjaEVudHJ5SGlnaGxpZ2h0W10gPSB0aGlzLm5vZGUuZW50cnlbJ3NlYXJjaCddPy5bJ2hpZ2hsaWdodCddO1xuICAgIGxldCBuYW1lID0gdGhpcy5ub2RlLmVudHJ5Lm5hbWU7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMubm9kZS5lbnRyeS5wcm9wZXJ0aWVzO1xuICAgIGxldCB0aXRsZSA9IHByb3BlcnRpZXM/LlsnY206dGl0bGUnXSB8fCAnJztcbiAgICBsZXQgZGVzY3JpcHRpb24gPSBwcm9wZXJ0aWVzPy5bJ2NtOmRlc2NyaXB0aW9uJ10gfHwgJyc7XG4gICAgbGV0IGNvbnRlbnQgPSAnJztcblxuICAgIGhpZ2hsaWdodHM/LmZvckVhY2goKGhpZ2hsaWdodCkgPT4ge1xuICAgICAgc3dpdGNoIChoaWdobGlnaHQuZmllbGQpIHtcbiAgICAgICAgY2FzZSAnY206bmFtZSc6XG4gICAgICAgICAgbmFtZSA9IGhpZ2hsaWdodC5zbmlwcGV0c1swXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY206dGl0bGUnOlxuICAgICAgICAgIHRpdGxlID0gaGlnaGxpZ2h0LnNuaXBwZXRzWzBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjbTpkZXNjcmlwdGlvbic6XG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBoaWdobGlnaHQuc25pcHBldHNbMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NtOmNvbnRlbnQnOlxuICAgICAgICAgIGNvbnRlbnQgPSBgLi4uJHtoaWdobGlnaHQuc25pcHBldHNbMF19Li4uYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm5hbWUkLm5leHQobmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiQubmV4dChkZXNjcmlwdGlvbik7XG4gICAgdGhpcy5jb250ZW50JC5uZXh0KGNvbnRlbnQpO1xuXG4gICAgdGhpcy5uYW1lU3RyaXBwZWQgPSB0aGlzLnN0cmlwSGlnaGxpZ2h0aW5nKG5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb25TdHJpcHBlZCA9IHRoaXMuc3RyaXBIaWdobGlnaHRpbmcoZGVzY3JpcHRpb24pO1xuICAgIHRoaXMuY29udGVudFN0cmlwcGVkID0gdGhpcy5zdHJpcEhpZ2hsaWdodGluZyhjb250ZW50KTtcblxuICAgIGlmICh0aXRsZSAhPT0gbmFtZSkge1xuICAgICAgdGhpcy50aXRsZSQubmV4dCh0aXRsZSA/IGAgKCAke3RpdGxlfSApYCA6ICcnKTtcbiAgICAgIHRoaXMudGl0bGVTdHJpcHBlZCA9IHRoaXMuc3RyaXBIaWdobGlnaHRpbmcodGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2hvd1ByZXZpZXcoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuYXV0b0Rvd25sb2FkRW5hYmxlZCB8fCAhdGhpcy5hdXRvRG93bmxvYWRTZXJ2aWNlLnRyeURvd25sb2FkKHRoaXMubm9kZSwgdGhpcy5zZXR0aW5ncy5hdXRoRG93bmxvYWRUaHJlc2hvbGQpKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLm5vZGUuZW50cnkuaWQsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KSk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVUb0ZvbGRlcih0aGlzLm5vZGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaXBIaWdobGlnaHRpbmcoaGlnaGxpZ2h0ZWRDb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBoaWdobGlnaHRlZENvbnRlbnRcbiAgICAgID8gaGlnaGxpZ2h0ZWRDb250ZW50LnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmhpZ2hsaWdodFByZWZpeCwgJ2cnKSwgJycpLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmhpZ2hsaWdodFBvc3RmaXgsICdnJyksICcnKVxuICAgICAgOiAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtcmVzdWx0cy10ZXh0XCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtZmlsZS1uYW1lXCI+XG4gICAgPHNwYW5cbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwibGlua1wiXG4gICAgICAqbmdJZj1cImlzRmlsZVwiXG4gICAgICAoY2xpY2spPVwic2hvd1ByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd1ByZXZpZXcoJGV2ZW50KVwiXG4gICAgICBjbGFzcz1cImFjYS1saW5rIGFjYS1jcm9wLXRleHRcIlxuICAgICAgW3RpdGxlXT1cIm5hbWVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cIm5hbWUkIHwgYXN5bmNcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwibGlua1wiXG4gICAgICAqbmdJZj1cIiFpc0ZpbGVcIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKCRldmVudClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm5hdmlnYXRlKCRldmVudClcIlxuICAgICAgY2xhc3M9XCJib2xkIGFjYS1saW5rIGFjYS1jcm9wLXRleHRcIlxuICAgICAgW3RpdGxlXT1cIm5hbWVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cIm5hbWUkIHwgYXN5bmNcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNlYXJjaC1yZXN1bHRzLWVudHJ5LXRpdGxlXCJcbiAgICAgIGNsYXNzPVwiYWNhLWNyb3AtdGV4dFwiXG4gICAgICBbdGl0bGVdPVwidGl0bGVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cInRpdGxlJCB8IGFzeW5jXCJcbiAgICA+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNlYXJjaC1yZXN1bHRzLWVudHJ5LWRlc2NyaXB0aW9uXCJcbiAgICBjbGFzcz1cImFjYS1jcm9wLXRleHRcIlxuICAgIFt0aXRsZV09XCJkZXNjcmlwdGlvblN0cmlwcGVkXCJcbiAgICBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uJCB8IGFzeW5jXCJcbiAgPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWNhLXJlc3VsdC1sb2NhdGlvblwiPlxuICAgIDxhY2EtbG9jYXRpb24tbGluayBbY29udGV4dF09XCJjb250ZXh0XCIgW3Nob3dMb2NhdGlvbl09XCJ0cnVlXCIgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcmVzdWx0LWNvbnRlbnQgYWNhLWNyb3AtdGV4dFwiIFt0aXRsZV09XCJjb250ZW50U3RyaXBwZWRcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQkIHwgYXN5bmNcIj48L2Rpdj5cbjwvZGl2PlxuPGFjYS1kYXRhdGFibGUtY2VsbC1iYWRnZXMgW25vZGVdPVwiY29udGV4dC5yb3cubm9kZVwiIC8+XG4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtcm93L3NlYXJjaC1yZXN1bHRzLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzLXJvdy9zZWFyY2gtcmVzdWx0cy1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBRWhFLE1BVWEseUJBQXlCO0lBd0IxQjtJQUNBO0lBQ0E7SUFDQTtJQTFCRixRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFN0IsZUFBZSxHQUFHLDhCQUE4QixDQUFDO0lBQ2pELGdCQUFnQixHQUFHLFNBQVMsQ0FBQztJQUV0QyxJQUFJLENBQVk7SUFHeEIsT0FBTyxDQUFNO0lBRWIsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6QyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDekIsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUNyQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxZQUNVLEtBQWlCLEVBQ2pCLGVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxtQkFBd0M7UUFIeEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFDL0MsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzdCLElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUUzQixJQUFJLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsRUFBRTtvQkFDeEIsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUN2QixLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBRTFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFckMsTUFBTSxVQUFVLEdBQTJCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEYsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM5QyxJQUFJLEtBQUssR0FBRyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsSUFBSSxXQUFXLEdBQUcsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQyxRQUFRLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLEtBQUssU0FBUztvQkFDWixJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0IsTUFBTTtnQkFDUixLQUFLLFVBQVU7b0JBQ2IsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLE1BQU07Z0JBQ1IsS0FBSyxnQkFBZ0I7b0JBQ25CLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDL0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFZO1FBQ25CLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxrQkFBMEI7UUFDbEQsT0FBTyxrQkFBa0I7WUFDdkIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO3VHQTVHVSx5QkFBeUI7MkZBQXpCLHlCQUF5QixzS0NoRHRDLDJ6Q0F5Q0EsaWlDRERZLFlBQVksd0xBQUUscUJBQXFCLGtHQUFFLGVBQWUsK0JBQUUsNEJBQTRCOztTQVFqRix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFWckMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLDRCQUE0QixDQUFDLFlBQ25GLHdCQUF3QixpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtpTEFXekMsT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVFbnRyeSwgU2VhcmNoRW50cnlIaWdobGlnaHQgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5hdmlnYXRlVG9Gb2xkZXIsIFZpZXdOb2RlQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVzQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlLCBBdXRvRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvY2F0aW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9sb2NhdGlvbi1saW5rL2xvY2F0aW9uLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEYXRhdGFibGVDZWxsQmFkZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvZGF0YXRhYmxlLWNlbGwtYmFkZ2VzL2RhdGF0YWJsZS1jZWxsLWJhZGdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9jYXRpb25MaW5rQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGUsIERhdGF0YWJsZUNlbGxCYWRnZXNDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtcmVzdWx0cy1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXNlYXJjaC1yZXN1bHRzLXJvdycgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzZXR0aW5ncyA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0UHJlZml4ID0gXCI8c3BhbiBjbGFzcz0nYWNhLWhpZ2hsaWdodCc+XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0UG9zdGZpeCA9ICc8L3NwYW4+JztcblxuICBwcml2YXRlIG5vZGU6IE5vZGVFbnRyeTtcblxuICBASW5wdXQoKVxuICBjb250ZXh0OiBhbnk7XG5cbiAgbmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICB0aXRsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBkZXNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBjb250ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIG5hbWVTdHJpcHBlZCA9ICcnO1xuICB0aXRsZVN0cmlwcGVkID0gJyc7XG4gIGRlc2NyaXB0aW9uU3RyaXBwZWQgPSAnJztcbiAgY29udGVudFN0cmlwcGVkID0gJyc7XG4gIGlzRmlsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGF1dG9Eb3dubG9hZFNlcnZpY2U6IEF1dG9Eb3dubG9hZFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG5cbiAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMuY29udGV4dC5yb3c7XG4gICAgICBpZiAocm93KSB7XG4gICAgICAgIGNvbnN0IHsgZW50cnkgfSA9IHJvdy5ub2RlO1xuXG4gICAgICAgIGlmIChlbnRyeS5pZCA9PT0gbm9kZS5pZCkge1xuICAgICAgICAgIGVudHJ5Lm5hbWUgPSBub2RlLm5hbWU7XG4gICAgICAgICAgZW50cnkucHJvcGVydGllcyA9IHsgLi4ubm9kZS5wcm9wZXJ0aWVzIH07XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlcygpIHtcbiAgICB0aGlzLm5vZGUgPSB0aGlzLmNvbnRleHQucm93Lm5vZGU7XG4gICAgdGhpcy5pc0ZpbGUgPSB0aGlzLm5vZGUuZW50cnkuaXNGaWxlO1xuXG4gICAgY29uc3QgaGlnaGxpZ2h0czogU2VhcmNoRW50cnlIaWdobGlnaHRbXSA9IHRoaXMubm9kZS5lbnRyeVsnc2VhcmNoJ10/LlsnaGlnaGxpZ2h0J107XG4gICAgbGV0IG5hbWUgPSB0aGlzLm5vZGUuZW50cnkubmFtZTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5ub2RlLmVudHJ5LnByb3BlcnRpZXM7XG4gICAgbGV0IHRpdGxlID0gcHJvcGVydGllcz8uWydjbTp0aXRsZSddIHx8ICcnO1xuICAgIGxldCBkZXNjcmlwdGlvbiA9IHByb3BlcnRpZXM/LlsnY206ZGVzY3JpcHRpb24nXSB8fCAnJztcbiAgICBsZXQgY29udGVudCA9ICcnO1xuXG4gICAgaGlnaGxpZ2h0cz8uZm9yRWFjaCgoaGlnaGxpZ2h0KSA9PiB7XG4gICAgICBzd2l0Y2ggKGhpZ2hsaWdodC5maWVsZCkge1xuICAgICAgICBjYXNlICdjbTpuYW1lJzpcbiAgICAgICAgICBuYW1lID0gaGlnaGxpZ2h0LnNuaXBwZXRzWzBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjbTp0aXRsZSc6XG4gICAgICAgICAgdGl0bGUgPSBoaWdobGlnaHQuc25pcHBldHNbMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NtOmRlc2NyaXB0aW9uJzpcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGhpZ2hsaWdodC5zbmlwcGV0c1swXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY206Y29udGVudCc6XG4gICAgICAgICAgY29udGVudCA9IGAuLi4ke2hpZ2hsaWdodC5zbmlwcGV0c1swXX0uLi5gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubmFtZSQubmV4dChuYW1lKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uJC5uZXh0KGRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLmNvbnRlbnQkLm5leHQoY29udGVudCk7XG5cbiAgICB0aGlzLm5hbWVTdHJpcHBlZCA9IHRoaXMuc3RyaXBIaWdobGlnaHRpbmcobmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvblN0cmlwcGVkID0gdGhpcy5zdHJpcEhpZ2hsaWdodGluZyhkZXNjcmlwdGlvbik7XG4gICAgdGhpcy5jb250ZW50U3RyaXBwZWQgPSB0aGlzLnN0cmlwSGlnaGxpZ2h0aW5nKGNvbnRlbnQpO1xuXG4gICAgaWYgKHRpdGxlICE9PSBuYW1lKSB7XG4gICAgICB0aGlzLnRpdGxlJC5uZXh0KHRpdGxlID8gYCAoICR7dGl0bGV9IClgIDogJycpO1xuICAgICAgdGhpcy50aXRsZVN0cmlwcGVkID0gdGhpcy5zdHJpcEhpZ2hsaWdodGluZyh0aXRsZSk7XG4gICAgfVxuICB9XG5cbiAgc2hvd1ByZXZpZXcoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuYXV0b0Rvd25sb2FkRW5hYmxlZCB8fCAhdGhpcy5hdXRvRG93bmxvYWRTZXJ2aWNlLnRyeURvd25sb2FkKHRoaXMubm9kZSwgdGhpcy5zZXR0aW5ncy5hdXRoRG93bmxvYWRUaHJlc2hvbGQpKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLm5vZGUuZW50cnkuaWQsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KSk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVUb0ZvbGRlcih0aGlzLm5vZGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaXBIaWdobGlnaHRpbmcoaGlnaGxpZ2h0ZWRDb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBoaWdobGlnaHRlZENvbnRlbnRcbiAgICAgID8gaGlnaGxpZ2h0ZWRDb250ZW50LnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmhpZ2hsaWdodFByZWZpeCwgJ2cnKSwgJycpLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmhpZ2hsaWdodFBvc3RmaXgsICdnJyksICcnKVxuICAgICAgOiAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtcmVzdWx0cy10ZXh0XCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtZmlsZS1uYW1lXCI+XG4gICAgPHNwYW5cbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwibGlua1wiXG4gICAgICAqbmdJZj1cImlzRmlsZVwiXG4gICAgICAoY2xpY2spPVwic2hvd1ByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd1ByZXZpZXcoJGV2ZW50KVwiXG4gICAgICBjbGFzcz1cImFjYS1saW5rIGFjYS1jcm9wLXRleHRcIlxuICAgICAgW3RpdGxlXT1cIm5hbWVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cIm5hbWUkIHwgYXN5bmNcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwibGlua1wiXG4gICAgICAqbmdJZj1cIiFpc0ZpbGVcIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKCRldmVudClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm5hdmlnYXRlKCRldmVudClcIlxuICAgICAgY2xhc3M9XCJib2xkIGFjYS1saW5rIGFjYS1jcm9wLXRleHRcIlxuICAgICAgW3RpdGxlXT1cIm5hbWVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cIm5hbWUkIHwgYXN5bmNcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNlYXJjaC1yZXN1bHRzLWVudHJ5LXRpdGxlXCJcbiAgICAgIGNsYXNzPVwiYWNhLWNyb3AtdGV4dFwiXG4gICAgICBbdGl0bGVdPVwidGl0bGVTdHJpcHBlZFwiXG4gICAgICBbaW5uZXJIVE1MXT1cInRpdGxlJCB8IGFzeW5jXCJcbiAgICA+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNlYXJjaC1yZXN1bHRzLWVudHJ5LWRlc2NyaXB0aW9uXCJcbiAgICBjbGFzcz1cImFjYS1jcm9wLXRleHRcIlxuICAgIFt0aXRsZV09XCJkZXNjcmlwdGlvblN0cmlwcGVkXCJcbiAgICBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uJCB8IGFzeW5jXCJcbiAgPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWNhLXJlc3VsdC1sb2NhdGlvblwiPlxuICAgIDxhY2EtbG9jYXRpb24tbGluayBbY29udGV4dF09XCJjb250ZXh0XCIgW3Nob3dMb2NhdGlvbl09XCJ0cnVlXCIgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcmVzdWx0LWNvbnRlbnQgYWNhLWNyb3AtdGV4dFwiIFt0aXRsZV09XCJjb250ZW50U3RyaXBwZWRcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQkIHwgYXN5bmNcIj48L2Rpdj5cbjwvZGl2PlxuPGFjYS1kYXRhdGFibGUtY2VsbC1iYWRnZXMgW25vZGVdPVwiY29udGV4dC5yb3cubm9kZVwiIC8+XG4iXX0=