@alfresco/aca-content 4.3.0 → 4.4.0-6809241006

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 (51) hide show
  1. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +2 -8
  2. package/esm2020/lib/components/common/location-link/location-link.component.mjs +6 -4
  3. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +2 -2
  4. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +2 -2
  5. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +4 -7
  6. package/esm2020/lib/components/context-menu/context-menu.service.mjs +1 -4
  7. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +2 -2
  8. package/esm2020/lib/components/favorites/favorites.component.mjs +3 -3
  9. package/esm2020/lib/components/files/files.component.mjs +17 -15
  10. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +3 -3
  11. package/esm2020/lib/components/libraries/libraries.component.mjs +2 -2
  12. package/esm2020/lib/components/recent-files/recent-files.component.mjs +5 -5
  13. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +4 -4
  14. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +3 -3
  15. package/esm2020/lib/components/search/search-results/search-results.component.mjs +2 -2
  16. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +2 -2
  17. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +3 -3
  18. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +2 -2
  19. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +2 -2
  20. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +2 -2
  21. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +3 -3
  22. package/esm2020/lib/services/content-management.service.mjs +13 -13
  23. package/esm2020/lib/services/node-actions.service.mjs +8 -8
  24. package/esm2020/lib/services/node-template.service.mjs +2 -2
  25. package/esm2020/lib/store/effects/library.effects.mjs +4 -4
  26. package/esm2020/lib/store/effects/node.effects.mjs +14 -14
  27. package/esm2020/lib/store/effects/upload.effects.mjs +3 -7
  28. package/esm2020/lib/store/effects/viewer.effects.mjs +3 -3
  29. package/esm2020/lib/store/reducers/app.reducer.mjs +2 -2
  30. package/esm2020/preview/lib/components/preview.component.mjs +8 -20
  31. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +9 -21
  32. package/fesm2015/alfresco-aca-content-folder-rules.mjs +1 -7
  33. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -1
  34. package/fesm2015/alfresco-aca-content-preview.mjs +9 -19
  35. package/fesm2015/alfresco-aca-content-preview.mjs.map +1 -1
  36. package/fesm2015/alfresco-aca-content-viewer.mjs +12 -22
  37. package/fesm2015/alfresco-aca-content-viewer.mjs.map +1 -1
  38. package/fesm2015/alfresco-aca-content.mjs +128 -99
  39. package/fesm2015/alfresco-aca-content.mjs.map +1 -1
  40. package/fesm2020/alfresco-aca-content-folder-rules.mjs +1 -7
  41. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -1
  42. package/fesm2020/alfresco-aca-content-preview.mjs +7 -19
  43. package/fesm2020/alfresco-aca-content-preview.mjs.map +1 -1
  44. package/fesm2020/alfresco-aca-content-viewer.mjs +8 -20
  45. package/fesm2020/alfresco-aca-content-viewer.mjs.map +1 -1
  46. package/fesm2020/alfresco-aca-content.mjs +91 -97
  47. package/fesm2020/alfresco-aca-content.mjs.map +1 -1
  48. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +0 -1
  49. package/lib/components/files/files.component.d.ts +1 -1
  50. package/lib/components/recent-files/recent-files.component.d.ts +0 -1
  51. package/package.json +1 -1
@@ -140,7 +140,7 @@ export class PreviewComponent extends PageComponent {
140
140
  try {
141
141
  this.node = await this.contentApi.getNodeInfo(id).toPromise();
142
142
  this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
143
- if (this.node && this.node.isFile) {
143
+ if (this.node?.isFile) {
144
144
  const nearest = await this.getNearestNodes(this.node.id, this.node.parentId);
145
145
  this.previousNodeId = nearest.left;
146
146
  this.nextNodeId = nearest.right;
@@ -157,10 +157,8 @@ export class PreviewComponent extends PageComponent {
157
157
  }
158
158
  }
159
159
  handleKeyboardEvent(event) {
160
- const key = event.keyCode;
161
- const rightArrow = 39;
162
- const leftArrow = 37;
163
- if (key === rightArrow || key === leftArrow) {
160
+ const key = event.key;
161
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
164
162
  event.preventDefault();
165
163
  event.stopImmediatePropagation();
166
164
  }
@@ -342,20 +340,10 @@ export class PreviewComponent extends PageComponent {
342
340
  options.numeric = true;
343
341
  }
344
342
  items.sort((a, b) => {
345
- let left = ObjectUtils.getValue(a, key);
346
- if (left) {
347
- left = left instanceof Date ? left.valueOf().toString() : left.toString();
348
- }
349
- else {
350
- left = '';
351
- }
352
- let right = ObjectUtils.getValue(b, key);
353
- if (right) {
354
- right = right instanceof Date ? right.valueOf().toString() : right.toString();
355
- }
356
- else {
357
- right = '';
358
- }
343
+ let left = ObjectUtils.getValue(a, key) ?? '';
344
+ left = left instanceof Date ? left.valueOf().toString() : left.toString();
345
+ let right = ObjectUtils.getValue(b, key) ?? '';
346
+ right = right instanceof Date ? right.valueOf().toString() : right.toString();
359
347
  return direction === 'asc' ? left.localeCompare(right, undefined, options) : right.localeCompare(left, undefined, options);
360
348
  });
361
349
  }
@@ -403,4 +391,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
403
391
  type: HostListener,
404
392
  args: ['document:keydown', ['$event']]
405
393
  }] } });
406
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9wcmV2aWV3L3NyYy9saWIvY29tcG9uZW50cy9wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ByZXZpZXcvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUF3QyxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZGLE9BQU8sRUFBc0IsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVB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QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgVXJsVHJlZSwgVXJsU2VnbWVudEdyb3VwLCBVcmxTZWdtZW50LCBQUklNQVJZX09VVExFVCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSwgT2JqZWN0VXRpbHMsIFZpZXdlck1vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDbG9zZVByZXZpZXdBY3Rpb24sIFZpZXdlckFjdGlvblR5cGVzLCBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHtcbiAgUGFnZUNvbXBvbmVudCxcbiAgQXBwSG9va1NlcnZpY2UsXG4gIENvbnRlbnRBcGlTZXJ2aWNlLFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiwgVmlld2VyRXh0ZW5zaW9uUmVmIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3QgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIE5vZGVzQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBWaWV3ZXJNb2R1bGUsIEFsZnJlc2NvVmlld2VyTW9kdWxlLCBJbmZvRHJhd2VyQ29tcG9uZW50LCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtcHJldmlldycgfVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJldmlld0xvY2F0aW9uOiBzdHJpbmcgPSBudWxsO1xuICByb3V0ZXNTa2lwTmF2aWdhdGlvbiA9IFsnc2hhcmVkJywgJ3JlY2VudC1maWxlcycsICdmYXZvcml0ZXMnXTtcbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIG5hdmlnYXRpb25Tb3VyY2VzID0gWydmYXZvcml0ZXMnLCAnbGlicmFyaWVzJywgJ3BlcnNvbmFsLWZpbGVzJywgJ3JlY2VudC1maWxlcycsICdzaGFyZWQnXTtcbiAgZm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XG4gIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcbiAgcHJldmlvdXNOb2RlSWQ6IHN0cmluZztcbiAgbmV4dE5vZGVJZDogc3RyaW5nO1xuICBuYXZpZ2F0ZU11bHRpcGxlID0gZmFsc2U7XG4gIG9wZW5XaXRoOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICBjb250ZW50RXh0ZW5zaW9uczogQXJyYXk8Vmlld2VyRXh0ZW5zaW9uUmVmPiA9IFtdO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIG5hdmlnYXRlQmFja0FzQ2xvc2UgPSBmYWxzZTtcbiAgc2ltcGxlc3RNb2RlID0gZmFsc2U7XG5cbiAgcmVjZW50RmlsZUZpbHRlcnMgPSBbXG4gICAgJ1RZUEU6XCJjb250ZW50XCInLFxuICAgICctUE5BTUU6XCIwL3dpa2lcIicsXG4gICAgJy1UWVBFOlwiYXBwOmZpbGVsaW5rXCInLFxuICAgICctVFlQRTpcImZtOnBvc3RcIicsXG4gICAgJy1UWVBFOlwiY206dGh1bWJuYWlsXCInLFxuICAgICctVFlQRTpcImNtOmZhaWxlZFRodW1ibmFpbFwiJyxcbiAgICAnLVRZUEU6XCJjbTpyYXRpbmdcIicsXG4gICAgJy1UWVBFOlwiZGw6ZGF0YUxpc3RcIicsXG4gICAgJy1UWVBFOlwiZGw6dG9kb0xpc3RcIicsXG4gICAgJy1UWVBFOlwiZGw6aXNzdWVcIicsXG4gICAgJy1UWVBFOlwiZGw6Y29udGFjdFwiJyxcbiAgICAnLVRZUEU6XCJkbDpldmVudEFnZW5kYVwiJyxcbiAgICAnLVRZUEU6XCJkbDpldmVudFwiJyxcbiAgICAnLVRZUEU6XCJkbDp0YXNrXCInLFxuICAgICctVFlQRTpcImRsOnNpbXBsZXRhc2tcIicsXG4gICAgJy1UWVBFOlwiZGw6bWVldGluZ0FnZW5kYVwiJyxcbiAgICAnLVRZUEU6XCJkbDpsb2NhdGlvblwiJyxcbiAgICAnLVRZUEU6XCJmbTp0b3BpY1wiJyxcbiAgICAnLVRZUEU6XCJmbTpwb3N0XCInLFxuICAgICctVFlQRTpcImlhOmNhbGVuZGFyRXZlbnRcIicsXG4gICAgJy1UWVBFOlwibG5rOmxpbmtcIidcbiAgXTtcblxuICBwcml2YXRlIGNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbiA9IFsnYWRmLXZpZXdlcl9fc2lkZWJhcicsICdjZGstb3ZlcmxheS1jb250YWluZXInLCAnYWRmLWltYWdlLXZpZXdlciddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGVudEFwaTogQ29udGVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBhcHBIb29rU2VydmljZTogQXBwSG9va1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBmcm9tKHRoaXMuaW5mb0RyYXdlck9wZW5lZCQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dSaWdodFNpZGUgPSB2YWw7XG4gICAgICB9KTtcblxuICAgIHRoaXMucHJldmlld0xvY2F0aW9uID0gdGhpcy5yb3V0ZXIudXJsLnN1YnN0cigwLCB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignLycsIDEpKS5yZXBsYWNlKC9cXC8vZywgJycpO1xuXG4gICAgY29uc3Qgcm91dGVEYXRhID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhO1xuICAgIHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSA9ICEhcm91dGVEYXRhLm5hdmlnYXRlQmFja0FzQ2xvc2U7XG4gICAgdGhpcy5zaW1wbGVzdE1vZGUgPSAhIXJvdXRlRGF0YS5zaW1wbGVzdE1vZGU7XG5cbiAgICBpZiAocm91dGVEYXRhLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVNdWx0aXBsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZSkge1xuICAgICAgY29uc3Qgc291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU291cmNlcy5pbmNsdWRlcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVTb3VyY2UgPSByb3V0ZURhdGEubmF2aWdhdGVTb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuZm9sZGVySWQgPSBwYXJhbXMuZm9sZGVySWQ7XG4gICAgICBjb25zdCBpZCA9IHBhcmFtcy5ub2RlSWQ7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5Tm9kZShpZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSksXG5cbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSkpLFxuXG4gICAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KVxuICAgIF0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgcGFydGljdWxhciBub2RlIGludG8gdGhlIFZpZXdlclxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBOb2RlIHRvIGRpc3BsYXlcbiAgICovXG4gIGFzeW5jIGRpc3BsYXlOb2RlKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubm9kZSA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5nZXROb2RlSW5mbyhpZCkudG9Qcm9taXNlKCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlbGVjdGVkTm9kZXNBY3Rpb24oW3sgZW50cnk6IHRoaXMubm9kZSB9XSkpO1xuXG4gICAgICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmlzRmlsZSkge1xuICAgICAgICAgIGNvbnN0IG5lYXJlc3QgPSBhd2FpdCB0aGlzLmdldE5lYXJlc3ROb2Rlcyh0aGlzLm5vZGUuaWQsIHRoaXMubm9kZS5wYXJlbnRJZCk7XG5cbiAgICAgICAgICB0aGlzLnByZXZpb3VzTm9kZUlkID0gbmVhcmVzdC5sZWZ0O1xuICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgaWRdKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIWVyciB8fCBlcnIuc3RhdHVzICE9PSA0MDEpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgcmlnaHRBcnJvdyA9IDM5O1xuICAgIGNvbnN0IGxlZnRBcnJvdyA9IDM3O1xuXG4gICAgaWYgKGtleSA9PT0gcmlnaHRBcnJvdyB8fCBrZXkgPT09IGxlZnRBcnJvdykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgVmlld2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzVmlzaWJsZSBJbmRpY2F0b3Igd2hldGhlciBWaWV3ZXIgaXMgdmlzaWJsZSBvciBoaWRkZW4uXG4gICAqL1xuICBvblZpc2liaWxpdHlDaGFuZ2VkKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZE5hdmlnYXRlID0gIWlzVmlzaWJsZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZTogYm9vbGVhbikge1xuICAgIGlmIChzaG91bGROYXZpZ2F0ZSkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSkge1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNraXBOYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROYXZpZ2F0aW9uQ29tbWFuZHModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuXG4gICAgICAgIGlmICghc2hvdWxkU2tpcE5hdmlnYXRpb24gJiYgdGhpcy5mb2xkZXJJZCkge1xuICAgICAgICAgIHJvdXRlLnB1c2godGhpcy5mb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGVzIG5hdmlnYXRpb24gdG8gYSBwcmV2aW91cyBkb2N1bWVudCAqL1xuICBvbk5hdmlnYXRlQmVmb3JlKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXZpb3VzTm9kZUlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMucHJldmlvdXNOb2RlSWQpKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBuYXZpZ2F0aW9uIHRvIGEgbmV4dCBkb2N1bWVudCAqL1xuICBvbk5hdmlnYXRlTmV4dChldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLnNob3VsZE5hdmlnYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXh0Tm9kZUlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMubmV4dE5vZGVJZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBub2RlIHByZXZpZXcgcm91dGUgYmFzZWQgb24gZm9sZGVyIGFuZCBub2RlIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcklkIEZvbGRlciBJRFxuICAgKiBAcGFyYW0gbm9kZUlkIE5vZGUgSURcbiAgICovXG4gIGdldFByZXZpZXdQYXRoKGZvbGRlcklkOiBzdHJpbmcsIG5vZGVJZDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW3RoaXMucHJldmlld0xvY2F0aW9uXTtcblxuICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgcm91dGUucHVzaChmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgcm91dGUucHVzaCgncHJldmlldycsIG5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBuZWFyZXN0IG5vZGUgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBub2RlIGFuZCBmb2xkZXIuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY3VtZW50IG5vZGVcbiAgICogQHBhcmFtIGZvbGRlcklkIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb250YWluaW5nIGZvbGRlciBub2RlLlxuICAgKi9cbiAgYXN5bmMgZ2V0TmVhcmVzdE5vZGVzKG5vZGVJZDogc3RyaW5nLCBmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTx7IGxlZnQ6IHN0cmluZzsgcmlnaHQ6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgZW1wdHkgPSB7XG4gICAgICBsZWZ0OiBudWxsLFxuICAgICAgcmlnaHQ6IG51bGxcbiAgICB9O1xuXG4gICAgaWYgKG5vZGVJZCAmJiBmb2xkZXJJZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaWRzID0gYXdhaXQgdGhpcy5nZXRGaWxlSWRzKHRoaXMubmF2aWdhdGVTb3VyY2UsIGZvbGRlcklkKTtcbiAgICAgICAgY29uc3QgaWR4ID0gaWRzLmluZGV4T2Yobm9kZUlkKTtcblxuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogaWRzW2lkeCAtIDFdIHx8IG51bGwsXG4gICAgICAgICAgICByaWdodDogaWRzW2lkeCArIDFdIHx8IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlbXB0eTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBlbXB0eTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIG5vZGUgaWRlbnRpZmllcnMgZm9yIHRoZSBmb2xkZXIgYW5kIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIERhdGEgc291cmNlIG5hbWUuIEFsbG93ZWQgdmFsdWVzIGFyZTogcGVyc29uYWwtZmlsZXMsIGxpYnJhcmllcywgZmF2b3JpdGVzLCBzaGFyZWQsIHJlY2VudC1maWxlcy5cbiAgICogQHBhcmFtIGZvbGRlcklkIENvbnRhaW5pbmcgZm9sZGVyIG5vZGUgaWRlbnRpZmllciBmb3IgJ3BlcnNvbmFsLWZpbGVzJyBhbmQgJ2xpYnJhcmllcycgc291cmNlcy5cbiAgICovXG4gIGFzeW5jIGdldEZpbGVJZHMoc291cmNlOiBzdHJpbmcsIGZvbGRlcklkPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICgoc291cmNlID09PSAncGVyc29uYWwtZmlsZXMnIHx8IHNvdXJjZSA9PT0gJ2xpYnJhcmllcycpICYmIGZvbGRlcklkKSB7XG4gICAgICBjb25zdCBzb3J0S2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3BlcnNvbmFsLWZpbGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdwZXJzb25hbC1maWxlcy5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpXG4gICAgICAgIC5nZXROb2RlQ2hpbGRyZW4oZm9sZGVySWQsIHtcbiAgICAgICAgICAvLyBvcmRlckJ5OiBgJHtzb3J0S2V5fSAke3NvcnREaXJlY3Rpb259YCxcbiAgICAgICAgICBmaWVsZHM6IFsnaWQnLCB0aGlzLmdldFJvb3RGaWVsZChzb3J0S2V5KV0sXG4gICAgICAgICAgd2hlcmU6ICcoaXNGaWxlPXRydWUpJ1xuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydEtleSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouaWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdmYXZvcml0ZXMnKSB7XG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaVxuICAgICAgICAuZ2V0RmF2b3JpdGVzKCctbWUtJywge1xuICAgICAgICAgIHdoZXJlOiAnKEVYSVNUUyh0YXJnZXQvZmlsZSkpJyxcbiAgICAgICAgICBmaWVsZHM6IFsndGFyZ2V0J11cbiAgICAgICAgfSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBzb3J0S2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ2Zhdm9yaXRlcy5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnREaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnZmF2b3JpdGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuICAgICAgY29uc3QgZmlsZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeS50YXJnZXQuZmlsZSk7XG4gICAgICB0aGlzLnNvcnQoZmlsZXMsIHNvcnRLZXksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZmlsZXMubWFwKChmKSA9PiBmLmlkKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlID09PSAnc2hhcmVkJykge1xuICAgICAgY29uc3Qgc29ydGluZ0tleSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdzaGFyZWQuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3NoYXJlZC5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcblxuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmZpbmRTaGFyZWRMaW5rcyh7XG4gICAgICAgICAgZmllbGRzOiBbJ25vZGVJZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRpbmdLZXkpXVxuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydGluZ0tleSwgc29ydGluZ0RpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmoubm9kZUlkKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlID09PSAncmVjZW50LWZpbGVzJykge1xuICAgICAgY29uc3QgcGVyc29uID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldFBlcnNvbignLW1lLScpLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgdXNlcm5hbWUgPSBwZXJzb24uZW50cnkuaWQ7XG4gICAgICBjb25zdCBzb3J0aW5nS2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3JlY2VudC1maWxlcy5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncmVjZW50LWZpbGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuXG4gICAgICBjb25zdCBxdWVyeTogU2VhcmNoUmVxdWVzdCA9IHtcbiAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICBxdWVyeTogJyonLFxuICAgICAgICAgIGxhbmd1YWdlOiAnYWZ0cydcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyUXVlcmllczogW1xuICAgICAgICAgIHsgcXVlcnk6IGBjbTptb2RpZmllZDpbTk9XL0RBWS0zMERBWVMgVE8gTk9XL0RBWSsxREFZXWAgfSxcbiAgICAgICAgICB7IHF1ZXJ5OiBgY206bW9kaWZpZXI6JHt1c2VybmFtZX0gT1IgY206Y3JlYXRvcjoke3VzZXJuYW1lfWAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBxdWVyeTogdGhpcy5yZWNlbnRGaWxlRmlsdGVycy5qb2luKCcgQU5EICcpXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBmaWVsZHM6IFsnaWQnLCB0aGlzLmdldFJvb3RGaWVsZChzb3J0aW5nS2V5KV0sXG4gICAgICAgIGluY2x1ZGU6IFsncGF0aCcsICdwcm9wZXJ0aWVzJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnXSxcbiAgICAgICAgc29ydDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdGSUVMRCcsXG4gICAgICAgICAgICBmaWVsZDogJ2NtOm1vZGlmaWVkJyxcbiAgICAgICAgICAgIGFzY2VuZGluZzogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5zZWFyY2gocXVlcnkpLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbm9kZXMubGlzdC5lbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouZW50cnkpO1xuICAgICAgdGhpcy5zb3J0KGVudHJpZXMsIHNvcnRpbmdLZXksIHNvcnRpbmdEaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcml2YXRlIHNvcnQoaXRlbXM6IGFueVtdLCBrZXk6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkNvbGxhdG9yT3B0aW9ucyA9IHt9O1xuXG4gICAgaWYgKGtleS5pbmNsdWRlcygnc2l6ZUluQnl0ZXMnKSB8fCBrZXkgPT09ICduYW1lJykge1xuICAgICAgb3B0aW9ucy5udW1lcmljID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpdGVtcy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgbGV0IGxlZnQgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShhLCBrZXkpO1xuICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgbGVmdCA9IGxlZnQgaW5zdGFuY2VvZiBEYXRlID8gbGVmdC52YWx1ZU9mKCkudG9TdHJpbmcoKSA6IGxlZnQudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnQgPSAnJztcbiAgICAgIH1cblxuICAgICAgbGV0IHJpZ2h0ID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUoYiwga2V5KTtcbiAgICAgIGlmIChyaWdodCkge1xuICAgICAgICByaWdodCA9IHJpZ2h0IGluc3RhbmNlb2YgRGF0ZSA/IHJpZ2h0LnZhbHVlT2YoKS50b1N0cmluZygpIDogcmlnaHQudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJpZ2h0ID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gbGVmdC5sb2NhbGVDb21wYXJlKHJpZ2h0LCB1bmRlZmluZWQsIG9wdGlvbnMpIDogcmlnaHQubG9jYWxlQ29tcGFyZShsZWZ0LCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcm9vdCBmaWVsZCBuYW1lIGZyb20gdGhlIHByb3BlcnR5IHBhdGguXG4gICAqIEV4YW1wbGU6ICdwcm9wZXJ0eTEuc29tZS5jaGlsZC5wcm9wZXJ0eScgPT4gJ3Byb3BlcnR5MSdcbiAgICpcbiAgICogQHBhcmFtIHBhdGggUHJvcGVydHkgcGF0aFxuICAgKi9cbiAgZ2V0Um9vdEZpZWxkKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmF2aWdhdGlvbkNvbW1hbmRzKHVybDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHVybFRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpO1xuICAgIGNvbnN0IHVybFNlZ21lbnRHcm91cDogVXJsU2VnbWVudEdyb3VwID0gdXJsVHJlZS5yb290LmNoaWxkcmVuW1BSSU1BUllfT1VUTEVUXTtcblxuICAgIGlmICghdXJsU2VnbWVudEdyb3VwKSB7XG4gICAgICByZXR1cm4gW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgdXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSA9IHVybFNlZ21lbnRHcm91cC5zZWdtZW50cztcblxuICAgIHJldHVybiB1cmxTZWdtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaXRlbSkge1xuICAgICAgYWNjLnB1c2goaXRlbS5wYXRoLCBpdGVtLnBhcmFtZXRlcnMpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE5hdmlnYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICF0aGlzLmlzQ2hpbGQoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KSkge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiAhIWN1cnJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NoaWxkKGxpc3Q6IERPTVRva2VuTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGxpc3QpLnNvbWUoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB0aGlzLmNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyhjbGFzc05hbWUpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVJZFwiPlxuICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdyaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW2Nhbk5hdmlnYXRlQmVmb3JlXT1cIiEhcHJldmlvdXNOb2RlSWRcIlxuICAgIFtjYW5OYXZpZ2F0ZU5leHRdPVwiISFuZXh0Tm9kZUlkXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwidHJ1ZVwiXG4gICAgKHNob3dWaWV3ZXJDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZSgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVOZXh0KT1cIm9uTmF2aWdhdGVOZXh0KCRldmVudClcIlxuICA+XG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmZpbGVcIj48L2FjYS1pbmZvLWRyYXdlcj5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoLmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIG9wZW5XaXRoOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uSWRcIj5cbiAgICAgICAgPGFwcC10b29sYmFyLW1lbnUtaXRlbSBbYWN0aW9uUmVmXT1cImFjdGlvblwiPjwvYXBwLXRvb2xiYXItbWVudS1pdGVtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hZGYtdmlld2VyLW9wZW4td2l0aD5cblxuICAgIDxhZGYtdmlld2VyLXRvb2xiYXItYWN0aW9ucyAqbmdJZj1cIiFzaW1wbGVzdE1vZGVcIj5cbiAgICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwidmlld2VyVG9vbGJhckFjdGlvbnNcIj48L2FjYS10b29sYmFyPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG4gIDwvYWRmLWFsZnJlc2NvLXZpZXdlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9wcmV2aWV3L3NyYy9saWIvY29tcG9uZW50cy9wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ByZXZpZXcvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUF3QyxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZGLE9BQU8sRUFBc0IsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVB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QUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxjQUFjLENBQUMsT0FBb0I7UUFDekMsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUUzQyxPQUFPLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hFLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQy9DO1FBRUQsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBa0I7UUFDaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDOzs2R0F4WlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IseU1DckQ3Qiw4dUNBa0NBLDhhRFlZLFlBQVksa1pBQUUsWUFBWSx3VEFBRSxvQkFBb0IsbWpCQUFFLG1CQUFtQix3RkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOzJGQU9oSCxnQkFBZ0I7a0JBVDVCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxZQUNsSCxhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO2tSQWtKOUIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFVybFRyZWUsIFVybFNlZ21lbnRHcm91cCwgVXJsU2VnbWVudCwgUFJJTUFSWV9PVVRMRVQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIE9iamVjdFV0aWxzLCBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ2xvc2VQcmV2aWV3QWN0aW9uLCBWaWV3ZXJBY3Rpb25UeXBlcywgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7XG4gIFBhZ2VDb21wb25lbnQsXG4gIEFwcEhvb2tTZXJ2aWNlLFxuICBDb250ZW50QXBpU2VydmljZSxcbiAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LFxuICBUb29sYmFyQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYsIFZpZXdlckV4dGVuc2lvblJlZiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEFsZnJlc2NvVmlld2VyTW9kdWxlLCBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVmlld2VyTW9kdWxlLCBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgSW5mb0RyYXdlckNvbXBvbmVudCwgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LCBUb29sYmFyQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdhcHAtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYXBwLXByZXZpZXcnIH1cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByZXZpZXdMb2NhdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgcm91dGVzU2tpcE5hdmlnYXRpb24gPSBbJ3NoYXJlZCcsICdyZWNlbnQtZmlsZXMnLCAnZmF2b3JpdGVzJ107XG4gIG5hdmlnYXRlU291cmNlOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0aW9uU291cmNlcyA9IFsnZmF2b3JpdGVzJywgJ2xpYnJhcmllcycsICdwZXJzb25hbC1maWxlcycsICdyZWNlbnQtZmlsZXMnLCAnc2hhcmVkJ107XG4gIGZvbGRlcklkOiBzdHJpbmcgPSBudWxsO1xuICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIG5leHROb2RlSWQ6IHN0cmluZztcbiAgbmF2aWdhdGVNdWx0aXBsZSA9IGZhbHNlO1xuICBvcGVuV2l0aDogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcbiAgY29udGVudEV4dGVuc2lvbnM6IEFycmF5PFZpZXdlckV4dGVuc2lvblJlZj4gPSBbXTtcbiAgc2hvd1JpZ2h0U2lkZSA9IGZhbHNlO1xuICBuYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gZmFsc2U7XG4gIHNpbXBsZXN0TW9kZSA9IGZhbHNlO1xuXG4gIHJlY2VudEZpbGVGaWx0ZXJzID0gW1xuICAgICdUWVBFOlwiY29udGVudFwiJyxcbiAgICAnLVBOQU1FOlwiMC93aWtpXCInLFxuICAgICctVFlQRTpcImFwcDpmaWxlbGlua1wiJyxcbiAgICAnLVRZUEU6XCJmbTpwb3N0XCInLFxuICAgICctVFlQRTpcImNtOnRodW1ibmFpbFwiJyxcbiAgICAnLVRZUEU6XCJjbTpmYWlsZWRUaHVtYm5haWxcIicsXG4gICAgJy1UWVBFOlwiY206cmF0aW5nXCInLFxuICAgICctVFlQRTpcImRsOmRhdGFMaXN0XCInLFxuICAgICctVFlQRTpcImRsOnRvZG9MaXN0XCInLFxuICAgICctVFlQRTpcImRsOmlzc3VlXCInLFxuICAgICctVFlQRTpcImRsOmNvbnRhY3RcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRcIicsXG4gICAgJy1UWVBFOlwiZGw6dGFza1wiJyxcbiAgICAnLVRZUEU6XCJkbDpzaW1wbGV0YXNrXCInLFxuICAgICctVFlQRTpcImRsOm1lZXRpbmdBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6bG9jYXRpb25cIicsXG4gICAgJy1UWVBFOlwiZm06dG9waWNcIicsXG4gICAgJy1UWVBFOlwiZm06cG9zdFwiJyxcbiAgICAnLVRZUEU6XCJpYTpjYWxlbmRhckV2ZW50XCInLFxuICAgICctVFlQRTpcImxuazpsaW5rXCInXG4gIF07XG5cbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBub2Rlc0FwaVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgYXBwSG9va1NlcnZpY2U6IEFwcEhvb2tTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMb2NhdGlvbiA9IHRoaXMucm91dGVyLnVybC5zdWJzdHIoMCwgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy8nLCAxKSkucmVwbGFjZSgvXFwvL2csICcnKTtcblxuICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcbiAgICB0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UgPSAhIXJvdXRlRGF0YS5uYXZpZ2F0ZUJhY2tBc0Nsb3NlO1xuICAgIHRoaXMuc2ltcGxlc3RNb2RlID0gISFyb3V0ZURhdGEuc2ltcGxlc3RNb2RlO1xuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5vZGUoaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdGhpcy5zdWJzY3JpcHRpb25zLmNvbmNhdChbXG4gICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLm5vZGVzRGVsZXRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKHRydWUpKSxcblxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dChmaWxlLmRhdGEuZW50cnkpKSxcblxuICAgICAgdGhpcy5hY3Rpb25zJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBvZlR5cGU8Q2xvc2VQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5DbG9zZVByZXZpZXcpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSlcbiAgICBdKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHBhcnRpY3VsYXIgbm9kZSBpbnRvIHRoZSBWaWV3ZXJcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgTm9kZSB0byBkaXNwbGF5XG4gICAqL1xuICBhc3luYyBkaXNwbGF5Tm9kZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8oaWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcblxuICAgICAgICBpZiAodGhpcy5ub2RlPy5pc0ZpbGUpIHtcbiAgICAgICAgICBjb25zdCBuZWFyZXN0ID0gYXdhaXQgdGhpcy5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQpO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICB0aGlzLm5leHROb2RlSWQgPSBuZWFyZXN0LnJpZ2h0O1xuICAgICAgICAgIHRoaXMubm9kZUlkID0gdGhpcy5ub2RlLmlkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFlcnIgfHwgZXJyLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgVmlld2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzVmlzaWJsZSBJbmRpY2F0b3Igd2hldGhlciBWaWV3ZXIgaXMgdmlzaWJsZSBvciBoaWRkZW4uXG4gICAqL1xuICBvblZpc2liaWxpdHlDaGFuZ2VkKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZE5hdmlnYXRlID0gIWlzVmlzaWJsZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZTogYm9vbGVhbikge1xuICAgIGlmIChzaG91bGROYXZpZ2F0ZSkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSkge1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNraXBOYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROYXZpZ2F0aW9uQ29tbWFuZHModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuXG4gICAgICAgIGlmICghc2hvdWxkU2tpcE5hdmlnYXRpb24gJiYgdGhpcy5mb2xkZXJJZCkge1xuICAgICAgICAgIHJvdXRlLnB1c2godGhpcy5mb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGVzIG5hdmlnYXRpb24gdG8gYSBwcmV2aW91cyBkb2N1bWVudCAqL1xuICBvbk5hdmlnYXRlQmVmb3JlKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXZpb3VzTm9kZUlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMucHJldmlvdXNOb2RlSWQpKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBuYXZpZ2F0aW9uIHRvIGEgbmV4dCBkb2N1bWVudCAqL1xuICBvbk5hdmlnYXRlTmV4dChldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLnNob3VsZE5hdmlnYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXh0Tm9kZUlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMubmV4dE5vZGVJZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBub2RlIHByZXZpZXcgcm91dGUgYmFzZWQgb24gZm9sZGVyIGFuZCBub2RlIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcklkIEZvbGRlciBJRFxuICAgKiBAcGFyYW0gbm9kZUlkIE5vZGUgSURcbiAgICovXG4gIGdldFByZXZpZXdQYXRoKGZvbGRlcklkOiBzdHJpbmcsIG5vZGVJZDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW3RoaXMucHJldmlld0xvY2F0aW9uXTtcblxuICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgcm91dGUucHVzaChmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgcm91dGUucHVzaCgncHJldmlldycsIG5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBuZWFyZXN0IG5vZGUgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBub2RlIGFuZCBmb2xkZXIuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY3VtZW50IG5vZGVcbiAgICogQHBhcmFtIGZvbGRlcklkIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb250YWluaW5nIGZvbGRlciBub2RlLlxuICAgKi9cbiAgYXN5bmMgZ2V0TmVhcmVzdE5vZGVzKG5vZGVJZDogc3RyaW5nLCBmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTx7IGxlZnQ6IHN0cmluZzsgcmlnaHQ6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgZW1wdHkgPSB7XG4gICAgICBsZWZ0OiBudWxsLFxuICAgICAgcmlnaHQ6IG51bGxcbiAgICB9O1xuXG4gICAgaWYgKG5vZGVJZCAmJiBmb2xkZXJJZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaWRzID0gYXdhaXQgdGhpcy5nZXRGaWxlSWRzKHRoaXMubmF2aWdhdGVTb3VyY2UsIGZvbGRlcklkKTtcbiAgICAgICAgY29uc3QgaWR4ID0gaWRzLmluZGV4T2Yobm9kZUlkKTtcblxuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogaWRzW2lkeCAtIDFdIHx8IG51bGwsXG4gICAgICAgICAgICByaWdodDogaWRzW2lkeCArIDFdIHx8IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlbXB0eTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBlbXB0eTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIG5vZGUgaWRlbnRpZmllcnMgZm9yIHRoZSBmb2xkZXIgYW5kIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIERhdGEgc291cmNlIG5hbWUuIEFsbG93ZWQgdmFsdWVzIGFyZTogcGVyc29uYWwtZmlsZXMsIGxpYnJhcmllcywgZmF2b3JpdGVzLCBzaGFyZWQsIHJlY2VudC1maWxlcy5cbiAgICogQHBhcmFtIGZvbGRlcklkIENvbnRhaW5pbmcgZm9sZGVyIG5vZGUgaWRlbnRpZmllciBmb3IgJ3BlcnNvbmFsLWZpbGVzJyBhbmQgJ2xpYnJhcmllcycgc291cmNlcy5cbiAgICovXG4gIGFzeW5jIGdldEZpbGVJZHMoc291cmNlOiBzdHJpbmcsIGZvbGRlcklkPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICgoc291cmNlID09PSAncGVyc29uYWwtZmlsZXMnIHx8IHNvdXJjZSA9PT0gJ2xpYnJhcmllcycpICYmIGZvbGRlcklkKSB7XG4gICAgICBjb25zdCBzb3J0S2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3BlcnNvbmFsLWZpbGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdwZXJzb25hbC1maWxlcy5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpXG4gICAgICAgIC5nZXROb2RlQ2hpbGRyZW4oZm9sZGVySWQsIHtcbiAgICAgICAgICAvLyBvcmRlckJ5OiBgJHtzb3J0S2V5fSAke3NvcnREaXJlY3Rpb259YCxcbiAgICAgICAgICBmaWVsZHM6IFsnaWQnLCB0aGlzLmdldFJvb3RGaWVsZChzb3J0S2V5KV0sXG4gICAgICAgICAgd2hlcmU6ICcoaXNGaWxlPXRydWUpJ1xuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydEtleSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouaWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdmYXZvcml0ZXMnKSB7XG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaVxuICAgICAgICAuZ2V0RmF2b3JpdGVzKCctbWUtJywge1xuICAgICAgICAgIHdoZXJlOiAnKEVYSVNUUyh0YXJnZXQvZmlsZSkpJyxcbiAgICAgICAgICBmaWVsZHM6IFsndGFyZ2V0J11cbiAgICAgICAgfSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBzb3J0S2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ2Zhdm9yaXRlcy5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnREaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnZmF2b3JpdGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuICAgICAgY29uc3QgZmlsZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeS50YXJnZXQuZmlsZSk7XG4gICAgICB0aGlzLnNvcnQoZmlsZXMsIHNvcnRLZXksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZmlsZXMubWFwKChmKSA9PiBmLmlkKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlID09PSAnc2hhcmVkJykge1xuICAgICAgY29uc3Qgc29ydGluZ0tleSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdzaGFyZWQuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3NoYXJlZC5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcblxuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmZpbmRTaGFyZWRMaW5rcyh7XG4gICAgICAgICAgZmllbGRzOiBbJ25vZGVJZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRpbmdLZXkpXVxuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydGluZ0tleSwgc29ydGluZ0RpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmoubm9kZUlkKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlID09PSAncmVjZW50LWZpbGVzJykge1xuICAgICAgY29uc3QgcGVyc29uID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldFBlcnNvbignLW1lLScpLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgdXNlcm5hbWUgPSBwZXJzb24uZW50cnkuaWQ7XG4gICAgICBjb25zdCBzb3J0aW5nS2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3JlY2VudC1maWxlcy5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncmVjZW50LWZpbGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuXG4gICAgICBjb25zdCBxdWVyeTogU2VhcmNoUmVxdWVzdCA9IHtcbiAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICBxdWVyeTogJyonLFxuICAgICAgICAgIGxhbmd1YWdlOiAnYWZ0cydcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyUXVlcmllczogW1xuICAgICAgICAgIHsgcXVlcnk6IGBjbTptb2RpZmllZDpbTk9XL0RBWS0zMERBWVMgVE8gTk9XL0RBWSsxREFZXWAgfSxcbiAgICAgICAgICB7IHF1ZXJ5OiBgY206bW9kaWZpZXI6JHt1c2VybmFtZX0gT1IgY206Y3JlYXRvcjoke3VzZXJuYW1lfWAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBxdWVyeTogdGhpcy5yZWNlbnRGaWxlRmlsdGVycy5qb2luKCcgQU5EICcpXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBmaWVsZHM6IFsnaWQnLCB0aGlzLmdldFJvb3RGaWVsZChzb3J0aW5nS2V5KV0sXG4gICAgICAgIGluY2x1ZGU6IFsncGF0aCcsICdwcm9wZXJ0aWVzJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnXSxcbiAgICAgICAgc29ydDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdGSUVMRCcsXG4gICAgICAgICAgICBmaWVsZDogJ2NtOm1vZGlmaWVkJyxcbiAgICAgICAgICAgIGFzY2VuZGluZzogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5zZWFyY2gocXVlcnkpLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbm9kZXMubGlzdC5lbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouZW50cnkpO1xuICAgICAgdGhpcy5zb3J0KGVudHJpZXMsIHNvcnRpbmdLZXksIHNvcnRpbmdEaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcml2YXRlIHNvcnQoaXRlbXM6IGFueVtdLCBrZXk6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkNvbGxhdG9yT3B0aW9ucyA9IHt9O1xuXG4gICAgaWYgKGtleS5pbmNsdWRlcygnc2l6ZUluQnl0ZXMnKSB8fCBrZXkgPT09ICduYW1lJykge1xuICAgICAgb3B0aW9ucy5udW1lcmljID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpdGVtcy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgbGV0IGxlZnQgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShhLCBrZXkpID8/ICcnO1xuICAgICAgbGVmdCA9IGxlZnQgaW5zdGFuY2VvZiBEYXRlID8gbGVmdC52YWx1ZU9mKCkudG9TdHJpbmcoKSA6IGxlZnQudG9TdHJpbmcoKTtcblxuICAgICAgbGV0IHJpZ2h0ID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUoYiwga2V5KSA/PyAnJztcbiAgICAgIHJpZ2h0ID0gcmlnaHQgaW5zdGFuY2VvZiBEYXRlID8gcmlnaHQudmFsdWVPZigpLnRvU3RyaW5nKCkgOiByaWdodC50b1N0cmluZygpO1xuXG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCwgdW5kZWZpbmVkLCBvcHRpb25zKSA6IHJpZ2h0LmxvY2FsZUNvbXBhcmUobGVmdCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJvb3QgZmllbGQgbmFtZSBmcm9tIHRoZSBwcm9wZXJ0eSBwYXRoLlxuICAgKiBFeGFtcGxlOiAncHJvcGVydHkxLnNvbWUuY2hpbGQucHJvcGVydHknID0+ICdwcm9wZXJ0eTEnXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIFByb3BlcnR5IHBhdGhcbiAgICovXG4gIGdldFJvb3RGaWVsZChwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBwcml2YXRlIGdldE5hdmlnYXRpb25Db21tYW5kcyh1cmw6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCB1cmxUcmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCB1cmxTZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBpZiAoIXVybFNlZ21lbnRHcm91cCkge1xuICAgICAgcmV0dXJuIFt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB1cmxTZWdtZW50R3JvdXAuc2VnbWVudHM7XG5cbiAgICByZXR1cm4gdXJsU2VnbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGl0ZW0pIHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0ucGF0aCwgaXRlbS5wYXJhbWV0ZXJzKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncmlnaHRfc2lkZS0taGlkZSc6ICFzaG93UmlnaHRTaWRlXG4gICAgfVwiXG4gICAgW25vZGVJZF09XCJub2RlSWRcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cIm5hdmlnYXRlTXVsdGlwbGVcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dQcmludF09XCJmYWxzZVwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93RG93bmxvYWRdPVwiZmFsc2VcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiZmFsc2VcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgW292ZXJsYXlNb2RlXT1cInRydWVcIlxuICAgIChzaG93Vmlld2VyQ2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9hZGYtdmlld2VyLXNpZGViYXI+XG5cbiAgICA8YWRmLXZpZXdlci1vcGVuLXdpdGggKm5nSWY9XCJvcGVuV2l0aC5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBvcGVuV2l0aDsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbklkXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhci1tZW51LWl0ZW0gW2FjdGlvblJlZl09XCJhY3Rpb25cIj48L2FwcC10b29sYmFyLW1lbnUtaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnMgKm5nSWY9XCIhc2ltcGxlc3RNb2RlXCI+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInZpZXdlclRvb2xiYXJBY3Rpb25zXCI+PC9hY2EtdG9vbGJhcj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -137,7 +137,7 @@ export class AcaViewerComponent {
137
137
  this.route.queryParams.subscribe((params) => {
138
138
  this.navigationPath = params.path || params.location;
139
139
  });
140
- if (this.route.snapshot.data && this.route.snapshot.data.navigateSource) {
140
+ if (this.route.snapshot.data?.navigateSource) {
141
141
  const source = this.route.snapshot.data.navigateSource.toLowerCase();
142
142
  if (this.navigationSources.includes(source)) {
143
143
  this.navigateSource = this.route.snapshot.data.navigateSource;
@@ -183,7 +183,7 @@ export class AcaViewerComponent {
183
183
  this.fileName = this.node.name + this.node?.properties?.['cm:versionLabel'];
184
184
  return;
185
185
  }
186
- if (this.node && this.node.isFile) {
186
+ if (this.node?.isFile) {
187
187
  const nearest = await this.getNearestNodes(this.node.id, this.node.parentId);
188
188
  this.nodeId = this.node.id;
189
189
  this.previousNodeId = nearest.left;
@@ -342,10 +342,8 @@ export class AcaViewerComponent {
342
342
  return path;
343
343
  }
344
344
  handleKeyboardEvent(event) {
345
- const key = event.keyCode;
346
- const rightArrow = 39;
347
- const leftArrow = 37;
348
- if (key === rightArrow || key === leftArrow) {
345
+ const key = event.key;
346
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
349
347
  event.preventDefault();
350
348
  event.stopImmediatePropagation();
351
349
  }
@@ -356,20 +354,10 @@ export class AcaViewerComponent {
356
354
  options.numeric = true;
357
355
  }
358
356
  items.sort((a, b) => {
359
- let left = ObjectUtils.getValue(a, key);
360
- if (left) {
361
- left = left instanceof Date ? left.valueOf().toString() : left.toString();
362
- }
363
- else {
364
- left = '';
365
- }
366
- let right = ObjectUtils.getValue(b, key);
367
- if (right) {
368
- right = right instanceof Date ? right.valueOf().toString() : right.toString();
369
- }
370
- else {
371
- right = '';
372
- }
357
+ let left = ObjectUtils.getValue(a, key) ?? '';
358
+ left = left instanceof Date ? left.valueOf().toString() : left.toString();
359
+ let right = ObjectUtils.getValue(b, key) ?? '';
360
+ right = right instanceof Date ? right.valueOf().toString() : right.toString();
373
361
  return direction === 'asc' ? left.localeCompare(right, undefined, options) : right.localeCompare(left, undefined, options);
374
362
  });
375
363
  }
@@ -400,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
400
388
  type: HostListener,
401
389
  args: ['document:keydown', ['$event']]
402
390
  }] } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBR0wsZUFBZSxFQUNmLGtCQUFrQixFQUVsQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFxQyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FB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QyxPQUFPLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hFLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQy9DO1FBRUQsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBa0I7UUFDaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDOzsrR0E5WlUsa0JBQWtCO21HQUFsQixrQkFBa0IsZ0xDakUvQix3eUNBb0NBLHllRHNCWSxZQUFZLGtaQUFFLFlBQVksd1RBQUUsb0JBQW9CLG1qQkFBRSxtQkFBbUIsdUZBQUUsZUFBZSwrRkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOzJGQU9qSSxrQkFBa0I7a0JBVDlCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsWUFDbkksWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTttWUFzVzdCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICBBcHBIb29rU2VydmljZSxcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG4gIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ2xvc2VQcmV2aWV3QWN0aW9uLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgUmVmcmVzaFByZXZpZXdBY3Rpb24sXG4gIFJlbG9hZERvY3VtZW50TGlzdEFjdGlvbixcbiAgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uLFxuICBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLFxuICBWaWV3ZXJBY3Rpb25UeXBlcyxcbiAgVmlld05vZGVBY3Rpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiwgU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTm9kZSwgU2VhcmNoUmVxdWVzdCwgVmVyc2lvbkVudHJ5LCBWZXJzaW9uc0FwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBBcHBDb25maWdNb2R1bGUsIE9iamVjdFV0aWxzLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIE5vZGVzQXBpU2VydmljZSwgVXBsb2FkU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVmlld2VyTW9kdWxlLCBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgSW5mb0RyYXdlckNvbXBvbmVudCwgQXBwQ29uZmlnTW9kdWxlLCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgbm9kZUlkOiBzdHJpbmcgPSBudWxsO1xuICB2ZXJzaW9uSWQ6IHN0cmluZyA9IG51bGw7XG4gIG5vZGU6IE5vZGU7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uU3RhdGU7XG4gIGluZm9EcmF3ZXJPcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHNob3dSaWdodFNpZGUgPSBmYWxzZTtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICB0b29sYmFyQWN0aW9uczogQ29udGVudEFjdGlvblJlZltdID0gW107XG5cbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIG5leHROb2RlSWQ6IHN0cmluZztcbiAgbmF2aWdhdGVNdWx0aXBsZSA9IHRydWU7XG4gIHJvdXRlc1NraXBOYXZpZ2F0aW9uID0gWydzaGFyZWQnLCAncmVjZW50LWZpbGVzJywgJ2Zhdm9yaXRlcyddO1xuICBuYXZpZ2F0aW9uU291cmNlcyA9IFsnZmF2b3JpdGVzJywgJ2xpYnJhcmllcycsICdwZXJzb25hbC1maWxlcycsICdyZWNlbnQtZmlsZXMnLCAnc2hhcmVkJ107XG4gIHJlY2VudEZpbGVGaWx0ZXJzID0gW1xuICAgICdUWVBFOlwiY29udGVudFwiJyxcbiAgICAnLVBOQU1FOlwiMC93aWtpXCInLFxuICAgICctVFlQRTpcImFwcDpmaWxlbGlua1wiJyxcbiAgICAnLVRZUEU6XCJmbTpwb3N0XCInLFxuICAgICctVFlQRTpcImNtOnRodW1ibmFpbFwiJyxcbiAgICAnLVRZUEU6XCJjbTpmYWlsZWRUaHVtYm5haWxcIicsXG4gICAgJy1UWVBFOlwiY206cmF0aW5nXCInLFxuICAgICctVFlQRTpcImRsOmRhdGFMaXN0XCInLFxuICAgICctVFlQRTpcImRsOnRvZG9MaXN0XCInLFxuICAgICctVFlQRTpcImRsOmlzc3VlXCInLFxuICAgICctVFlQRTpcImRsOmNvbnRhY3RcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRcIicsXG4gICAgJy1UWVBFOlwiZGw6dGFza1wiJyxcbiAgICAnLVRZUEU6XCJkbDpzaW1wbGV0YXNrXCInLFxuICAgICctVFlQRTpcImRsOm1lZXRpbmdBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6bG9jYXRpb25cIicsXG4gICAgJy1UWVBFOlwiZm06dG9waWNcIicsXG4gICAgJy1UWVBFOlwiZm06cG9zdFwiJyxcbiAgICAnLVRZUEU6XCJpYTpjYWxlbmRhckV2ZW50XCInLFxuICAgICctVFlQRTpcImxuazpsaW5rXCInXG4gIF07XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHByZXZpZXdMb2NhdGlvbjogc3RyaW5nO1xuICBwcml2YXRlIGNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbiA9IFsnYWRmLXZpZXdlcl9fc2lkZWJhcicsICdjZGstb3ZlcmxheS1jb250YWluZXInLCAnYWRmLWltYWdlLXZpZXdlciddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBwcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbmZvRHJhd2VyT3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzSW5mb0RyYXdlck9wZW5lZCk7XG5cbiAgICBmcm9tKHRoaXMuaW5mb0RyYXdlck9wZW5lZCQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dSaWdodFNpZGUgPSB2YWw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldFZpZXdlclRvb2xiYXJBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnRvb2xiYXJBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuZm9sZGVySWQgPSBwYXJhbXMuZm9sZGVySWQ7XG4gICAgICBjb25zdCB7IG5vZGVJZCB9ID0gcGFyYW1zO1xuICAgICAgdGhpcy52ZXJzaW9uSWQgPSBwYXJhbXMudmVyc2lvbklkO1xuICAgICAgaWYgKHRoaXMudmVyc2lvbklkKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbnNBcGkuZ2V0VmVyc2lvbihub2RlSWQsIHRoaXMudmVyc2lvbklkKS50aGVuKCh2ZXJzaW9uOiBWZXJzaW9uRW50cnkpID0+IHtcbiAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKHZlcnNpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVJZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlOb2RlKG5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25QYXRoID0gcGFyYW1zLnBhdGggfHwgcGFyYW1zLmxvY2F0aW9uO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YSAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShvZlR5cGU8Q2xvc2VQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5DbG9zZVByZXZpZXcpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbihudWxsKSk7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aW9ucyRcbiAgICAgIC5waXBlKG9mVHlwZTxSZWZyZXNoUHJldmlld0FjdGlvbj4oVmlld2VyQWN0aW9uVHlwZXMuUmVmcmVzaFByZXZpZXcpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbjogUmVmcmVzaFByZXZpZXdBY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5Tm9kZShhY3Rpb24/LnBheWxvYWQ/LmVudHJ5Py5pZCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKSk7XG5cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoZmlsZSkgPT4ge1xuICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dChmaWxlLmRhdGEuZW50cnkpO1xuICAgICAgdGhpcy5kaXNwbGF5Tm9kZShmaWxlLmRhdGEuZW50cnkuaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2aWV3TG9jYXRpb24gPSB0aGlzLnJvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvJywgMSkpLnJlcGxhY2UoL1xcLy9nLCAnJyk7XG4gIH1cblxuICBvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlbG9hZERvY3VtZW50TGlzdEFjdGlvbigpKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbihudWxsKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFja0J5QWN0aW9uSWQoXzogbnVtYmVyLCBvYmo6IENvbnRlbnRBY3Rpb25SZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmouaWQ7XG4gIH1cblxuICBhc3luYyBkaXNwbGF5Tm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIGlmIChub2RlSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubm9kZSA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5nZXROb2RlSW5mbyhub2RlSWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU11bHRpcGxlID0gdGhpcy5leHRlbnNpb25zLmNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKHsgZW50cnk6IHRoaXMubm9kZSB9KTtcbiAgICAgICAgaWYgKCF0aGlzLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5ub2RlLm5hbWUgKyB0aGlzLm5vZGU/LnByb3BlcnRpZXM/LlsnY206dmVyc2lvbkxhYmVsJ107XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuaXNGaWxlKSB7XG4gICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMuZ2V0TmVhcmVzdE5vZGVzKHRoaXMubm9kZS5pZCwgdGhpcy5ub2RlLnBhcmVudElkKTtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzTm9kZUlkID0gbmVhcmVzdC5sZWZ0O1xuICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMubm9kZS5uYW1lICsgdGhpcy5ub2RlPy5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IEpTT04ucGFyc2UoZXJyb3IubWVzc2FnZSkuZXJyb3Iuc3RhdHVzQ29kZTtcblxuICAgICAgICBpZiAoc3RhdHVzQ29kZSAhPT0gNDAxKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCB7IG91dGxldHM6IHsgdmlld2VyOiBudWxsIH0gfV0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBub2RlSWRdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMucHJldmlvdXNOb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMubmV4dE5vZGVJZCwgeyBsb2NhdGlvbiB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIG5lYXJlc3Qgbm9kZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIG5vZGUgYW5kIGZvbGRlci5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZG9jdW1lbnQgbm9kZVxuICAgKiBAcGFyYW0gZm9sZGVySWQgVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbnRhaW5pbmcgZm9sZGVyIG5vZGUuXG4gICAqL1xuICBhc3luYyBnZXROZWFyZXN0Tm9kZXMobm9kZUlkOiBzdHJpbmcsIGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPHsgbGVmdDogc3RyaW5nOyByaWdodDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBlbXB0eSA9IHtcbiAgICAgIGxlZnQ6IG51bGwsXG4gICAgICByaWdodDogbnVsbFxuICAgIH07XG5cbiAgICBpZiAobm9kZUlkICYmIGZvbGRlcklkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpZHMgPSBhd2FpdCB0aGlzLmdldEZpbGVJZHModGhpcy5uYXZpZ2F0ZVNvdXJjZSwgZm9sZGVySWQpO1xuICAgICAgICBjb25zdCBpZHggPSBpZHMuaW5kZXhPZihub2RlSWQpO1xuXG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiBpZHNbaWR4IC0gMV0gfHwgbnVsbCxcbiAgICAgICAgICAgIHJpZ2h0OiBpZHNbaWR4ICsgMV0gfHwgbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygbm9kZSBpZGVudGlmaWVycyBmb3IgdGhlIGZvbGRlciBhbmQgZGF0YSBzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgRGF0YSBzb3VyY2UgbmFtZS4gQWxsb3dlZCB2YWx1ZXMgYXJlOiBwZXJzb25hbC1maWxlcywgbGlicmFyaWVzLCBmYXZvcml0ZXMsIHNoYXJlZCwgcmVjZW50LWZpbGVzLlxuICAgKiBAcGFyYW0gZm9sZGVySWQgQ29udGFpbmluZyBmb2xkZXIgbm9kZSBpZGVudGlmaWVyIGZvciAncGVyc29uYWwtZmlsZXMnIGFuZCAnbGlicmFyaWVzJyBzb3VyY2VzLlxuICAgKi9cbiAgYXN5bmMgZ2V0RmlsZUlkcyhzb3VyY2U6IHN0cmluZywgZm9sZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKChzb3VyY2UgPT09ICdwZXJzb25hbC1maWxlcycgfHwgc291cmNlID09PSAnbGlicmFyaWVzJykgJiYgZm9sZGVySWQpIHtcbiAgICAgIGNvbnN0IHNvcnRLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncGVyc29uYWwtZmlsZXMuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3BlcnNvbmFsLWZpbGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmdldE5vZGVDaGlsZHJlbihmb2xkZXJJZCwge1xuICAgICAgICAgIC8vIG9yZGVyQnk6IGAke3NvcnRLZXl9ICR7c29ydERpcmVjdGlvbn1gLFxuICAgICAgICAgIGZpZWxkczogWydpZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRLZXkpXSxcbiAgICAgICAgICB3aGVyZTogJyhpc0ZpbGU9dHJ1ZSknXG4gICAgICAgIH0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3QgZW50cmllcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5KTtcbiAgICAgIHRoaXMuc29ydChlbnRyaWVzLCBzb3J0S2V5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKChvYmopID0+IG9iai5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSA9PT0gJ2Zhdm9yaXRlcycpIHtcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpXG4gICAgICAgIC5nZXRGYXZvcml0ZXMoJy1tZS0nLCB7XG4gICAgICAgICAgd2hlcmU6ICcoRVhJU1RTKHRhcmdldC9maWxlKSknLFxuICAgICAgICAgIGZpZWxkczogWyd0YXJnZXQnXVxuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IHNvcnRLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnZmF2b3JpdGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdmYXZvcml0ZXMuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG4gICAgICBjb25zdCBmaWxlcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5LnRhcmdldC5maWxlKTtcbiAgICAgIHRoaXMuc29ydChmaWxlcywgc29ydEtleSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBmaWxlcy5tYXAoKGYpID0+IGYuaWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdzaGFyZWQnKSB7XG4gICAgICBjb25zdCBzb3J0aW5nS2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3NoYXJlZC5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnc2hhcmVkLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuXG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaVxuICAgICAgICAuZmluZFNoYXJlZExpbmtzKHtcbiAgICAgICAgICBmaWVsZHM6IFsnbm9kZUlkJywgdGhpcy5nZXRSb290RmllbGQoc29ydGluZ0tleSldXG4gICAgICAgIH0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3QgZW50cmllcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5KTtcbiAgICAgIHRoaXMuc29ydChlbnRyaWVzLCBzb3J0aW5nS2V5LCBzb3J0aW5nRGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKChvYmopID0+IG9iai5ub2RlSWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdyZWNlbnQtZmlsZXMnKSB7XG4gICAgICBjb25zdCBwZXJzb24gPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0UGVyc29uKCctbWUtJykudG9Qcm9taXNlKCk7XG4gICAgICBjb25zdCB1c2VybmFtZSA9IHBlcnNvbi5lbnRyeS5pZDtcbiAgICAgIGNvbnN0IHNvcnRpbmdLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncmVjZW50LWZpbGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdyZWNlbnQtZmlsZXMuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG5cbiAgICAgIGNvbnN0IHF1ZXJ5OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIHF1ZXJ5OiAnKicsXG4gICAgICAgICAgbGFuZ3VhZ2U6ICdhZnRzJ1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJRdWVyaWVzOiBbXG4gICAgICAgICAgeyBxdWVyeTogYGNtOm1vZGlmaWVkOltOT1cvREFZLTMwREFZUyBUTyBOT1cvREFZKzFEQVldYCB9LFxuICAgICAgICAgIHsgcXVlcnk6IGBjbTptb2RpZmllcjoke3VzZXJuYW1lfSBPUiBjbTpjcmVhdG9yOiR7dXNlcm5hbWV9YCB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnJlY2VudEZpbGVGaWx0ZXJzLmpvaW4oJyBBTkQgJylcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGZpZWxkczogWydpZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRpbmdLZXkpXSxcbiAgICAgICAgaW5jbHVkZTogWydwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucyddLFxuICAgICAgICBzb3J0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ0ZJRUxEJyxcbiAgICAgICAgICAgIGZpZWxkOiAnY206bW9kaWZpZWQnLFxuICAgICAgICAgICAgYXNjZW5kaW5nOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLnNlYXJjaChxdWVyeSkudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydGluZ0tleSwgc29ydGluZ0RpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouaWQpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJvb3QgZmllbGQgbmFtZSBmcm9tIHRoZSBwcm9wZXJ0eSBwYXRoLlxuICAgKiBFeGFtcGxlOiAncHJvcGVydHkxLnNvbWUuY2hpbGQucHJvcGVydHknID0+ICdwcm9wZXJ0eTEnXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIFByb3BlcnR5IHBhdGhcbiAgICovXG4gIGdldFJvb3RGaWVsZChwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgcmlnaHRBcnJvdyA9IDM5O1xuICAgIGNvbnN0IGxlZnRBcnJvdyA9IDM3O1xuXG4gICAgaWYgKGtleSA9PT0gcmlnaHRBcnJvdyB8fCBrZXkgPT09IGxlZnRBcnJvdykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydChpdGVtczogYW55W10sIGtleTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuQ29sbGF0b3JPcHRpb25zID0ge307XG5cbiAgICBpZiAoa2V5LmluY2x1ZGVzKCdzaXplSW5CeXRlcycpIHx8IGtleSA9PT0gJ25hbWUnKSB7XG4gICAgICBvcHRpb25zLm51bWVyaWMgPSB0cnVlO1xuICAgIH1cblxuICAgIGl0ZW1zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICBsZXQgbGVmdCA9IE9iamVjdFV0aWxzLmdldFZhbHVlKGEsIGtleSk7XG4gICAgICBpZiAobGVmdCkge1xuICAgICAgICBsZWZ0ID0gbGVmdCBpbnN0YW5jZW9mIERhdGUgPyBsZWZ0LnZhbHVlT2YoKS50b1N0cmluZygpIDogbGVmdC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmlnaHQgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShiLCBrZXkpO1xuICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgIHJpZ2h0ID0gcmlnaHQgaW5zdGFuY2VvZiBEYXRlID8gcmlnaHQudmFsdWVPZigpLnRvU3RyaW5nKCkgOiByaWdodC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmlnaHQgPSAnJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBsZWZ0LmxvY2FsZUNvbXBhcmUocmlnaHQsIHVuZGVmaW5lZCwgb3B0aW9ucykgOiByaWdodC5sb2NhbGVDb21wYXJlKGxlZnQsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlTG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uUGF0aCB8fCB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE5hdmlnYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICF0aGlzLmlzQ2hpbGQoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KSkge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiAhIWN1cnJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NoaWxkKGxpc3Q6IERPTVRva2VuTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGxpc3QpLnNvbWUoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB0aGlzLmNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyhjbGFzc05hbWUpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVJZFwiPlxuICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdyaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbWF4UmV0cmllc109XCIndmlld2VyLm1heFJldHJpZXMnIHwgYWRmQXBwQ29uZmlnXCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW3ZlcnNpb25JZF09XCJ2ZXJzaW9uSWRcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cIm5hdmlnYXRlTXVsdGlwbGVcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dQcmludF09XCJmYWxzZVwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93RG93bmxvYWRdPVwiZmFsc2VcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiZmFsc2VcIlxuICAgIFtvdmVybGF5TW9kZV09XCJ0cnVlXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKClcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9hZGYtdmlld2VyLXNpZGViYXI+XG5cbiAgICA8YWRmLXZpZXdlci1vcGVuLXdpdGggKm5nSWY9XCJvcGVuV2l0aC5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBvcGVuV2l0aDsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbklkXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhci1tZW51LWl0ZW0gW2FjdGlvblJlZl09XCJhY3Rpb25cIj48L2FwcC10b29sYmFyLW1lbnUtaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInRvb2xiYXJBY3Rpb25zXCI+PC9hY2EtdG9vbGJhcj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBR0wsZUFBZSxFQUNmLGtCQUFrQixFQUVsQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFxQyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FB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QUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDOzsrR0FwWlUsa0JBQWtCO21HQUFsQixrQkFBa0IsZ0xDakUvQix3eUNBb0NBLHllRHNCWSxZQUFZLGtaQUFFLFlBQVksd1RBQUUsb0JBQW9CLG1qQkFBRSxtQkFBbUIsdUZBQUUsZUFBZSwrRkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOzJGQU9qSSxrQkFBa0I7a0JBVDlCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsWUFDbkksWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTttWUFzVzdCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICBBcHBIb29rU2VydmljZSxcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG4gIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ2xvc2VQcmV2aWV3QWN0aW9uLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgUmVmcmVzaFByZXZpZXdBY3Rpb24sXG4gIFJlbG9hZERvY3VtZW50TGlzdEFjdGlvbixcbiAgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uLFxuICBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLFxuICBWaWV3ZXJBY3Rpb25UeXBlcyxcbiAgVmlld05vZGVBY3Rpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiwgU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTm9kZSwgU2VhcmNoUmVxdWVzdCwgVmVyc2lvbkVudHJ5LCBWZXJzaW9uc0FwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBBcHBDb25maWdNb2R1bGUsIE9iamVjdFV0aWxzLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIE5vZGVzQXBpU2VydmljZSwgVXBsb2FkU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVmlld2VyTW9kdWxlLCBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgSW5mb0RyYXdlckNvbXBvbmVudCwgQXBwQ29uZmlnTW9kdWxlLCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgbm9kZUlkOiBzdHJpbmcgPSBudWxsO1xuICB2ZXJzaW9uSWQ6IHN0cmluZyA9IG51bGw7XG4gIG5vZGU6IE5vZGU7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uU3RhdGU7XG4gIGluZm9EcmF3ZXJPcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHNob3dSaWdodFNpZGUgPSBmYWxzZTtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICB0b29sYmFyQWN0aW9uczogQ29udGVudEFjdGlvblJlZltdID0gW107XG5cbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIG5leHROb2RlSWQ6IHN0cmluZztcbiAgbmF2aWdhdGVNdWx0aXBsZSA9IHRydWU7XG4gIHJvdXRlc1NraXBOYXZpZ2F0aW9uID0gWydzaGFyZWQnLCAncmVjZW50LWZpbGVzJywgJ2Zhdm9yaXRlcyddO1xuICBuYXZpZ2F0aW9uU291cmNlcyA9IFsnZmF2b3JpdGVzJywgJ2xpYnJhcmllcycsICdwZXJzb25hbC1maWxlcycsICdyZWNlbnQtZmlsZXMnLCAnc2hhcmVkJ107XG4gIHJlY2VudEZpbGVGaWx0ZXJzID0gW1xuICAgICdUWVBFOlwiY29udGVudFwiJyxcbiAgICAnLVBOQU1FOlwiMC93aWtpXCInLFxuICAgICctVFlQRTpcImFwcDpmaWxlbGlua1wiJyxcbiAgICAnLVRZUEU6XCJmbTpwb3N0XCInLFxuICAgICctVFlQRTpcImNtOnRodW1ibmFpbFwiJyxcbiAgICAnLVRZUEU6XCJjbTpmYWlsZWRUaHVtYm5haWxcIicsXG4gICAgJy1UWVBFOlwiY206cmF0aW5nXCInLFxuICAgICctVFlQRTpcImRsOmRhdGFMaXN0XCInLFxuICAgICctVFlQRTpcImRsOnRvZG9MaXN0XCInLFxuICAgICctVFlQRTpcImRsOmlzc3VlXCInLFxuICAgICctVFlQRTpcImRsOmNvbnRhY3RcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRcIicsXG4gICAgJy1UWVBFOlwiZGw6dGFza1wiJyxcbiAgICAnLVRZUEU6XCJkbDpzaW1wbGV0YXNrXCInLFxuICAgICctVFlQRTpcImRsOm1lZXRpbmdBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6bG9jYXRpb25cIicsXG4gICAgJy1UWVBFOlwiZm06dG9waWNcIicsXG4gICAgJy1UWVBFOlwiZm06cG9zdFwiJyxcbiAgICAnLVRZUEU6XCJpYTpjYWxlbmRhckV2ZW50XCInLFxuICAgICctVFlQRTpcImxuazpsaW5rXCInXG4gIF07XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHByZXZpZXdMb2NhdGlvbjogc3RyaW5nO1xuICBwcml2YXRlIGNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbiA9IFsnYWRmLXZpZXdlcl9fc2lkZWJhcicsICdjZGstb3ZlcmxheS1jb250YWluZXInLCAnYWRmLWltYWdlLXZpZXdlciddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBwcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbmZvRHJhd2VyT3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzSW5mb0RyYXdlck9wZW5lZCk7XG5cbiAgICBmcm9tKHRoaXMuaW5mb0RyYXdlck9wZW5lZCQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dSaWdodFNpZGUgPSB2YWw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldFZpZXdlclRvb2xiYXJBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnRvb2xiYXJBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuZm9sZGVySWQgPSBwYXJhbXMuZm9sZGVySWQ7XG4gICAgICBjb25zdCB7IG5vZGVJZCB9ID0gcGFyYW1zO1xuICAgICAgdGhpcy52ZXJzaW9uSWQgPSBwYXJhbXMudmVyc2lvbklkO1xuICAgICAgaWYgKHRoaXMudmVyc2lvbklkKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbnNBcGkuZ2V0VmVyc2lvbihub2RlSWQsIHRoaXMudmVyc2lvbklkKS50aGVuKCh2ZXJzaW9uOiBWZXJzaW9uRW50cnkpID0+IHtcbiAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKHZlcnNpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVJZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlOb2RlKG5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25QYXRoID0gcGFyYW1zLnBhdGggfHwgcGFyYW1zLmxvY2F0aW9uO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YT8ubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShvZlR5cGU8Q2xvc2VQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5DbG9zZVByZXZpZXcpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbihudWxsKSk7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aW9ucyRcbiAgICAgIC5waXBlKG9mVHlwZTxSZWZyZXNoUHJldmlld0FjdGlvbj4oVmlld2VyQWN0aW9uVHlwZXMuUmVmcmVzaFByZXZpZXcpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbjogUmVmcmVzaFByZXZpZXdBY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5Tm9kZShhY3Rpb24/LnBheWxvYWQ/LmVudHJ5Py5pZCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKSk7XG5cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoZmlsZSkgPT4ge1xuICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dChmaWxlLmRhdGEuZW50cnkpO1xuICAgICAgdGhpcy5kaXNwbGF5Tm9kZShmaWxlLmRhdGEuZW50cnkuaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2aWV3TG9jYXRpb24gPSB0aGlzLnJvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvJywgMSkpLnJlcGxhY2UoL1xcLy9nLCAnJyk7XG4gIH1cblxuICBvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlbG9hZERvY3VtZW50TGlzdEFjdGlvbigpKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbihudWxsKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFja0J5QWN0aW9uSWQoXzogbnVtYmVyLCBvYmo6IENvbnRlbnRBY3Rpb25SZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmouaWQ7XG4gIH1cblxuICBhc3luYyBkaXNwbGF5Tm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIGlmIChub2RlSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubm9kZSA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5nZXROb2RlSW5mbyhub2RlSWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU11bHRpcGxlID0gdGhpcy5leHRlbnNpb25zLmNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKHsgZW50cnk6IHRoaXMubm9kZSB9KTtcbiAgICAgICAgaWYgKCF0aGlzLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5ub2RlLm5hbWUgKyB0aGlzLm5vZGU/LnByb3BlcnRpZXM/LlsnY206dmVyc2lvbkxhYmVsJ107XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMuZ2V0TmVhcmVzdE5vZGVzKHRoaXMubm9kZS5pZCwgdGhpcy5ub2RlLnBhcmVudElkKTtcbiAgICAgICAgICB0aGlzLm5vZGVJZCA9IHRoaXMubm9kZS5pZDtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzTm9kZUlkID0gbmVhcmVzdC5sZWZ0O1xuICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMubm9kZS5uYW1lICsgdGhpcy5ub2RlPy5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IEpTT04ucGFyc2UoZXJyb3IubWVzc2FnZSkuZXJyb3Iuc3RhdHVzQ29kZTtcblxuICAgICAgICBpZiAoc3RhdHVzQ29kZSAhPT0gNDAxKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCB7IG91dGxldHM6IHsgdmlld2VyOiBudWxsIH0gfV0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBub2RlSWRdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMucHJldmlvdXNOb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFZpZXdOb2RlQWN0aW9uKHRoaXMubmV4dE5vZGVJZCwgeyBsb2NhdGlvbiB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIG5lYXJlc3Qgbm9kZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIG5vZGUgYW5kIGZvbGRlci5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZG9jdW1lbnQgbm9kZVxuICAgKiBAcGFyYW0gZm9sZGVySWQgVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbnRhaW5pbmcgZm9sZGVyIG5vZGUuXG4gICAqL1xuICBhc3luYyBnZXROZWFyZXN0Tm9kZXMobm9kZUlkOiBzdHJpbmcsIGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPHsgbGVmdDogc3RyaW5nOyByaWdodDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBlbXB0eSA9IHtcbiAgICAgIGxlZnQ6IG51bGwsXG4gICAgICByaWdodDogbnVsbFxuICAgIH07XG5cbiAgICBpZiAobm9kZUlkICYmIGZvbGRlcklkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpZHMgPSBhd2FpdCB0aGlzLmdldEZpbGVJZHModGhpcy5uYXZpZ2F0ZVNvdXJjZSwgZm9sZGVySWQpO1xuICAgICAgICBjb25zdCBpZHggPSBpZHMuaW5kZXhPZihub2RlSWQpO1xuXG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiBpZHNbaWR4IC0gMV0gfHwgbnVsbCxcbiAgICAgICAgICAgIHJpZ2h0OiBpZHNbaWR4ICsgMV0gfHwgbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygbm9kZSBpZGVudGlmaWVycyBmb3IgdGhlIGZvbGRlciBhbmQgZGF0YSBzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgRGF0YSBzb3VyY2UgbmFtZS4gQWxsb3dlZCB2YWx1ZXMgYXJlOiBwZXJzb25hbC1maWxlcywgbGlicmFyaWVzLCBmYXZvcml0ZXMsIHNoYXJlZCwgcmVjZW50LWZpbGVzLlxuICAgKiBAcGFyYW0gZm9sZGVySWQgQ29udGFpbmluZyBmb2xkZXIgbm9kZSBpZGVudGlmaWVyIGZvciAncGVyc29uYWwtZmlsZXMnIGFuZCAnbGlicmFyaWVzJyBzb3VyY2VzLlxuICAgKi9cbiAgYXN5bmMgZ2V0RmlsZUlkcyhzb3VyY2U6IHN0cmluZywgZm9sZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKChzb3VyY2UgPT09ICdwZXJzb25hbC1maWxlcycgfHwgc291cmNlID09PSAnbGlicmFyaWVzJykgJiYgZm9sZGVySWQpIHtcbiAgICAgIGNvbnN0IHNvcnRLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncGVyc29uYWwtZmlsZXMuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3BlcnNvbmFsLWZpbGVzLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmdldE5vZGVDaGlsZHJlbihmb2xkZXJJZCwge1xuICAgICAgICAgIC8vIG9yZGVyQnk6IGAke3NvcnRLZXl9ICR7c29ydERpcmVjdGlvbn1gLFxuICAgICAgICAgIGZpZWxkczogWydpZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRLZXkpXSxcbiAgICAgICAgICB3aGVyZTogJyhpc0ZpbGU9dHJ1ZSknXG4gICAgICAgIH0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3QgZW50cmllcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5KTtcbiAgICAgIHRoaXMuc29ydChlbnRyaWVzLCBzb3J0S2V5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKChvYmopID0+IG9iai5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSA9PT0gJ2Zhdm9yaXRlcycpIHtcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpXG4gICAgICAgIC5nZXRGYXZvcml0ZXMoJy1tZS0nLCB7XG4gICAgICAgICAgd2hlcmU6ICcoRVhJU1RTKHRhcmdldC9maWxlKSknLFxuICAgICAgICAgIGZpZWxkczogWyd0YXJnZXQnXVxuICAgICAgICB9KVxuICAgICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IHNvcnRLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnZmF2b3JpdGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdmYXZvcml0ZXMuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG4gICAgICBjb25zdCBmaWxlcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5LnRhcmdldC5maWxlKTtcbiAgICAgIHRoaXMuc29ydChmaWxlcywgc29ydEtleSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBmaWxlcy5tYXAoKGYpID0+IGYuaWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdzaGFyZWQnKSB7XG4gICAgICBjb25zdCBzb3J0aW5nS2V5ID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3NoYXJlZC5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnc2hhcmVkLnNvcnRpbmcuZGlyZWN0aW9uJykgfHwgJ2Rlc2MnO1xuXG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaVxuICAgICAgICAuZmluZFNoYXJlZExpbmtzKHtcbiAgICAgICAgICBmaWVsZHM6IFsnbm9kZUlkJywgdGhpcy5nZXRSb290RmllbGQoc29ydGluZ0tleSldXG4gICAgICAgIH0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3QgZW50cmllcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5KTtcbiAgICAgIHRoaXMuc29ydChlbnRyaWVzLCBzb3J0aW5nS2V5LCBzb3J0aW5nRGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKChvYmopID0+IG9iai5ub2RlSWQpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgPT09ICdyZWNlbnQtZmlsZXMnKSB7XG4gICAgICBjb25zdCBwZXJzb24gPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0UGVyc29uKCctbWUtJykudG9Qcm9taXNlKCk7XG4gICAgICBjb25zdCB1c2VybmFtZSA9IHBlcnNvbi5lbnRyeS5pZDtcbiAgICAgIGNvbnN0IHNvcnRpbmdLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncmVjZW50LWZpbGVzLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdyZWNlbnQtZmlsZXMuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG5cbiAgICAgIGNvbnN0IHF1ZXJ5OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIHF1ZXJ5OiAnKicsXG4gICAgICAgICAgbGFuZ3VhZ2U6ICdhZnRzJ1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJRdWVyaWVzOiBbXG4gICAgICAgICAgeyBxdWVyeTogYGNtOm1vZGlmaWVkOltOT1cvREFZLTMwREFZUyBUTyBOT1cvREFZKzFEQVldYCB9LFxuICAgICAgICAgIHsgcXVlcnk6IGBjbTptb2RpZmllcjoke3VzZXJuYW1lfSBPUiBjbTpjcmVhdG9yOiR7dXNlcm5hbWV9YCB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnJlY2VudEZpbGVGaWx0ZXJzLmpvaW4oJyBBTkQgJylcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGZpZWxkczogWydpZCcsIHRoaXMuZ2V0Um9vdEZpZWxkKHNvcnRpbmdLZXkpXSxcbiAgICAgICAgaW5jbHVkZTogWydwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucyddLFxuICAgICAgICBzb3J0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ0ZJRUxEJyxcbiAgICAgICAgICAgIGZpZWxkOiAnY206bW9kaWZpZWQnLFxuICAgICAgICAgICAgYXNjZW5kaW5nOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLnNlYXJjaChxdWVyeSkudG9Qcm9taXNlKCk7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBub2Rlcy5saXN0LmVudHJpZXMubWFwKChvYmopID0+IG9iai5lbnRyeSk7XG4gICAgICB0aGlzLnNvcnQoZW50cmllcywgc29ydGluZ0tleSwgc29ydGluZ0RpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiBlbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouaWQpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJvb3QgZmllbGQgbmFtZSBmcm9tIHRoZSBwcm9wZXJ0eSBwYXRoLlxuICAgKiBFeGFtcGxlOiAncHJvcGVydHkxLnNvbWUuY2hpbGQucHJvcGVydHknID0+ICdwcm9wZXJ0eTEnXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIFByb3BlcnR5IHBhdGhcbiAgICovXG4gIGdldFJvb3RGaWVsZChwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcblxuICAgIGlmIChrZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBrZXkgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0KGl0ZW1zOiBhbnlbXSwga2V5OiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50bC5Db2xsYXRvck9wdGlvbnMgPSB7fTtcblxuICAgIGlmIChrZXkuaW5jbHVkZXMoJ3NpemVJbkJ5dGVzJykgfHwga2V5ID09PSAnbmFtZScpIHtcbiAgICAgIG9wdGlvbnMubnVtZXJpYyA9IHRydWU7XG4gICAgfVxuXG4gICAgaXRlbXMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgIGxldCBsZWZ0ID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUoYSwga2V5KSA/PyAnJztcbiAgICAgIGxlZnQgPSBsZWZ0IGluc3RhbmNlb2YgRGF0ZSA/IGxlZnQudmFsdWVPZigpLnRvU3RyaW5nKCkgOiBsZWZ0LnRvU3RyaW5nKCk7XG5cbiAgICAgIGxldCByaWdodCA9IE9iamVjdFV0aWxzLmdldFZhbHVlKGIsIGtleSkgPz8gJyc7XG4gICAgICByaWdodCA9IHJpZ2h0IGluc3RhbmNlb2YgRGF0ZSA/IHJpZ2h0LnZhbHVlT2YoKS50b1N0cmluZygpIDogcmlnaHQudG9TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBsZWZ0LmxvY2FsZUNvbXBhcmUocmlnaHQsIHVuZGVmaW5lZCwgb3B0aW9ucykgOiByaWdodC5sb2NhbGVDb21wYXJlKGxlZnQsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9GaWxlTG9jYXRpb24oKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmdldEZpbGVMb2NhdGlvbigpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlTG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uUGF0aCB8fCB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE5hdmlnYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICF0aGlzLmlzQ2hpbGQoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KSkge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiAhIWN1cnJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NoaWxkKGxpc3Q6IERPTVRva2VuTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGxpc3QpLnNvbWUoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB0aGlzLmNvbnRhaW5lcnNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyhjbGFzc05hbWUpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVJZFwiPlxuICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdyaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbWF4UmV0cmllc109XCIndmlld2VyLm1heFJldHJpZXMnIHwgYWRmQXBwQ29uZmlnXCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW3ZlcnNpb25JZF09XCJ2ZXJzaW9uSWRcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cIm5hdmlnYXRlTXVsdGlwbGVcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dQcmludF09XCJmYWxzZVwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93RG93bmxvYWRdPVwiZmFsc2VcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiZmFsc2VcIlxuICAgIFtvdmVybGF5TW9kZV09XCJ0cnVlXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKClcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9hZGYtdmlld2VyLXNpZGViYXI+XG5cbiAgICA8YWRmLXZpZXdlci1vcGVuLXdpdGggKm5nSWY9XCJvcGVuV2l0aC5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBvcGVuV2l0aDsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbklkXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhci1tZW51LWl0ZW0gW2FjdGlvblJlZl09XCJhY3Rpb25cIj48L2FwcC10b29sYmFyLW1lbnUtaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInRvb2xiYXJBY3Rpb25zXCI+PC9hY2EtdG9vbGJhcj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1102,13 +1102,7 @@ class RuleActionUiComponent {
1102
1102
  var _a, _b;
1103
1103
  this.parameters = {};
1104
1104
  ((_b = (_a = this.selectedActionDefinition) === null || _a === void 0 ? void 0 : _a.parameterDefinitions) !== null && _b !== void 0 ? _b : []).forEach((paramDef) => {
1105
- switch (paramDef.type) {
1106
- case 'd:boolean':
1107
- this.parameters[paramDef.name] = false;
1108
- break;
1109
- default:
1110
- this.parameters[paramDef.name] = '';
1111
- }
1105
+ this.parameters[paramDef.name] = paramDef.type === 'd:boolean' ? false : '';
1112
1106
  });
1113
1107
  }
1114
1108
  setDisabledState(isDisabled) {