valtech-components 2.0.993 → 2.0.995

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.
@@ -26,6 +26,7 @@ import { EditOrgModalComponent } from '../edit-org-modal/edit-org-modal.componen
26
26
  import { InviteMemberModalComponent } from '../invite-member-modal/invite-member-modal.component';
27
27
  import { MemberDetailModalComponent } from '../member-detail-modal/member-detail-modal.component';
28
28
  import { TransferOwnershipModalComponent } from '../transfer-ownership-modal/transfer-ownership-modal.component';
29
+ import { MemberImportModalComponent } from '../member-import-modal/member-import-modal.component';
29
30
  import { ORGANIZATION_VIEW_I18N } from './organization-view.i18n';
30
31
  import * as i0 from "@angular/core";
31
32
  const DEFAULT_NAMESPACE = 'Settings.Organization';
@@ -117,6 +118,22 @@ export class OrganizationViewComponent {
117
118
  this.members = signal([]);
118
119
  this.membersLoading = signal(false);
119
120
  this.membersLoadError = signal(null);
121
+ this.membersErrorState = computed(() => {
122
+ this.i18n.lang();
123
+ const err = this.membersLoadError();
124
+ if (!err)
125
+ return null;
126
+ return createErrorStateProps(err, {
127
+ title: { offline: this.tt('offlineTitle'), error: this.tt('errorTitle') },
128
+ description: {
129
+ offline: this.tt('offlineHint'),
130
+ error: interpretError(err).message,
131
+ },
132
+ retryLabel: this.tt('retry'),
133
+ onRetry: () => this.loadMembers(),
134
+ retrying: this.membersLoading(),
135
+ });
136
+ });
120
137
  this.membersNextToken = signal(null);
121
138
  this.loadingMoreMembers = signal(false);
122
139
  this.showAllMembers = signal(false);
@@ -203,6 +220,14 @@ export class OrganizationViewComponent {
203
220
  shape: 'round',
204
221
  type: 'button',
205
222
  }));
223
+ this.openImportButtonProps = computed(() => ({
224
+ text: this.tt('importOpen'),
225
+ color: 'dark',
226
+ fill: 'outline',
227
+ size: 'default',
228
+ shape: 'round',
229
+ type: 'button',
230
+ }));
206
231
  /** Guarda para detectar el primer disparo del effect (evita doble carga). */
207
232
  this.lastLoadedOrgId = null;
208
233
  const ns = this.ns;
@@ -303,6 +328,25 @@ export class OrganizationViewComponent {
303
328
  backdropDismiss: true,
304
329
  });
305
330
  }
331
+ onOpenImport() {
332
+ void this.modalService.open({
333
+ component: MemberImportModalComponent,
334
+ componentProps: {
335
+ orgId: this.activeOrgId(),
336
+ availableRoles: this.availableRoles().map(r => r.name),
337
+ onSuccess: () => {
338
+ this.loadMembers();
339
+ this.resolvedConfig().onMemberInvited?.();
340
+ },
341
+ },
342
+ breakpoints: {
343
+ breakpoints: [0, 0.92],
344
+ initialBreakpoint: 0.92,
345
+ showHandle: true,
346
+ },
347
+ backdropDismiss: true,
348
+ });
349
+ }
306
350
  onViewPermissions() {
307
351
  this.nav.navigateByUrl(this.resolvedConfig().viewPermissionsRoute);
308
352
  }
@@ -384,6 +428,7 @@ export class OrganizationViewComponent {
384
428
  if (!orgId)
385
429
  return Promise.resolve();
386
430
  this.membersLoading.set(true);
431
+ this.membersLoadError.set(null);
387
432
  this.membersNextToken.set(null);
388
433
  this.showAllMembers.set(false);
389
434
  return new Promise(resolve => {
@@ -594,6 +639,8 @@ export class OrganizationViewComponent {
594
639
  <div class="section-body">
595
640
  @if (membersLoading()) {
596
641
  <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
642
+ } @else if (membersErrorState()) {
643
+ <val-empty-state [props]="membersErrorState()!" />
597
644
  } @else if (members().length === 0) {
598
645
  <val-text
599
646
  [props]="{
@@ -686,6 +733,7 @@ export class OrganizationViewComponent {
686
733
  />
687
734
  </div>
688
735
  <val-button [props]="openInviteButtonProps()" (click)="onOpenInvite()" />
736
+ <val-button [props]="openImportButtonProps()" (click)="onOpenImport()" />
689
737
  </div>
690
738
  </section>
691
739
  }
@@ -794,6 +842,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
794
842
  ButtonComponent,
795
843
  MemberCardComponent,
796
844
  TransferOwnershipModalComponent,
845
+ MemberImportModalComponent,
797
846
  ], template: `
798
847
  <div class="page">
799
848
  <header class="page-header">
@@ -872,6 +921,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
872
921
  <div class="section-body">
873
922
  @if (membersLoading()) {
874
923
  <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
924
+ } @else if (membersErrorState()) {
925
+ <val-empty-state [props]="membersErrorState()!" />
875
926
  } @else if (members().length === 0) {
876
927
  <val-text
877
928
  [props]="{
@@ -964,6 +1015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
964
1015
  />
965
1016
  </div>
966
1017
  <val-button [props]="openInviteButtonProps()" (click)="onOpenInvite()" />
1018
+ <val-button [props]="openImportButtonProps()" (click)="onOpenImport()" />
967
1019
  </div>
968
1020
  </section>
969
1021
  }
@@ -1062,4 +1114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1062
1114
  }], ctorParameters: () => [], propDecorators: { config: [{
1063
1115
  type: Input
1064
1116
  }] } });
1065
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmdhbml6YXRpb24tdmlldy9vcmdhbml6YXRpb24tdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RixP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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3UVQseStFQWxSQyxnQkFBZ0IsMkVBQ2hCLG1CQUFtQiwrRUFDbkIsc0JBQXNCLDZGQUN0Qix1QkFBdUIsbUZBQ3ZCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLG1CQUFtQjs7NEZBNGFWLHlCQUF5QjtrQkF2YnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsK0JBQStCO3FCQUNoQyxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3UVQ7d0RBb0xRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgaXNEZXZNb2RlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmUsIGRvYywgZ2V0RG9jIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZW1iZXItY2FyZC9tZW1iZXItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9oYXMtcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnTWVtYmVyLCBPcmdSb2xlLCBPcmdhbml6YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRWRpdE9yZ01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZWRpdC1vcmctbW9kYWwvZWRpdC1vcmctbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEludml0ZU1lbWJlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW52aXRlLW1lbWJlci1tb2RhbC9pbnZpdGUtbWVtYmVyLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW1iZXJEZXRhaWxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVtYmVyRGV0YWlsIH0gZnJvbSAnLi4vbWVtYmVyLWRldGFpbC1tb2RhbC90eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHJhbnNmZXItb3duZXJzaGlwLW1vZGFsL3RyYW5zZmVyLW93bmVyc2hpcC1tb2RhbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBPcmdhbml6YXRpb25WaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBPUkdBTklaQVRJT05fVklFV19JMThOIH0gZnJvbSAnLi9vcmdhbml6YXRpb24tdmlldy5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuT3JnYW5pemF0aW9uJztcbmNvbnN0IERFRkFVTFRfVklFV19QRVJNSVNTSU9OU19ST1VURSA9ICcvYXBwL3NldHRpbmdzL3Blcm1pc3Npb25zJztcbmNvbnN0IERFRkFVTFRfTEVBVkVfUkVESVJFQ1RfUk9VVEUgPSAnL2FwcC9zZXR0aW5ncy9hY2NvdW50JztcblxuLyoqXG4gKiBgdmFsLW9yZ2FuaXphdGlvbi12aWV3YCDigJQgdmlzdGEgR2VzdGnDs24gZGUgb3JnYW5pemFjacOzbiBmdWxsLWZlYXR1cmVcbiAqIGF1dG9jb250ZW5pZGEgKG9yZ2FuaXNtKS4gUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlXG4gKiBBRFItMDIxLiBSZcO6bmU6XG4gKiAgLSAqKkluZm9ybWFjacOzbioqIOKAlCBub21icmUsIGRlc2NyaXBjacOzbiwgcGxhbiB5IHRpcG8gZGUgbGEgb3JnIGFjdGl2YTsgZWRpdGFyXG4gKiAgICB2w61hIG1vZGFsIGB2YWwtZWRpdC1vcmctbW9kYWxgIChzb2xvIHNpIGBjYW5FZGl0T3JnKClgKS5cbiAqICAtICoqTWllbWJyb3MqKiDigJQgbGlzdGEgcGFnaW5hZGEgKGB2YWwtbWVtYmVyLWNhcmRgKSBlbnJpcXVlY2lkYSBjb24gcGVyZmlsZXNcbiAqICAgIHDDumJsaWNvcyAoRmlyZXN0b3JlKTsgdmVyIGRldGFsbGUgdsOtYSBgdmFsLW1lbWJlci1kZXRhaWwtbW9kYWxgLlxuICogIC0gKipSb2xlcyB5IHBlcm1pc29zKiog4oCUIHNlY2Npw7NuIGV4cGxpY2F0aXZhIGNvbiBDVEEgYSBsYSBydXRhIGRlIHBlcm1pc29zLlxuICogIC0gKipJbnZpdGFyKiog4oCUIENUQSBxdWUgYWJyZSBgdmFsLWludml0ZS1tZW1iZXItbW9kYWxgIChnYXRlYWRhIHBvciBgdXNlcnM6KmApLlxuICogIC0gKipUcmFuc2ZlcmlyIHByb3BpZWRhZCoqIOKAlCBgdmFsLXRyYW5zZmVyLW93bmVyc2hpcC1tb2RhbGAgKHNvbG8gb3duZXIpLlxuICogIC0gKipTYWxpciBkZSBsYSBvcmdhbml6YWNpw7NuKiog4oCUIGBPcmdTZXJ2aWNlLmxlYXZlT3JnYCBjb24gY29uZmlybWFjacOzblxuICogICAgZGVzdHJ1Y3RpdmEuXG4gKlxuICogKipSQkFDIGludGVybm8qKiAoZGVjaXNpw7NuIENUTywgQURSLTAyMSk6IGVsIGdhdGluZyBmaW5vIHNlIHJlc3VlbHZlIGRlbnRybyBkZVxuICogbGEgdmlzdGEgdsOtYSBgQXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbigpYCArIGAqdmFsSGFzUGVybWlzc2lvbmAgKyBjb21wdXRlZHNcbiAqIGBpc093bmVyKClgL2BjYW5NYW5hZ2VNZW1iZXJzKClgL2BjYW5FZGl0T3JnKClgLiBOTyBzZSBleHBvbmUgY29tbyBjb25maWcuXG4gKlxuICogKipBdXRvLXJlbG9hZCBlbiBvcmctc3dpdGNoKio6IHVuIGBlZmZlY3RgIHJlYWN0aW9uYSBhIGBhY3RpdmVPcmdJZCgpYCB5IHJlY2FyZ2FcbiAqIG9yZyArIG1pZW1icm9zIGN1YW5kbyBlbCB1c3VhcmlvIGNhbWJpYSBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YSBtaWVudHJhcyBsYSB2aXN0YVxuICogZXN0w6EgbW9udGFkYS4gRWwgZWZmZWN0IGN1YnJlIHRhbWJpw6luIGxhIGNhcmdhIGluaWNpYWwgKHNpbiBkb2JsZSBjYXJnYSkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgIHNlXG4gKiBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnIChuby1vcFxuICogZW1iZWJpZG8pLiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWxcbiAqIG5hbWVzcGFjZSAoZGVmYXVsdCBgU2V0dGluZ3MuT3JnYW5pemF0aW9uYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1vcmdhbml6YXRpb24tdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgSGFzUGVybWlzc2lvbkRpcmVjdGl2ZSxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBNZW1iZXJDYXJkQ29tcG9uZW50LFxuICAgIFRyYW5zZmVyT3duZXJzaGlwTW9kYWxDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgY29udGVudDogcGFnZVRpdGxlKCkgfVwiIC8+XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhZ2VEZXNjcmlwdGlvbigpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93SW5mbykge1xuICAgICAgICA8IS0tIE9yZyBJbmZvIC0tPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdpbmZvVGl0bGUnKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChjYW5FZGl0T3JnKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImVkaXRCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uRWRpdCgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2RldGFpbCcsIHJvd3M6IDQgfVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChvcmdFcnJvclN0YXRlKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwib3JnRXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgQGlmIChvcmcoKTsgYXMgbykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctaW5mby1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGQgb3JnLWluZm8tZmllbGQtLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby1sYWJlbFwiPnt7IHR0KCdpbmZvTmFtZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1pbmZvLXZhbHVlXCI+e3sgby5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGQgb3JnLWluZm8tZmllbGQtLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby1sYWJlbFwiPnt7IHR0KCdpbmZvRGVzY3JpcHRpb24nKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby12YWx1ZSBvcmctaW5mby12YWx1ZS0tbXV0ZWRcIj57eyBvLmRlc2NyaXB0aW9uIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctaW5mby1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tbGFiZWxcIj57eyB0dCgnaW5mb1BsYW4nKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYW4tYmFkZ2UgcGxhbi1iYWRnZS0te3sgby5wbGFuIH19XCI+e3sgcGxhbkxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1pbmZvLWxhYmVsXCI+e3sgdHQoJ2luZm9UeXBlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby12YWx1ZVwiPnt7IG8udHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TWVtYmVycykge1xuICAgICAgICA8IS0tIE1lbWJlcnMgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgnbWVtYmVyc1RpdGxlJyksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIEBpZiAobWVtYmVyc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogMyB9XCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKG1lbWJlcnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdtZW1iZXJzRW1wdHknKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1iZXJzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChtIG9mIHZpc2libGVNZW1iZXJzKCk7IHRyYWNrIG0udXNlcklkKSB7XG4gICAgICAgICAgICAgICAgICA8dmFsLW1lbWJlci1jYXJkXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidvcmctbWVtYmVyLScgKyBtLnVzZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG0udXNlcklkLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IG0uaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBtLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgIGF2YXRhclVybDogbS5hdmF0YXIsXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZUxhYmVsOiBtLnJvbGVzWzBdID8gcm9sZUxhYmVsKG0ucm9sZXNbMF0pIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQXJpYUxhYmVsOiB0dCgndmlld01lbWJlckN0YScpLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQWN0aW9uKT1cIm9uVmlld01lbWJlcihtKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoIXNob3dBbGxNZW1iZXJzKCkgJiYgbWVtYmVycygpLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtYmVycy1zaG93LW1vcmVcIiAoY2xpY2spPVwic2hvd0FsbE1lbWJlcnMuc2V0KHRydWUpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0dCgnbWVtYmVyc1Nob3dNb3JlJykgfX0gKHt7IG1lbWJlcnMoKS5sZW5ndGggLSAzIH19KVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0FsbE1lbWJlcnMoKSAmJiBtZW1iZXJzTmV4dFRva2VuKCkpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtYmVycy1zaG93LW1vcmVcIiBbZGlzYWJsZWRdPVwibG9hZGluZ01vcmVNZW1iZXJzKClcIiAoY2xpY2spPVwibG9hZE1vcmVNZW1iZXJzKClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGxvYWRpbmdNb3JlTWVtYmVycygpID8gJ+KApicgOiB0dCgnbWVtYmVyc1Nob3dNb3JlJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93Um9sZXMpIHtcbiAgICAgICAgPCEtLSBSb2xlcyB5IHBlcm1pc29zOiBzZWNjaW9uIGV4cGxpY2F0aXZhLCBkZXRhbGxlIGVuIGxhIHJ1dGEgZGUgcGVybWlzb3MgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgncm9sZXNTZWN0aW9uVGl0bGUnKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogdHQoJ3JvbGVzSGludCcpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwidmlld1Blcm1pc3Npb25zQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvblZpZXdQZXJtaXNzaW9ucygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93SW52aXRlKSB7XG4gICAgICAgIDwhLS0gSW52aXRlOiBzb2xvIGFkbWluKyAoZ2F0aW5nIFJCQUMgaW50ZXJubykgLS0+XG4gICAgICAgIDxzZWN0aW9uICp2YWxIYXNQZXJtaXNzaW9uPVwiJ3VzZXJzOionXCIgY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCIgZGF0YS10ZXN0aWQ9XCJvcmctaW52aXRlLXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52aXRlLWN0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludml0ZS1jdGFfX3RleHRcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2ludml0ZUN0YVRpdGxlJyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdpbnZpdGVDdGFIaW50JyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJvcGVuSW52aXRlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk9wZW5JbnZpdGUoKVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dUcmFuc2Zlck93bmVyc2hpcCAmJiBpc093bmVyKCkpIHtcbiAgICAgICAgPCEtLSBUcmFuc2ZlciBvd25lcnNoaXA6IHNvbG8gb3duZXIgKGdhdGluZyBSQkFDIGludGVybm8pIC0tPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIiBkYXRhLXRlc3RpZD1cIm9yZy10cmFuc2Zlci1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0cmFuc2ZlclRpdGxlJyksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0cmFuc2ZlckhpbnQnKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKHRyYW5zZmVyYWJsZU1lbWJlcnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ0cmFuc2ZlckJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25PcGVuVHJhbnNmZXIoKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnbWVtYmVyc0VtcHR5JyksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0xlYXZlKSB7XG4gICAgICAgIDwhLS0gTGVhdmUgb3JnIC0tPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudDogdHQoJ2xlYXZlVGl0bGUnKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogaXNPd25lcigpID8gdHQoJ2xlYXZlT3duZXJIaW50JykgOiB0dCgnbGVhdmVIaW50JyksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJsZWF2ZUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25MZWF2ZSgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaXNEZWJ1Zykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb24gcmJhYy1kZWJ1Z1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnUkJBQyAobGl2ZSknLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJiYWMtZGVidWdfX2JvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYmFjLWRlYnVnX19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYmFjLWRlYnVnX19sYWJlbFwiPlJvbGVzPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJiYWMtZGVidWdfX3ZhbHVlXCI+e3sgYXV0aC5yb2xlcygpLmpvaW4oJywgJykgfHwgJ+KAlCcgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYmFjLWRlYnVnX19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYmFjLWRlYnVnX19sYWJlbFwiPlBlcm1pc29zPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJiYWMtZGVidWdfX3ZhbHVlIHJiYWMtZGVidWdfX3ZhbHVlLS1wZXJtc1wiPnt7IGF1dGgucGVybWlzc2lvbnMoKS5qb2luKCcsICcpIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uLWhlYWRlci1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tZ2FwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAuaW52aXRlLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgICAgLmludml0ZS1jdGFfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby1jYXJkIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAub3JnLWluZm8tY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAub3JnLWluZm8tY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm9yZy1pbmZvLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgfVxuICAgICAgLm9yZy1pbmZvLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuICAgICAgLm9yZy1pbmZvLWZpZWxkLS1mdWxsIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tZmllbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby1yb3cgLm9yZy1pbmZvLWZpZWxkIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby1yb3cgLm9yZy1pbmZvLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby12YWx1ZS0tbXV0ZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICB9XG4gICAgICAucGxhbi1iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBwYWRkaW5nOiAzcHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLnBsYW4tYmFkZ2UtLWZyZWUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQtc2hhZGUsICNkN2Q4ZGEpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnBsYW4tYmFkZ2UtLXBybyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgICAucGxhbi1iYWRnZS0tZW50ZXJwcmlzZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmNWM1NDI7XG4gICAgICAgIGNvbG9yOiAjMjIyO1xuICAgICAgfVxuICAgICAgLm1lbWJlcnMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLm1lbWJlcnMtc2hvdy1tb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgIC5yYmFjLWRlYnVnX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgIH1cbiAgICAgIC5yYmFjLWRlYnVnX19yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1Z19fbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIG1pbi13aWR0aDogNzJweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1Z19fdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1Z19fdmFsdWUtLXBlcm1zIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG4gIHByaXZhdGUgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZSk7XG4gIHByaXZhdGUgY29uZmlybURpYWxvZyA9IGluamVjdChDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBpc0RlYnVnID0gaXNEZXZNb2RlKCk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYG9yZ2FuaXphdGlvbkNvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaE9yZ2FuaXphdGlvblJvdXRlc2ApLlxuICAgKiBgcmVzb2x2ZWRDb25maWdgIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBPcmdhbml6YXRpb25WaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8XG4gICAgUmVxdWlyZWQ8T21pdDxPcmdhbml6YXRpb25WaWV3Q29uZmlnLCAnb25PcmdFZGl0ZWQnIHwgJ29uTWVtYmVySW52aXRlZCcgfCAnb25Pd25lcnNoaXBUcmFuc2ZlcnJlZCcgfCAnb25MZWZ0T3JnJz4+ICZcbiAgICAgIFBpY2s8T3JnYW5pemF0aW9uVmlld0NvbmZpZywgJ29uT3JnRWRpdGVkJyB8ICdvbk1lbWJlckludml0ZWQnIHwgJ29uT3duZXJzaGlwVHJhbnNmZXJyZWQnIHwgJ29uTGVmdE9yZyc+XG4gID4oKCkgPT4ge1xuICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydvcmdhbml6YXRpb25Db25maWcnXSA/PyB7fSkgYXMgT3JnYW5pemF0aW9uVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IE9yZ2FuaXphdGlvblZpZXdDb25maWcgPSB7IC4uLmZyb21Sb3V0ZSwgLi4uKHRoaXMuY29uZmlnID8/IHt9KSB9O1xuICAgIHJldHVybiB7XG4gICAgICBzaG93SW5mbzogbWVyZ2VkLnNob3dJbmZvID8/IHRydWUsXG4gICAgICBzaG93TWVtYmVyczogbWVyZ2VkLnNob3dNZW1iZXJzID8/IHRydWUsXG4gICAgICBzaG93Um9sZXM6IG1lcmdlZC5zaG93Um9sZXMgPz8gdHJ1ZSxcbiAgICAgIHNob3dJbnZpdGU6IG1lcmdlZC5zaG93SW52aXRlID8/IHRydWUsXG4gICAgICBzaG93VHJhbnNmZXJPd25lcnNoaXA6IG1lcmdlZC5zaG93VHJhbnNmZXJPd25lcnNoaXAgPz8gdHJ1ZSxcbiAgICAgIHNob3dMZWF2ZTogbWVyZ2VkLnNob3dMZWF2ZSA/PyB0cnVlLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICB2aWV3UGVybWlzc2lvbnNSb3V0ZTogbWVyZ2VkLnZpZXdQZXJtaXNzaW9uc1JvdXRlID8/IERFRkFVTFRfVklFV19QRVJNSVNTSU9OU19ST1VURSxcbiAgICAgIGxlYXZlUmVkaXJlY3RSb3V0ZTogbWVyZ2VkLmxlYXZlUmVkaXJlY3RSb3V0ZSA/PyBERUZBVUxUX0xFQVZFX1JFRElSRUNUX1JPVVRFLFxuICAgICAgb25PcmdFZGl0ZWQ6IG1lcmdlZC5vbk9yZ0VkaXRlZCxcbiAgICAgIG9uTWVtYmVySW52aXRlZDogbWVyZ2VkLm9uTWVtYmVySW52aXRlZCxcbiAgICAgIG9uT3duZXJzaGlwVHJhbnNmZXJyZWQ6IG1lcmdlZC5vbk93bmVyc2hpcFRyYW5zZmVycmVkLFxuICAgICAgb25MZWZ0T3JnOiBtZXJnZWQub25MZWZ0T3JnLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBvcmcgPSBzaWduYWw8T3JnYW5pemF0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsZWF2aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcmdMb2FkRXJyb3IgPSBzaWduYWw8dW5rbm93bj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgb3JnRXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMub3JnTG9hZEVycm9yKCk7XG4gICAgaWYgKCFlcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoZXJyLCB7XG4gICAgICB0aXRsZTogeyBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lVGl0bGUnKSwgZXJyb3I6IHRoaXMudHQoJ2Vycm9yVGl0bGUnKSB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZUhpbnQnKSxcbiAgICAgICAgZXJyb3I6IGludGVycHJldEVycm9yKGVycikubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnR0KCdyZXRyeScpLFxuICAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5sb2FkT3JnKCksXG4gICAgICByZXRyeWluZzogdGhpcy5sb2FkaW5nKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IG1lbWJlcnMgPSBzaWduYWw8TWVtYmVyRGV0YWlsW10+KFtdKTtcbiAgcmVhZG9ubHkgbWVtYmVyc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbWJlcnNMb2FkRXJyb3IgPSBzaWduYWw8dW5rbm93bj4obnVsbCk7XG4gIHJlYWRvbmx5IG1lbWJlcnNOZXh0VG9rZW4gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGxvYWRpbmdNb3JlTWVtYmVycyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3dBbGxNZW1iZXJzID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdmlzaWJsZU1lbWJlcnMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaG93QWxsTWVtYmVycygpID8gdGhpcy5tZW1iZXJzKCkgOiB0aGlzLm1lbWJlcnMoKS5zbGljZSgwLCAzKSkpO1xuICByZWFkb25seSB0cmFuc2ZlcnJpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBhdmFpbGFibGVSb2xlcyA9IHNpZ25hbDxPcmdSb2xlW10+KFtcbiAgICB7IGlkOiAndmlld2VyJywgbmFtZTogJ3ZpZXdlcicgfSxcbiAgICB7IGlkOiAnZWRpdG9yJywgbmFtZTogJ2VkaXRvcicgfSxcbiAgICB7IGlkOiAnYWRtaW4nLCBuYW1lOiAnYWRtaW4nIH0sXG4gIF0pO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHVzZXJJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXV0aC51c2VyKCk/LnVzZXJJZCA/PyAnJyk7XG5cbiAgcmVhZG9ubHkgaXNPd25lciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvID0gdGhpcy5vcmcoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLnVzZXJJZCgpO1xuICAgIHJldHVybiAhIW8gJiYgISF1aWQgJiYgby5vd25lcklkID09PSB1aWQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNhbkVkaXRPcmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzT3duZXIoKSB8fCB0aGlzLmF1dGguaGFzUGVybWlzc2lvbignb3JnOm1hbmFnZScpKTtcblxuICByZWFkb25seSBjYW5NYW5hZ2VNZW1iZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzT3duZXIoKSkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgdWlkID0gdGhpcy51c2VySWQoKTtcbiAgICBjb25zdCBtZSA9IHRoaXMubWVtYmVycygpLmZpbmQobSA9PiBtLnVzZXJJZCA9PT0gdWlkKTtcbiAgICBpZiAoIW1lKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIG1lLnJvbGVzLnNvbWUociA9PiByID09PSAnYWRtaW4nIHx8IHIgPT09ICdzdXBlcl9hZG1pbicpO1xuICB9KTtcblxuICByZWFkb25seSBwYWdlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHBhZ2VEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VEZXNjcmlwdGlvbicpKTtcblxuICByZWFkb25seSBwbGFuTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGxhbiA9IHRoaXMub3JnKCk/LnBsYW47XG4gICAgaWYgKHBsYW4gPT09ICdwcm8nKSByZXR1cm4gdGhpcy50dCgncGxhblBybycpO1xuICAgIGlmIChwbGFuID09PSAnZW50ZXJwcmlzZScpIHJldHVybiB0aGlzLnR0KCdwbGFuRW50ZXJwcmlzZScpO1xuICAgIHJldHVybiB0aGlzLnR0KCdwbGFuRnJlZScpO1xuICB9KTtcblxuICByZWFkb25seSBlZGl0QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdlZGl0Q3RhJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGxlYXZlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdsZWF2ZUN0YScpLFxuICAgIHRva2VuOiAnb3JnLWxlYXZlJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMuaXNPd25lcigpIHx8IHRoaXMubGVhdmluZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICByZWFkb25seSB0cmFuc2ZlcmFibGVNZW1iZXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZW1iZXJzKCkuZmlsdGVyKG0gPT4gbS51c2VySWQgIT09IHRoaXMudXNlcklkKCkpKTtcblxuICByZWFkb25seSB2aWV3UGVybWlzc2lvbnNCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3JvbGVzVmlld1Blcm1zJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAnb3JnLXZpZXctcGVybWlzc2lvbnMnLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgdHJhbnNmZXJCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3RyYW5zZmVyQ3RhJyksXG4gICAgdG9rZW46ICdvcmctdHJhbnNmZXItc3VibWl0JyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMudHJhbnNmZXJyaW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IG9wZW5JbnZpdGVCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2ludml0ZU9wZW4nKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgLyoqIEd1YXJkYSBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBkaXNwYXJvIGRlbCBlZmZlY3QgKGV2aXRhIGRvYmxlIGNhcmdhKS4gKi9cbiAgcHJpdmF0ZSBsYXN0TG9hZGVkT3JnSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBPUkdBTklaQVRJT05fVklFV19JMThOKTtcbiAgICB9XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBBdXRvLXJlbG9hZCBlbiBvcmctc3dpdGNoOiByZWFjY2lvbmEgYSBhY3RpdmVPcmdJZCgpIHkgcmVjYXJnYSBvcmcgKyBtaWVtYnJvc1xuICAgIC8vIGN1YW5kbyBlbCB1c3VhcmlvIGNhbWJpYSBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YSBtaWVudHJhcyBsYSB2aXN0YSBlc3TDoVxuICAgIC8vIG1vbnRhZGEuIEN1YnJlIHRhbWJpw6luIGxhIGNhcmdhIGluaWNpYWwg4oCUIGBsYXN0TG9hZGVkT3JnSWRgIGV2aXRhIHJlY2FyZ2FyXG4gICAgLy8gZG9zIHZlY2VzIGVsIG1pc21vIGlkIChwLmVqLiBzaSBlbCBlZmZlY3QgcmUtY29ycmUgcG9yIG90cmEgZGVwZW5kZW5jaWEpLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlc2AgcG9ycXVlIGxhcyBsb2FkIGZucyBlc2NyaWJlbiBzaWduYWxzIHPDrW5jcm9uYW1lbnRlXG4gICAgLy8gKGxvYWRpbmcvZXJyb3IvdG9rZW4pIOKAlCBBbmd1bGFyIDE4IGJsb3F1ZWEgd3JpdGVzIGVuIGVmZmVjdCBzaW4gZWwgZmxhZy5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgICAgICBpZiAob3JnSWQgPT09IHRoaXMubGFzdExvYWRlZE9yZ0lkKSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdExvYWRlZE9yZ0lkID0gb3JnSWQ7XG4gICAgICAgIHRoaXMubG9hZE9yZygpO1xuICAgICAgICB0aGlzLmxvYWRNZW1iZXJzKCk7XG4gICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGNvbm5lY3RQYWdlUmVmcmVzaChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5sb2FkT3JnKCksIHRoaXMubG9hZE1lbWJlcnMoKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25FZGl0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IEVkaXRPcmdNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZzogdGhpcy5vcmcoKSxcbiAgICAgICAgb25TdWNjZXNzOiAodXBkYXRlZDogT3JnYW5pemF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcmcuc2V0KHVwZGF0ZWQpO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk9yZ0VkaXRlZD8uKCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25MZWF2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc093bmVyKCkgfHwgdGhpcy5sZWF2aW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdsZWF2ZVRpdGxlJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCdsZWF2ZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50dCgnbGVhdmVDdGEnKSB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ2NhbmNlbEN0YScpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMubGVhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5sZWF2ZU9yZyhvcmdJZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnbGVhdmVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKGNmZy5sZWF2ZVJlZGlyZWN0Um91dGUpO1xuICAgICAgY2ZnLm9uTGVmdE9yZz8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24ubGVhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2xlYXZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubGVhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uT3Blbkludml0ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBJbnZpdGVNZW1iZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZ0lkOiB0aGlzLmFjdGl2ZU9yZ0lkKCksXG4gICAgICAgIGV4aXN0aW5nTWVtYmVySWRzOiB0aGlzLm1lbWJlcnMoKS5tYXAobSA9PiBtLnVzZXJJZCksXG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25NZW1iZXJJbnZpdGVkPy4oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOTJdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45MixcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBvblZpZXdQZXJtaXNzaW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRDb25maWcoKS52aWV3UGVybWlzc2lvbnNSb3V0ZSk7XG4gIH1cblxuICBvbk9wZW5UcmFuc2ZlcigpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgbWVtYmVyczogdGhpcy50cmFuc2ZlcmFibGVNZW1iZXJzKCksXG4gICAgICAgIG9uQ29uZmlybTogKG5ld093bmVySWQ6IHN0cmluZykgPT4gdm9pZCB0aGlzLm9uVHJhbnNmZXIobmV3T3duZXJJZCksXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjc1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuNzUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25UcmFuc2ZlcihuZXdPd25lcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5ld093bmVySWQgfHwgdGhpcy50cmFuc2ZlcnJpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybURpYWxvZy5jb25maXJtRGVzdHJ1Y3RpdmUoe1xuICAgICAgdGl0bGU6IHRoaXMudHQoJ3RyYW5zZmVyVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3RyYW5zZmVyQ29uZmlybScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCd0cmFuc2ZlckN0YScpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50dCgnY2FuY2VsQ3RhJykgfSxcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdC5jb25maXJtZWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgdGhpcy50cmFuc2ZlcnJpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UudHJhbnNmZXJPd25lcnNoaXAob3JnSWQsIG5ld093bmVySWQpKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3RyYW5zZmVyU3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sb2FkT3JnKCk7XG4gICAgICB0aGlzLmxvYWRNZW1iZXJzKCk7XG4gICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Pd25lcnNoaXBUcmFuc2ZlcnJlZD8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24udHJhbnNmZXInLFxuICAgICAgICBmYWxsYmFja0tleTogJ3RyYW5zZmVyRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMudHJhbnNmZXJyaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JnKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMub3JnTG9hZEVycm9yLnNldChudWxsKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLm9yZ1NlcnZpY2UuZ2V0T3JnKG9yZ0lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBvcmcgPT4ge1xuICAgICAgICAgIHRoaXMub3JnLnNldChvcmcpO1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5vcmdMb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkTWVtYmVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdGhpcy5tZW1iZXJzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5tZW1iZXJzTmV4dFRva2VuLnNldChudWxsKTtcbiAgICB0aGlzLnNob3dBbGxNZW1iZXJzLnNldChmYWxzZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5vcmdTZXJ2aWNlLmdldE9yZ01lbWJlcnMob3JnSWQsIHsgbGltaXQ6IDIwIH0pLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgY29uc3QgY2FyZHMgPSBhd2FpdCB0aGlzLmVucmljaFdpdGhQcm9maWxlcyhyZXMubWVtYmVycyk7XG4gICAgICAgICAgdGhpcy5tZW1iZXJzLnNldChjYXJkcyk7XG4gICAgICAgICAgdGhpcy5tZW1iZXJzTmV4dFRva2VuLnNldChyZXMubmV4dFRva2VuID8/IG51bGwpO1xuICAgICAgICAgIHRoaXMubWVtYmVyc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMubWVtYmVyc0xvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgICAgICB0aGlzLm1lbWJlcnNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkTW9yZU1lbWJlcnMoKTogdm9pZCB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLm1lbWJlcnNOZXh0VG9rZW4oKTtcbiAgICBpZiAoIW9yZ0lkIHx8ICF0b2tlbiB8fCB0aGlzLmxvYWRpbmdNb3JlTWVtYmVycygpKSByZXR1cm47XG4gICAgdGhpcy5sb2FkaW5nTW9yZU1lbWJlcnMuc2V0KHRydWUpO1xuICAgIHRoaXMub3JnU2VydmljZS5nZXRPcmdNZW1iZXJzKG9yZ0lkLCB7IGxpbWl0OiAyMCwgbmV4dFRva2VuOiB0b2tlbiB9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogYXN5bmMgcmVzID0+IHtcbiAgICAgICAgY29uc3QgY2FyZHMgPSBhd2FpdCB0aGlzLmVucmljaFdpdGhQcm9maWxlcyhyZXMubWVtYmVycyk7XG4gICAgICAgIHRoaXMubWVtYmVycy51cGRhdGUocHJldiA9PiBbLi4ucHJldiwgLi4uY2FyZHNdKTtcbiAgICAgICAgdGhpcy5tZW1iZXJzTmV4dFRva2VuLnNldChyZXMubmV4dFRva2VuID8/IG51bGwpO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb3JlTWVtYmVycy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgICAgY29udGV4dDogJ29yZ2FuaXphdGlvbi5sb2FkTW9yZU1lbWJlcnMnLFxuICAgICAgICAgIGZhbGxiYWNrS2V5OiAnbWVtYmVyc0Vycm9yJyxcbiAgICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9yZU1lbWJlcnMuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVucmljaFdpdGhQcm9maWxlcyhtZW1iZXJzOiBPcmdNZW1iZXJbXSk6IFByb21pc2U8TWVtYmVyRGV0YWlsW10+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgbWVtYmVycy5tYXAoYXN5bmMgbSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgc25hcCA9IGF3YWl0IGdldERvYyhkb2ModGhpcy5maXJlc3RvcmUsIGBwcm9maWxlcy8ke20udXNlcklkfWApKTtcbiAgICAgICAgICBjb25zdCBwID0gc25hcC5leGlzdHMoKSA/IHNuYXAuZGF0YSgpIDoge307XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBoYW5kbGU6IHBbJ2hhbmRsZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGF2YXRhcjogKHBbJ2F2YXRhclVybCddID8/IHBbJ2F2YXRhciddKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBuYW1lOiAocFsnbmFtZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgfHwgbS5uYW1lLFxuICAgICAgICAgIH0gYXMgTWVtYmVyRGV0YWlsO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gbSBhcyBNZW1iZXJEZXRhaWw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cy5tYXAociA9PiAoci5zdGF0dXMgPT09ICdmdWxmaWxsZWQnID8gci52YWx1ZSA6ICh7fSBhcyBNZW1iZXJEZXRhaWwpKSk7XG4gIH1cblxuICBsb2FkUm9sZXMoKTogdm9pZCB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMub3JnU2VydmljZS5saXN0T3JnUm9sZXMob3JnSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByb2xlcyA9PiB7XG4gICAgICAgIGlmIChyb2xlcy5sZW5ndGgpIHRoaXMuYXZhaWxhYmxlUm9sZXMuc2V0KHJvbGVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByb2xlTGFiZWwocm9sZUlkT3JOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRyeSB0byBmaW5kIGJ5IGlkIGZpcnN0IChVVUlEKSwgdGhlbiBieSBuYW1lXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmF2YWlsYWJsZVJvbGVzKCkuZmluZChyID0+IHIuaWQgPT09IHJvbGVJZE9yTmFtZSB8fCByLm5hbWUgPT09IHJvbGVJZE9yTmFtZSk7XG4gICAgY29uc3QgbmFtZSA9IGZvdW5kPy5uYW1lID8/IHJvbGVJZE9yTmFtZTtcbiAgICBjb25zdCBrZXlNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB2aWV3ZXI6ICdyb2xlVmlld2VyJyxcbiAgICAgIGVkaXRvcjogJ3JvbGVFZGl0b3InLFxuICAgICAgYWRtaW46ICdyb2xlQWRtaW4nLFxuICAgICAgc3VwZXJfYWRtaW46ICdyb2xlU3VwZXJBZG1pbicsXG4gICAgfTtcbiAgICBjb25zdCBrZXkgPSBrZXlNYXBbbmFtZV0gPz8gbmFtZTtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMudHQoa2V5KTtcbiAgICByZXR1cm4gbGFiZWwgJiYgIWxhYmVsLnN0YXJ0c1dpdGgoJ1snKSA/IGxhYmVsIDogbmFtZTtcbiAgfVxuXG4gIHBlcm1pc3Npb25MYWJlbChwZXJtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChwZXJtID09PSAnKjoqJykgcmV0dXJuIHRoaXMudHQoJ3Blcm1BbGwnKTtcbiAgICBjb25zdCBbcmVzb3VyY2UsIGFjdGlvbl0gPSBwZXJtLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgcmVzS2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdXNlcnM6ICdwZXJtVXNlcnMnLFxuICAgICAgZG9jdW1lbnRzOiAncGVybURvY3VtZW50cycsXG4gICAgICByb2xlczogJ3Blcm1Sb2xlcycsXG4gICAgICBtZWRpYTogJ3Blcm1NZWRpYScsXG4gICAgICB0ZW1wbGF0ZXM6ICdwZXJtVGVtcGxhdGVzJyxcbiAgICAgICcqJzogJ3Blcm1BbGwnLFxuICAgIH07XG4gICAgY29uc3QgYWN0S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgcmVhZDogJ3Blcm1SZWFkJyxcbiAgICAgIHdyaXRlOiAncGVybVdyaXRlJyxcbiAgICAgIGNyZWF0ZTogJ3Blcm1DcmVhdGUnLFxuICAgICAgZGVsZXRlOiAncGVybURlbGV0ZScsXG4gICAgICBtYW5hZ2U6ICdwZXJtTWFuYWdlJyxcbiAgICAgICcqJzogJ3Blcm1BbGwnLFxuICAgIH07XG4gICAgY29uc3QgcmVzID0gdGhpcy50dChyZXNLZXlbcmVzb3VyY2VdID8/IHJlc291cmNlKTtcbiAgICBjb25zdCBhY3QgPSB0aGlzLnR0KGFjdEtleVthY3Rpb25dID8/IGFjdGlvbik7XG4gICAgcmV0dXJuIGAke3Jlc306ICR7YWN0fWA7XG4gIH1cblxuICBvblZpZXdNZW1iZXIobWVtYmVyOiBNZW1iZXJEZXRhaWwpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBNZW1iZXJEZXRhaWxNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG1lbWJlcixcbiAgICAgICAgb3JnSWQ6IHRoaXMuYWN0aXZlT3JnSWQoKSxcbiAgICAgICAgYXZhaWxhYmxlUm9sZXM6IHRoaXMuYXZhaWxhYmxlUm9sZXMoKSxcbiAgICAgICAgY2FuTWFuYWdlOiB0aGlzLmNhbk1hbmFnZU1lbWJlcnMoKSAmJiBtZW1iZXIudXNlcklkICE9PSB0aGlzLnVzZXJJZCgpLFxuICAgICAgICBpc1NlbGY6IG1lbWJlci51c2VySWQgPT09IHRoaXMudXNlcklkKCksXG4gICAgICAgIG9uQ2hhbmdlZDogKCkgPT4gdGhpcy5sb2FkTWVtYmVycygpLFxuICAgICAgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC43XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuNyxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG59XG4iXX0=
1117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmdhbml6YXRpb24tdmlldy9vcmdhbml6YXRpb24tdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RixP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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyUVQ7d0RBb0xRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgaXNEZXZNb2RlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmUsIGRvYywgZ2V0RG9jIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZW1iZXItY2FyZC9tZW1iZXItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9oYXMtcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnTWVtYmVyLCBPcmdSb2xlLCBPcmdhbml6YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRWRpdE9yZ01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZWRpdC1vcmctbW9kYWwvZWRpdC1vcmctbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEludml0ZU1lbWJlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW52aXRlLW1lbWJlci1tb2RhbC9pbnZpdGUtbWVtYmVyLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW1iZXJEZXRhaWxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVtYmVyRGV0YWlsIH0gZnJvbSAnLi4vbWVtYmVyLWRldGFpbC1tb2RhbC90eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHJhbnNmZXItb3duZXJzaGlwLW1vZGFsL3RyYW5zZmVyLW93bmVyc2hpcC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tZW1iZXItaW1wb3J0LW1vZGFsL21lbWJlci1pbXBvcnQtbW9kYWwuY29tcG9uZW50JztcblxuaW1wb3J0IHsgT3JnYW5pemF0aW9uVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgT1JHQU5JWkFUSU9OX1ZJRVdfSTE4TiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLXZpZXcuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLk9yZ2FuaXphdGlvbic7XG5jb25zdCBERUZBVUxUX1ZJRVdfUEVSTUlTU0lPTlNfUk9VVEUgPSAnL2FwcC9zZXR0aW5ncy9wZXJtaXNzaW9ucyc7XG5jb25zdCBERUZBVUxUX0xFQVZFX1JFRElSRUNUX1JPVVRFID0gJy9hcHAvc2V0dGluZ3MvYWNjb3VudCc7XG5cbi8qKlxuICogYHZhbC1vcmdhbml6YXRpb24tdmlld2Ag4oCUIHZpc3RhIEdlc3Rpw7NuIGRlIG9yZ2FuaXphY2nDs24gZnVsbC1mZWF0dXJlXG4gKiBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZVxuICogQURSLTAyMS4gUmXDum5lOlxuICogIC0gKipJbmZvcm1hY2nDs24qKiDigJQgbm9tYnJlLCBkZXNjcmlwY2nDs24sIHBsYW4geSB0aXBvIGRlIGxhIG9yZyBhY3RpdmE7IGVkaXRhclxuICogICAgdsOtYSBtb2RhbCBgdmFsLWVkaXQtb3JnLW1vZGFsYCAoc29sbyBzaSBgY2FuRWRpdE9yZygpYCkuXG4gKiAgLSAqKk1pZW1icm9zKiog4oCUIGxpc3RhIHBhZ2luYWRhIChgdmFsLW1lbWJlci1jYXJkYCkgZW5yaXF1ZWNpZGEgY29uIHBlcmZpbGVzXG4gKiAgICBww7pibGljb3MgKEZpcmVzdG9yZSk7IHZlciBkZXRhbGxlIHbDrWEgYHZhbC1tZW1iZXItZGV0YWlsLW1vZGFsYC5cbiAqICAtICoqUm9sZXMgeSBwZXJtaXNvcyoqIOKAlCBzZWNjacOzbiBleHBsaWNhdGl2YSBjb24gQ1RBIGEgbGEgcnV0YSBkZSBwZXJtaXNvcy5cbiAqICAtICoqSW52aXRhcioqIOKAlCBDVEEgcXVlIGFicmUgYHZhbC1pbnZpdGUtbWVtYmVyLW1vZGFsYCAoZ2F0ZWFkYSBwb3IgYHVzZXJzOipgKS5cbiAqICAtICoqVHJhbnNmZXJpciBwcm9waWVkYWQqKiDigJQgYHZhbC10cmFuc2Zlci1vd25lcnNoaXAtbW9kYWxgIChzb2xvIG93bmVyKS5cbiAqICAtICoqU2FsaXIgZGUgbGEgb3JnYW5pemFjacOzbioqIOKAlCBgT3JnU2VydmljZS5sZWF2ZU9yZ2AgY29uIGNvbmZpcm1hY2nDs25cbiAqICAgIGRlc3RydWN0aXZhLlxuICpcbiAqICoqUkJBQyBpbnRlcm5vKiogKGRlY2lzacOzbiBDVE8sIEFEUi0wMjEpOiBlbCBnYXRpbmcgZmlubyBzZSByZXN1ZWx2ZSBkZW50cm8gZGVcbiAqIGxhIHZpc3RhIHbDrWEgYEF1dGhTZXJ2aWNlLmhhc1Blcm1pc3Npb24oKWAgKyBgKnZhbEhhc1Blcm1pc3Npb25gICsgY29tcHV0ZWRzXG4gKiBgaXNPd25lcigpYC9gY2FuTWFuYWdlTWVtYmVycygpYC9gY2FuRWRpdE9yZygpYC4gTk8gc2UgZXhwb25lIGNvbW8gY29uZmlnLlxuICpcbiAqICoqQXV0by1yZWxvYWQgZW4gb3JnLXN3aXRjaCoqOiB1biBgZWZmZWN0YCByZWFjdGlvbmEgYSBgYWN0aXZlT3JnSWQoKWAgeSByZWNhcmdhXG4gKiBvcmcgKyBtaWVtYnJvcyBjdWFuZG8gZWwgdXN1YXJpbyBjYW1iaWEgZGUgb3JnYW5pemFjacOzbiBhY3RpdmEgbWllbnRyYXMgbGEgdmlzdGFcbiAqIGVzdMOhIG1vbnRhZGEuIEVsIGVmZmVjdCBjdWJyZSB0YW1iacOpbiBsYSBjYXJnYSBpbmljaWFsIChzaW4gZG9ibGUgY2FyZ2EpLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci4gYEFjdGl2YXRlZFJvdXRlYCBzZVxuICogaW55ZWN0YSBgeyBvcHRpb25hbDogdHJ1ZSB9YCBzb2xvIHBhcmEgbGVlciBlbCByb3V0ZSBkYXRhIGRlIGNvbmZpZyAobm8tb3BcbiAqIGVtYmViaWRvKS4gQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsXG4gKiBuYW1lc3BhY2UgKGRlZmF1bHQgYFNldHRpbmdzLk9yZ2FuaXphdGlvbmApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtb3JnYW5pemF0aW9uLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEhhc1Blcm1pc3Npb25EaXJlY3RpdmUsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTWVtYmVyQ2FyZENvbXBvbmVudCxcbiAgICBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50LFxuICAgIE1lbWJlckltcG9ydE1vZGFsQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0luZm8pIHtcbiAgICAgICAgPCEtLSBPcmcgSW5mbyAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnaW5mb1RpdGxlJyksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEBpZiAoY2FuRWRpdE9yZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJlZGl0QnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbkVkaXQoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdkZXRhaWwnLCByb3dzOiA0IH1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAob3JnRXJyb3JTdGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cIm9yZ0Vycm9yU3RhdGUoKSFcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAob3JnKCk7IGFzIG8pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1pbmZvLWZpZWxkIG9yZy1pbmZvLWZpZWxkLS1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tbGFiZWxcIj57eyB0dCgnaW5mb05hbWUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby12YWx1ZVwiPnt7IG8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1pbmZvLWZpZWxkIG9yZy1pbmZvLWZpZWxkLS1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tbGFiZWxcIj57eyB0dCgnaW5mb0Rlc2NyaXB0aW9uJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tdmFsdWUgb3JnLWluZm8tdmFsdWUtLW11dGVkXCI+e3sgby5kZXNjcmlwdGlvbiB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1pbmZvLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1pbmZvLWxhYmVsXCI+e3sgdHQoJ2luZm9QbGFuJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFuLWJhZGdlIHBsYW4tYmFkZ2UtLXt7IG8ucGxhbiB9fVwiPnt7IHBsYW5MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1pbmZvLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby1sYWJlbFwiPnt7IHR0KCdpbmZvVHlwZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tdmFsdWVcIj57eyBvLnR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd01lbWJlcnMpIHtcbiAgICAgICAgPCEtLSBNZW1iZXJzIC0tPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudDogdHQoJ21lbWJlcnNUaXRsZScpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICBAaWYgKG1lbWJlcnNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnbGlzdCcsIHJvd3M6IDMgfVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChtZW1iZXJzRXJyb3JTdGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cIm1lbWJlcnNFcnJvclN0YXRlKCkhXCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKG1lbWJlcnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdtZW1iZXJzRW1wdHknKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1iZXJzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChtIG9mIHZpc2libGVNZW1iZXJzKCk7IHRyYWNrIG0udXNlcklkKSB7XG4gICAgICAgICAgICAgICAgICA8dmFsLW1lbWJlci1jYXJkXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidvcmctbWVtYmVyLScgKyBtLnVzZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG0udXNlcklkLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IG0uaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBtLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgIGF2YXRhclVybDogbS5hdmF0YXIsXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZUxhYmVsOiBtLnJvbGVzWzBdID8gcm9sZUxhYmVsKG0ucm9sZXNbMF0pIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQXJpYUxhYmVsOiB0dCgndmlld01lbWJlckN0YScpLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQWN0aW9uKT1cIm9uVmlld01lbWJlcihtKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoIXNob3dBbGxNZW1iZXJzKCkgJiYgbWVtYmVycygpLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtYmVycy1zaG93LW1vcmVcIiAoY2xpY2spPVwic2hvd0FsbE1lbWJlcnMuc2V0KHRydWUpXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0dCgnbWVtYmVyc1Nob3dNb3JlJykgfX0gKHt7IG1lbWJlcnMoKS5sZW5ndGggLSAzIH19KVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0FsbE1lbWJlcnMoKSAmJiBtZW1iZXJzTmV4dFRva2VuKCkpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtYmVycy1zaG93LW1vcmVcIiBbZGlzYWJsZWRdPVwibG9hZGluZ01vcmVNZW1iZXJzKClcIiAoY2xpY2spPVwibG9hZE1vcmVNZW1iZXJzKClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGxvYWRpbmdNb3JlTWVtYmVycygpID8gJ+KApicgOiB0dCgnbWVtYmVyc1Nob3dNb3JlJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93Um9sZXMpIHtcbiAgICAgICAgPCEtLSBSb2xlcyB5IHBlcm1pc29zOiBzZWNjaW9uIGV4cGxpY2F0aXZhLCBkZXRhbGxlIGVuIGxhIHJ1dGEgZGUgcGVybWlzb3MgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgncm9sZXNTZWN0aW9uVGl0bGUnKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogdHQoJ3JvbGVzSGludCcpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwidmlld1Blcm1pc3Npb25zQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvblZpZXdQZXJtaXNzaW9ucygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93SW52aXRlKSB7XG4gICAgICAgIDwhLS0gSW52aXRlOiBzb2xvIGFkbWluKyAoZ2F0aW5nIFJCQUMgaW50ZXJubykgLS0+XG4gICAgICAgIDxzZWN0aW9uICp2YWxIYXNQZXJtaXNzaW9uPVwiJ3VzZXJzOionXCIgY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCIgZGF0YS10ZXN0aWQ9XCJvcmctaW52aXRlLXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52aXRlLWN0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludml0ZS1jdGFfX3RleHRcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2ludml0ZUN0YVRpdGxlJyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdpbnZpdGVDdGFIaW50JyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJvcGVuSW52aXRlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk9wZW5JbnZpdGUoKVwiIC8+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwib3BlbkltcG9ydEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25PcGVuSW1wb3J0KClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93VHJhbnNmZXJPd25lcnNoaXAgJiYgaXNPd25lcigpKSB7XG4gICAgICAgIDwhLS0gVHJhbnNmZXIgb3duZXJzaGlwOiBzb2xvIG93bmVyIChnYXRpbmcgUkJBQyBpbnRlcm5vKSAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCIgZGF0YS10ZXN0aWQ9XCJvcmctdHJhbnNmZXItc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgndHJhbnNmZXJUaXRsZScpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgndHJhbnNmZXJIaW50JyksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmICh0cmFuc2ZlcmFibGVNZW1iZXJzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwidHJhbnNmZXJCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uT3BlblRyYW5zZmVyKClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ21lbWJlcnNFbXB0eScpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dMZWF2ZSkge1xuICAgICAgICA8IS0tIExlYXZlIG9yZyAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdsZWF2ZVRpdGxlJyksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGlzT3duZXIoKSA/IHR0KCdsZWF2ZU93bmVySGludCcpIDogdHQoJ2xlYXZlSGludCcpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwibGVhdmVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uTGVhdmUoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGlzRGVidWcpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uIHJiYWMtZGVidWdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ1JCQUMgKGxpdmUpJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYmFjLWRlYnVnX19ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmJhYy1kZWJ1Z19fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmJhYy1kZWJ1Z19fbGFiZWxcIj5Sb2xlczwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYmFjLWRlYnVnX192YWx1ZVwiPnt7IGF1dGgucm9sZXMoKS5qb2luKCcsICcpIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmJhYy1kZWJ1Z19fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmJhYy1kZWJ1Z19fbGFiZWxcIj5QZXJtaXNvczwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYmFjLWRlYnVnX192YWx1ZSByYmFjLWRlYnVnX192YWx1ZS0tcGVybXNcIj57eyBhdXRoLnBlcm1pc3Npb25zKCkuam9pbignLCAnKSB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uICsgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1oZWFkZXItcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWdhcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLmludml0ZS1jdGEge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5pbnZpdGUtY3RhX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tY2FyZCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLm9yZy1pbmZvLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm9yZy1pbmZvLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5vcmctaW5mby1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby1maWVsZCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgIH1cbiAgICAgIC5vcmctaW5mby1maWVsZC0tZnVsbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLm9yZy1pbmZvLWZpZWxkOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgfVxuICAgICAgLm9yZy1pbmZvLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tcm93IC5vcmctaW5mby1maWVsZCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tcm93IC5vcmctaW5mby1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuICAgICAgLm9yZy1pbmZvLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3JnLWluZm8tdmFsdWUtLW11dGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgfVxuICAgICAgLnBsYW4tYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5wbGFuLWJhZGdlLS1mcmVlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCAjZDdkOGRhKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5wbGFuLWJhZGdlLS1wcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICAgLnBsYW4tYmFkZ2UtLWVudGVycHJpc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjVjNTQyO1xuICAgICAgICBjb2xvcjogIzIyMjtcbiAgICAgIH1cbiAgICAgIC5tZW1iZXJzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5tZW1iZXJzLXNob3ctbW9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgfVxuICAgICAgLnJiYWMtZGVidWcge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1Z19fYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICB9XG4gICAgICAucmJhYy1kZWJ1Z19fcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuICAgICAgLnJiYWMtZGVidWdfX2xhYmVsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBtaW4td2lkdGg6IDcycHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnJiYWMtZGVidWdfX3ZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgfVxuICAgICAgLnJiYWMtZGVidWdfX3ZhbHVlLS1wZXJtcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25WaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICByZWFkb25seSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcmVhZG9ubHkgaXNEZWJ1ZyA9IGlzRGV2TW9kZSgpO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBvcmdhbml6YXRpb25Db25maWdgIChwb2JsYWRvIHBvciBgcHJvdmlkZVZhbHRlY2hPcmdhbml6YXRpb25Sb3V0ZXNgKS5cbiAgICogYHJlc29sdmVkQ29uZmlnYCBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogT3JnYW5pemF0aW9uVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8T3JnYW5pemF0aW9uVmlld0NvbmZpZywgJ29uT3JnRWRpdGVkJyB8ICdvbk1lbWJlckludml0ZWQnIHwgJ29uT3duZXJzaGlwVHJhbnNmZXJyZWQnIHwgJ29uTGVmdE9yZyc+PiAmXG4gICAgICBQaWNrPE9yZ2FuaXphdGlvblZpZXdDb25maWcsICdvbk9yZ0VkaXRlZCcgfCAnb25NZW1iZXJJbnZpdGVkJyB8ICdvbk93bmVyc2hpcFRyYW5zZmVycmVkJyB8ICdvbkxlZnRPcmcnPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsnb3JnYW5pemF0aW9uQ29uZmlnJ10gPz8ge30pIGFzIE9yZ2FuaXphdGlvblZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBPcmdhbml6YXRpb25WaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd0luZm86IG1lcmdlZC5zaG93SW5mbyA/PyB0cnVlLFxuICAgICAgc2hvd01lbWJlcnM6IG1lcmdlZC5zaG93TWVtYmVycyA/PyB0cnVlLFxuICAgICAgc2hvd1JvbGVzOiBtZXJnZWQuc2hvd1JvbGVzID8/IHRydWUsXG4gICAgICBzaG93SW52aXRlOiBtZXJnZWQuc2hvd0ludml0ZSA/PyB0cnVlLFxuICAgICAgc2hvd1RyYW5zZmVyT3duZXJzaGlwOiBtZXJnZWQuc2hvd1RyYW5zZmVyT3duZXJzaGlwID8/IHRydWUsXG4gICAgICBzaG93TGVhdmU6IG1lcmdlZC5zaG93TGVhdmUgPz8gdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgdmlld1Blcm1pc3Npb25zUm91dGU6IG1lcmdlZC52aWV3UGVybWlzc2lvbnNSb3V0ZSA/PyBERUZBVUxUX1ZJRVdfUEVSTUlTU0lPTlNfUk9VVEUsXG4gICAgICBsZWF2ZVJlZGlyZWN0Um91dGU6IG1lcmdlZC5sZWF2ZVJlZGlyZWN0Um91dGUgPz8gREVGQVVMVF9MRUFWRV9SRURJUkVDVF9ST1VURSxcbiAgICAgIG9uT3JnRWRpdGVkOiBtZXJnZWQub25PcmdFZGl0ZWQsXG4gICAgICBvbk1lbWJlckludml0ZWQ6IG1lcmdlZC5vbk1lbWJlckludml0ZWQsXG4gICAgICBvbk93bmVyc2hpcFRyYW5zZmVycmVkOiBtZXJnZWQub25Pd25lcnNoaXBUcmFuc2ZlcnJlZCxcbiAgICAgIG9uTGVmdE9yZzogbWVyZ2VkLm9uTGVmdE9yZyxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKGNhcHR1cmFkbyBwYXJhIGxsYW1hZGFzIG5vLXJlYWN0aXZhcykuICovXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkgb3JnID0gc2lnbmFsPE9yZ2FuaXphdGlvbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGVhdmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3JnTG9hZEVycm9yID0gc2lnbmFsPHVua25vd24+KG51bGwpO1xuXG4gIHJlYWRvbmx5IG9yZ0Vycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGEgfCBudWxsPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLm9yZ0xvYWRFcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHsgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZVRpdGxlJyksIGVycm9yOiB0aGlzLnR0KCdlcnJvclRpdGxlJykgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVIaW50JyksXG4gICAgICAgIGVycm9yOiBpbnRlcnByZXRFcnJvcihlcnIpLm1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgcmV0cnlMYWJlbDogdGhpcy50dCgncmV0cnknKSxcbiAgICAgIG9uUmV0cnk6ICgpID0+IHRoaXMubG9hZE9yZygpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMubG9hZGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICByZWFkb25seSBtZW1iZXJzID0gc2lnbmFsPE1lbWJlckRldGFpbFtdPihbXSk7XG4gIHJlYWRvbmx5IG1lbWJlcnNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZW1iZXJzTG9hZEVycm9yID0gc2lnbmFsPHVua25vd24+KG51bGwpO1xuXG4gIHJlYWRvbmx5IG1lbWJlcnNFcnJvclN0YXRlID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhIHwgbnVsbD4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgZXJyID0gdGhpcy5tZW1iZXJzTG9hZEVycm9yKCk7XG4gICAgaWYgKCFlcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoZXJyLCB7XG4gICAgICB0aXRsZTogeyBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lVGl0bGUnKSwgZXJyb3I6IHRoaXMudHQoJ2Vycm9yVGl0bGUnKSB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZUhpbnQnKSxcbiAgICAgICAgZXJyb3I6IGludGVycHJldEVycm9yKGVycikubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnR0KCdyZXRyeScpLFxuICAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5sb2FkTWVtYmVycygpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMubWVtYmVyc0xvYWRpbmcoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbWVtYmVyc05leHRUb2tlbiA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbG9hZGluZ01vcmVNZW1iZXJzID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0FsbE1lbWJlcnMgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSB2aXNpYmxlTWVtYmVycyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnNob3dBbGxNZW1iZXJzKCkgPyB0aGlzLm1lbWJlcnMoKSA6IHRoaXMubWVtYmVycygpLnNsaWNlKDAsIDMpKSk7XG4gIHJlYWRvbmx5IHRyYW5zZmVycmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGF2YWlsYWJsZVJvbGVzID0gc2lnbmFsPE9yZ1JvbGVbXT4oW1xuICAgIHsgaWQ6ICd2aWV3ZXInLCBuYW1lOiAndmlld2VyJyB9LFxuICAgIHsgaWQ6ICdlZGl0b3InLCBuYW1lOiAnZWRpdG9yJyB9LFxuICAgIHsgaWQ6ICdhZG1pbicsIG5hbWU6ICdhZG1pbicgfSxcbiAgXSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdSA9IHRoaXMuYXV0aC51c2VyKCkgYXMge1xuICAgICAgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7XG4gICAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gICAgfSB8IG51bGw7XG4gICAgcmV0dXJuIHU/LmFjdGl2ZU9yZ0lkID8/IHU/LmFjdGl2ZU9yZyA/PyAnJztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXNlcklkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdXRoLnVzZXIoKT8udXNlcklkID8/ICcnKTtcblxuICByZWFkb25seSBpc093bmVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG8gPSB0aGlzLm9yZygpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMudXNlcklkKCk7XG4gICAgcmV0dXJuICEhbyAmJiAhIXVpZCAmJiBvLm93bmVySWQgPT09IHVpZDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY2FuRWRpdE9yZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNPd25lcigpIHx8IHRoaXMuYXV0aC5oYXNQZXJtaXNzaW9uKCdvcmc6bWFuYWdlJykpO1xuXG4gIHJlYWRvbmx5IGNhbk1hbmFnZU1lbWJlcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNPd25lcigpKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLnVzZXJJZCgpO1xuICAgIGNvbnN0IG1lID0gdGhpcy5tZW1iZXJzKCkuZmluZChtID0+IG0udXNlcklkID09PSB1aWQpO1xuICAgIGlmICghbWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gbWUucm9sZXMuc29tZShyID0+IHIgPT09ICdhZG1pbicgfHwgciA9PT0gJ3N1cGVyX2FkbWluJyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBhZ2VUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgcGFnZURlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZURlc2NyaXB0aW9uJykpO1xuXG4gIHJlYWRvbmx5IHBsYW5MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwbGFuID0gdGhpcy5vcmcoKT8ucGxhbjtcbiAgICBpZiAocGxhbiA9PT0gJ3BybycpIHJldHVybiB0aGlzLnR0KCdwbGFuUHJvJyk7XG4gICAgaWYgKHBsYW4gPT09ICdlbnRlcnByaXNlJykgcmV0dXJuIHRoaXMudHQoJ3BsYW5FbnRlcnByaXNlJyk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ3BsYW5GcmVlJyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVkaXRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2VkaXRDdGEnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgbGVhdmVCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2xlYXZlQ3RhJyksXG4gICAgdG9rZW46ICdvcmctbGVhdmUnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5pc093bmVyKCkgfHwgdGhpcy5sZWF2aW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHRyYW5zZmVyYWJsZU1lbWJlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbWJlcnMoKS5maWx0ZXIobSA9PiBtLnVzZXJJZCAhPT0gdGhpcy51c2VySWQoKSkpO1xuXG4gIHJlYWRvbmx5IHZpZXdQZXJtaXNzaW9uc0J1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgncm9sZXNWaWV3UGVybXMnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdvcmctdmlldy1wZXJtaXNzaW9ucycsXG4gIH0pKTtcblxuICByZWFkb25seSB0cmFuc2ZlckJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgndHJhbnNmZXJDdGEnKSxcbiAgICB0b2tlbjogJ29yZy10cmFuc2Zlci1zdWJtaXQnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy50cmFuc2ZlcnJpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgb3Blbkludml0ZUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnaW52aXRlT3BlbicpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgZmlsbDogJ3NvbGlkJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH0pKTtcblxuICByZWFkb25seSBvcGVuSW1wb3J0QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdpbXBvcnRPcGVuJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgLyoqIEd1YXJkYSBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBkaXNwYXJvIGRlbCBlZmZlY3QgKGV2aXRhIGRvYmxlIGNhcmdhKS4gKi9cbiAgcHJpdmF0ZSBsYXN0TG9hZGVkT3JnSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBPUkdBTklaQVRJT05fVklFV19JMThOKTtcbiAgICB9XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBBdXRvLXJlbG9hZCBlbiBvcmctc3dpdGNoOiByZWFjY2lvbmEgYSBhY3RpdmVPcmdJZCgpIHkgcmVjYXJnYSBvcmcgKyBtaWVtYnJvc1xuICAgIC8vIGN1YW5kbyBlbCB1c3VhcmlvIGNhbWJpYSBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YSBtaWVudHJhcyBsYSB2aXN0YSBlc3TDoVxuICAgIC8vIG1vbnRhZGEuIEN1YnJlIHRhbWJpw6luIGxhIGNhcmdhIGluaWNpYWwg4oCUIGBsYXN0TG9hZGVkT3JnSWRgIGV2aXRhIHJlY2FyZ2FyXG4gICAgLy8gZG9zIHZlY2VzIGVsIG1pc21vIGlkIChwLmVqLiBzaSBlbCBlZmZlY3QgcmUtY29ycmUgcG9yIG90cmEgZGVwZW5kZW5jaWEpLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlc2AgcG9ycXVlIGxhcyBsb2FkIGZucyBlc2NyaWJlbiBzaWduYWxzIHPDrW5jcm9uYW1lbnRlXG4gICAgLy8gKGxvYWRpbmcvZXJyb3IvdG9rZW4pIOKAlCBBbmd1bGFyIDE4IGJsb3F1ZWEgd3JpdGVzIGVuIGVmZmVjdCBzaW4gZWwgZmxhZy5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgICAgICBpZiAob3JnSWQgPT09IHRoaXMubGFzdExvYWRlZE9yZ0lkKSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdExvYWRlZE9yZ0lkID0gb3JnSWQ7XG4gICAgICAgIHRoaXMubG9hZE9yZygpO1xuICAgICAgICB0aGlzLmxvYWRNZW1iZXJzKCk7XG4gICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGNvbm5lY3RQYWdlUmVmcmVzaChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5sb2FkT3JnKCksIHRoaXMubG9hZE1lbWJlcnMoKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25FZGl0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IEVkaXRPcmdNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZzogdGhpcy5vcmcoKSxcbiAgICAgICAgb25TdWNjZXNzOiAodXBkYXRlZDogT3JnYW5pemF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcmcuc2V0KHVwZGF0ZWQpO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk9yZ0VkaXRlZD8uKCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25MZWF2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc093bmVyKCkgfHwgdGhpcy5sZWF2aW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdsZWF2ZVRpdGxlJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCdsZWF2ZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50dCgnbGVhdmVDdGEnKSB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ2NhbmNlbEN0YScpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMubGVhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5sZWF2ZU9yZyhvcmdJZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnbGVhdmVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKGNmZy5sZWF2ZVJlZGlyZWN0Um91dGUpO1xuICAgICAgY2ZnLm9uTGVmdE9yZz8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24ubGVhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2xlYXZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubGVhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uT3Blbkludml0ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBJbnZpdGVNZW1iZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZ0lkOiB0aGlzLmFjdGl2ZU9yZ0lkKCksXG4gICAgICAgIGV4aXN0aW5nTWVtYmVySWRzOiB0aGlzLm1lbWJlcnMoKS5tYXAobSA9PiBtLnVzZXJJZCksXG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25NZW1iZXJJbnZpdGVkPy4oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOTJdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45MixcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBvbk9wZW5JbXBvcnQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBvcmdJZDogdGhpcy5hY3RpdmVPcmdJZCgpLFxuICAgICAgICBhdmFpbGFibGVSb2xlczogdGhpcy5hdmFpbGFibGVSb2xlcygpLm1hcChyID0+IHIubmFtZSksXG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25NZW1iZXJJbnZpdGVkPy4oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOTJdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45MixcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBvblZpZXdQZXJtaXNzaW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRDb25maWcoKS52aWV3UGVybWlzc2lvbnNSb3V0ZSk7XG4gIH1cblxuICBvbk9wZW5UcmFuc2ZlcigpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgbWVtYmVyczogdGhpcy50cmFuc2ZlcmFibGVNZW1iZXJzKCksXG4gICAgICAgIG9uQ29uZmlybTogKG5ld093bmVySWQ6IHN0cmluZykgPT4gdm9pZCB0aGlzLm9uVHJhbnNmZXIobmV3T3duZXJJZCksXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjc1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuNzUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25UcmFuc2ZlcihuZXdPd25lcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5ld093bmVySWQgfHwgdGhpcy50cmFuc2ZlcnJpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybURpYWxvZy5jb25maXJtRGVzdHJ1Y3RpdmUoe1xuICAgICAgdGl0bGU6IHRoaXMudHQoJ3RyYW5zZmVyVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3RyYW5zZmVyQ29uZmlybScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCd0cmFuc2ZlckN0YScpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50dCgnY2FuY2VsQ3RhJykgfSxcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdC5jb25maXJtZWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgdGhpcy50cmFuc2ZlcnJpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UudHJhbnNmZXJPd25lcnNoaXAob3JnSWQsIG5ld093bmVySWQpKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3RyYW5zZmVyU3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sb2FkT3JnKCk7XG4gICAgICB0aGlzLmxvYWRNZW1iZXJzKCk7XG4gICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Pd25lcnNoaXBUcmFuc2ZlcnJlZD8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24udHJhbnNmZXInLFxuICAgICAgICBmYWxsYmFja0tleTogJ3RyYW5zZmVyRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMudHJhbnNmZXJyaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JnKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMub3JnTG9hZEVycm9yLnNldChudWxsKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLm9yZ1NlcnZpY2UuZ2V0T3JnKG9yZ0lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBvcmcgPT4ge1xuICAgICAgICAgIHRoaXMub3JnLnNldChvcmcpO1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5vcmdMb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkTWVtYmVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdGhpcy5tZW1iZXJzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5tZW1iZXJzTG9hZEVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLm1lbWJlcnNOZXh0VG9rZW4uc2V0KG51bGwpO1xuICAgIHRoaXMuc2hvd0FsbE1lbWJlcnMuc2V0KGZhbHNlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLm9yZ1NlcnZpY2UuZ2V0T3JnTWVtYmVycyhvcmdJZCwgeyBsaW1pdDogMjAgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZW5yaWNoV2l0aFByb2ZpbGVzKHJlcy5tZW1iZXJzKTtcbiAgICAgICAgICB0aGlzLm1lbWJlcnMuc2V0KGNhcmRzKTtcbiAgICAgICAgICB0aGlzLm1lbWJlcnNOZXh0VG9rZW4uc2V0KHJlcy5uZXh0VG9rZW4gPz8gbnVsbCk7XG4gICAgICAgICAgdGhpcy5tZW1iZXJzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5tZW1iZXJzTG9hZEVycm9yLnNldChlcnIpO1xuICAgICAgICAgIHRoaXMubWVtYmVyc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRNb3JlTWVtYmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMubWVtYmVyc05leHRUb2tlbigpO1xuICAgIGlmICghb3JnSWQgfHwgIXRva2VuIHx8IHRoaXMubG9hZGluZ01vcmVNZW1iZXJzKCkpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmdNb3JlTWVtYmVycy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlLmdldE9yZ01lbWJlcnMob3JnSWQsIHsgbGltaXQ6IDIwLCBuZXh0VG9rZW46IHRva2VuIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBhc3luYyByZXMgPT4ge1xuICAgICAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZW5yaWNoV2l0aFByb2ZpbGVzKHJlcy5tZW1iZXJzKTtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnVwZGF0ZShwcmV2ID0+IFsuLi5wcmV2LCAuLi5jYXJkc10pO1xuICAgICAgICB0aGlzLm1lbWJlcnNOZXh0VG9rZW4uc2V0KHJlcy5uZXh0VG9rZW4gPz8gbnVsbCk7XG4gICAgICAgIHRoaXMubG9hZGluZ01vcmVNZW1iZXJzLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgICBjb250ZXh0OiAnb3JnYW5pemF0aW9uLmxvYWRNb3JlTWVtYmVycycsXG4gICAgICAgICAgZmFsbGJhY2tLZXk6ICdtZW1iZXJzRXJyb3InLFxuICAgICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb3JlTWVtYmVycy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW5yaWNoV2l0aFByb2ZpbGVzKG1lbWJlcnM6IE9yZ01lbWJlcltdKTogUHJvbWlzZTxNZW1iZXJEZXRhaWxbXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBtZW1iZXJzLm1hcChhc3luYyBtID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzbmFwID0gYXdhaXQgZ2V0RG9jKGRvYyh0aGlzLmZpcmVzdG9yZSwgYHByb2ZpbGVzLyR7bS51c2VySWR9YCkpO1xuICAgICAgICAgIGNvbnN0IHAgPSBzbmFwLmV4aXN0cygpID8gc25hcC5kYXRhKCkgOiB7fTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubSxcbiAgICAgICAgICAgIGhhbmRsZTogcFsnaGFuZGxlJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXZhdGFyOiAocFsnYXZhdGFyVXJsJ10gPz8gcFsnYXZhdGFyJ10pIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5hbWU6IChwWyduYW1lJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSB8fCBtLm5hbWUsXG4gICAgICAgICAgfSBhcyBNZW1iZXJEZXRhaWw7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBtIGFzIE1lbWJlckRldGFpbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLm1hcChyID0+IChyLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgPyByLnZhbHVlIDogKHt9IGFzIE1lbWJlckRldGFpbCkpKTtcbiAgfVxuXG4gIGxvYWRSb2xlcygpOiB2b2lkIHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgdGhpcy5vcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJvbGVzID0+IHtcbiAgICAgICAgaWYgKHJvbGVzLmxlbmd0aCkgdGhpcy5hdmFpbGFibGVSb2xlcy5zZXQocm9sZXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJvbGVMYWJlbChyb2xlSWRPck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVHJ5IHRvIGZpbmQgYnkgaWQgZmlyc3QgKFVVSUQpLCB0aGVuIGJ5IG5hbWVcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuYXZhaWxhYmxlUm9sZXMoKS5maW5kKHIgPT4gci5pZCA9PT0gcm9sZUlkT3JOYW1lIHx8IHIubmFtZSA9PT0gcm9sZUlkT3JOYW1lKTtcbiAgICBjb25zdCBuYW1lID0gZm91bmQ/Lm5hbWUgPz8gcm9sZUlkT3JOYW1lO1xuICAgIGNvbnN0IGtleU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHZpZXdlcjogJ3JvbGVWaWV3ZXInLFxuICAgICAgZWRpdG9yOiAncm9sZUVkaXRvcicsXG4gICAgICBhZG1pbjogJ3JvbGVBZG1pbicsXG4gICAgICBzdXBlcl9hZG1pbjogJ3JvbGVTdXBlckFkbWluJyxcbiAgICB9O1xuICAgIGNvbnN0IGtleSA9IGtleU1hcFtuYW1lXSA/PyBuYW1lO1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy50dChrZXkpO1xuICAgIHJldHVybiBsYWJlbCAmJiAhbGFiZWwuc3RhcnRzV2l0aCgnWycpID8gbGFiZWwgOiBuYW1lO1xuICB9XG5cbiAgcGVybWlzc2lvbkxhYmVsKHBlcm06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBlcm0gPT09ICcqOionKSByZXR1cm4gdGhpcy50dCgncGVybUFsbCcpO1xuICAgIGNvbnN0IFtyZXNvdXJjZSwgYWN0aW9uXSA9IHBlcm0uc3BsaXQoJzonKTtcbiAgICBjb25zdCByZXNLZXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB1c2VyczogJ3Blcm1Vc2VycycsXG4gICAgICBkb2N1bWVudHM6ICdwZXJtRG9jdW1lbnRzJyxcbiAgICAgIHJvbGVzOiAncGVybVJvbGVzJyxcbiAgICAgIG1lZGlhOiAncGVybU1lZGlhJyxcbiAgICAgIHRlbXBsYXRlczogJ3Blcm1UZW1wbGF0ZXMnLFxuICAgICAgJyonOiAncGVybUFsbCcsXG4gICAgfTtcbiAgICBjb25zdCBhY3RLZXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICByZWFkOiAncGVybVJlYWQnLFxuICAgICAgd3JpdGU6ICdwZXJtV3JpdGUnLFxuICAgICAgY3JlYXRlOiAncGVybUNyZWF0ZScsXG4gICAgICBkZWxldGU6ICdwZXJtRGVsZXRlJyxcbiAgICAgIG1hbmFnZTogJ3Blcm1NYW5hZ2UnLFxuICAgICAgJyonOiAncGVybUFsbCcsXG4gICAgfTtcbiAgICBjb25zdCByZXMgPSB0aGlzLnR0KHJlc0tleVtyZXNvdXJjZV0gPz8gcmVzb3VyY2UpO1xuICAgIGNvbnN0IGFjdCA9IHRoaXMudHQoYWN0S2V5W2FjdGlvbl0gPz8gYWN0aW9uKTtcbiAgICByZXR1cm4gYCR7cmVzfTogJHthY3R9YDtcbiAgfVxuXG4gIG9uVmlld01lbWJlcihtZW1iZXI6IE1lbWJlckRldGFpbCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IE1lbWJlckRldGFpbE1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgbWVtYmVyLFxuICAgICAgICBvcmdJZDogdGhpcy5hY3RpdmVPcmdJZCgpLFxuICAgICAgICBhdmFpbGFibGVSb2xlczogdGhpcy5hdmFpbGFibGVSb2xlcygpLFxuICAgICAgICBjYW5NYW5hZ2U6IHRoaXMuY2FuTWFuYWdlTWVtYmVycygpICYmIG1lbWJlci51c2VySWQgIT09IHRoaXMudXNlcklkKCksXG4gICAgICAgIGlzU2VsZjogbWVtYmVyLnVzZXJJZCA9PT0gdGhpcy51c2VySWQoKSxcbiAgICAgICAgb25DaGFuZ2VkOiAoKSA9PiB0aGlzLmxvYWRNZW1iZXJzKCksXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjddLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC43LFxuICAgICAgICBzaG93SGFuZGxlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -53,6 +53,7 @@ export const ORGANIZATION_VIEW_I18N = {
53
53
  inviteCtaTitle: '¿Deseas agregar a alguien?',
54
54
  inviteCtaHint: 'Invita a usuarios a unirse a tu organización.',
55
55
  inviteOpen: 'Invitar',
56
+ importOpen: 'Importar',
56
57
  viewMemberCta: 'Ver miembro',
57
58
  roleViewer: 'Visor',
58
59
  roleEditor: 'Editor',
@@ -122,6 +123,7 @@ export const ORGANIZATION_VIEW_I18N = {
122
123
  inviteCtaTitle: 'Want to add someone?',
123
124
  inviteCtaHint: 'Invite users to join your organization.',
124
125
  inviteOpen: 'Invite',
126
+ importOpen: 'Import',
125
127
  viewMemberCta: 'View member',
126
128
  roleViewer: 'Viewer',
127
129
  roleEditor: 'Editor',
@@ -145,4 +147,4 @@ export const ORGANIZATION_VIEW_I18N = {
145
147
  membersShowMore: 'Show more',
146
148
  },
147
149
  };
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnYW5pemF0aW9uLXZpZXcvb3JnYW5pemF0aW9uLXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUI7SUFDdEQsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsZUFBZSxFQUFFLGlDQUFpQztRQUNsRCxTQUFTLEVBQUUsYUFBYTtRQUN4QixRQUFRLEVBQUUsUUFBUTtRQUNsQixlQUFlLEVBQUUsYUFBYTtRQUM5QixRQUFRLEVBQUUsTUFBTTtRQUNoQixRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsVUFBVTtRQUNyQixZQUFZLEVBQUUsVUFBVTtRQUN4QixZQUFZLEVBQUUsbUJBQW1CO1FBQ2pDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsYUFBYSxFQUFFLHFCQUFxQjtRQUNwQyxXQUFXLEVBQUUsa0NBQWtDO1FBQy9DLFlBQVksRUFBRSxxQ0FBcUM7UUFDbkQsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxTQUFTLEVBQUUsOENBQThDO1FBQ3pELFFBQVEsRUFBRSxPQUFPO1FBQ2pCLGNBQWMsRUFBRSw4REFBOEQ7UUFDOUUsWUFBWSxFQUFFLDRCQUE0QjtRQUMxQyxRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsWUFBWSxF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QUFzQjtRQUN0QyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxTQUFTLEVBQ1AsOEhBQThIO1FBQ2hJLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGVBQWUsRUFBRSxXQUFXO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikgZW1iZWJpZG9zIGVuIGB2YWwtb3JnYW5pemF0aW9uLXZpZXdgLiBBdXRvLXJlZ2lzdHJhZG9zIGVuXG4gKiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuT3JnYW5pemF0aW9uYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFBvcnRhZG8gZGUgYE9SR19JMThOX0NPTlRFTlRgIChzaG93Y2FzZSkgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphY2nDs24nLFxuICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0dlc3Rpb25hIHR1IG9yZ2FuaXphY2nDs24gYWN0aXZhJyxcbiAgICBpbmZvVGl0bGU6ICdJbmZvcm1hY2nDs24nLFxuICAgIGluZm9OYW1lOiAnTm9tYnJlJyxcbiAgICBpbmZvRGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUaXBvJyxcbiAgICBlZGl0Q3RhOiAnRWRpdGFyJyxcbiAgICBzYXZlQ3RhOiAnR3VhcmRhcicsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsYXInLFxuICAgIG1lbWJlcnNUaXRsZTogJ01pZW1icm9zJyxcbiAgICBtZW1iZXJzRW1wdHk6ICdTaW4gbWllbWJyb3MgYcO6bi4nLFxuICAgIG1lbWJlclJvbGVzOiAnUm9sZXMnLFxuICAgIGludml0ZVRpdGxlOiAnSW52aXRhcicsXG4gICAgaW52aXRlRW1haWw6ICdDb3JyZW8gZWxlY3Ryw7NuaWNvJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sJyxcbiAgICBpbnZpdGVDdGE6ICdJbnZpdGFyJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhY2nDs24gZW52aWFkYS4nLFxuICAgIGludml0ZUVycm9yOiAnTm8gc2UgcHVkbyBlbnZpYXIgbGEgaW52aXRhY2nDs24uJyxcbiAgICBtZW1iZXJzRXJyb3I6ICdObyBzZSBwdWRpZXJvbiBjYXJnYXIgbG9zIG1pZW1icm9zLicsXG4gICAgbGVhdmVUaXRsZTogJ1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIGxlYXZlSGludDogJ0RlamFyw6FzIGRlIHRlbmVyIGFjY2VzbyBhIGVzdGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGxlYXZlQ3RhOiAnU2FsaXInLFxuICAgIGxlYXZlT3duZXJIaW50OiAnRXJlcyBlbCBwcm9waWV0YXJpby4gVHJhbnNmaWVyZSBsYSBwcm9waWVkYWQgYW50ZXMgZGUgc2FsaXIuJyxcbiAgICBsZWF2ZUNvbmZpcm06ICfCv1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24/JyxcbiAgICBwbGFuRnJlZTogJ0dyYXR1aXRvJyxcbiAgICBwbGFuUHJvOiAnUHJvJyxcbiAgICBwbGFuRW50ZXJwcmlzZTogJ0VtcHJlc2EnLFxuICAgIHNhdmVTdWNjZXNzOiAnT3JnYW5pemFjacOzbiBhY3R1YWxpemFkYS4nLFxuICAgIGxlYXZlU3VjY2VzczogJ0hhcyBzYWxpZG8gZGUgbGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGVycm9yVGl0bGU6ICdObyBzZSBwdWRvIGNhcmdhciBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICBvZmZsaW5lVGl0bGU6ICdTaW4gY29uZXhpw7NuJyxcbiAgICBvZmZsaW5lSGludDogJ1ZlcmlmaWNhIHR1IGNvbmV4acOzbiBlIGludGVudGEgZGUgbnVldm8uJyxcbiAgICByZXRyeTogJ1JlaW50ZW50YXInLFxuICAgIHNhdmVFcnJvcjogJ05vIHNlIHB1ZG8gZ3VhcmRhci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIGxlYXZlRXJyb3I6ICdObyBzZSBwdWRvIHNhbGlyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgdHJhbnNmZXJUaXRsZTogJ1RyYW5zZmVyaXIgcHJvcGllZGFkJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdFbGlnZSB1biBtaWVtYnJvIHBhcmEgdHJhbnNmZXJpcmxlIGxhIHByb3BpZWRhZCBkZSBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY2Npb25hciBudWV2byBwcm9waWV0YXJpbycsXG4gICAgdHJhbnNmZXJDdGE6ICdUcmFuc2ZlcmlyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICfCv1RyYW5zZmVyaXIgbGEgcHJvcGllZGFkIGEgZXN0ZSBtaWVtYnJvPyBQZXJkZXLDoXMgZWwgcm9sIGRlIHByb3BpZXRhcmlvLicsXG4gICAgdHJhbnNmZXJTdWNjZXNzOiAnUHJvcGllZGFkIHRyYW5zZmVyaWRhLicsXG4gICAgdHJhbnNmZXJFcnJvcjogJ05vIHNlIHB1ZG8gdHJhbnNmZXJpciBsYSBwcm9waWVkYWQuJyxcbiAgICBpbnZpdGVDdGFUaXRsZTogJ8K/RGVzZWFzIGFncmVnYXIgYSBhbGd1aWVuPycsXG4gICAgaW52aXRlQ3RhSGludDogJ0ludml0YSBhIHVzdWFyaW9zIGEgdW5pcnNlIGEgdHUgb3JnYW5pemFjacOzbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGFyJyxcbiAgICB2aWV3TWVtYmVyQ3RhOiAnVmVyIG1pZW1icm8nLFxuICAgIHJvbGVWaWV3ZXI6ICdWaXNvcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJvbGVzU2VjdGlvblRpdGxlOiAnUm9sZXMgeSBwZXJtaXNvcycsXG4gICAgcm9sZXNIaW50OlxuICAgICAgJ1R1IG9yZ2FuaXphY2nDs24gdGllbmUgcm9sZXMgcXVlIGNvbnRyb2xhbiBsbyBxdWUgY2FkYSBtaWVtYnJvIHB1ZWRlIHZlciB5IGhhY2VyLiBDYWRhIHJvbCBsbGV2YSB1biBjb25qdW50byBkZSBwZXJtaXNvcyBhc29jaWFkb3MuJyxcbiAgICByb2xlc1ZpZXdQZXJtczogJ1ZlciByb2xlcyB5IHBlcm1pc29zJyxcbiAgICByb2xlc1N5c3RlbUJhZGdlOiAnU2lzdGVtYScsXG4gICAgcGVybUFsbDogJ1RvZG8nLFxuICAgIHBlcm1Vc2VyczogJ1VzdWFyaW9zJyxcbiAgICBwZXJtRG9jdW1lbnRzOiAnRG9jdW1lbnRvcycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnUGxhbnRpbGxhcycsXG4gICAgcGVybVJlYWQ6ICdMZWVyJyxcbiAgICBwZXJtV3JpdGU6ICdFc2NyaWJpcicsXG4gICAgcGVybUNyZWF0ZTogJ0NyZWFyJyxcbiAgICBwZXJtRGVsZXRlOiAnRWxpbWluYXInLFxuICAgIHBlcm1NYW5hZ2U6ICdHZXN0aW9uYXInLFxuICAgIG1lbWJlcnNTaG93TW9yZTogJ1ZlciBtw6FzJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwYWdlVGl0bGU6ICdPcmdhbml6YXRpb24nLFxuICAgIHBhZ2VEZXNjcmlwdGlvbjogJ01hbmFnZSB5b3VyIGFjdGl2ZSBvcmdhbml6YXRpb24nLFxuICAgIGluZm9UaXRsZTogJ0luZm9ybWF0aW9uJyxcbiAgICBpbmZvTmFtZTogJ05hbWUnLFxuICAgIGluZm9EZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJyxcbiAgICBpbmZvUGxhbjogJ1BsYW4nLFxuICAgIGluZm9UeXBlOiAnVHlwZScsXG4gICAgZWRpdEN0YTogJ0VkaXQnLFxuICAgIHNhdmVDdGE6ICdTYXZlJyxcbiAgICBjYW5jZWxDdGE6ICdDYW5jZWwnLFxuICAgIG1lbWJlcnNUaXRsZTogJ01lbWJlcnMnLFxuICAgIG1lbWJlcnNFbXB0eTogJ05vIG1lbWJlcnMgeWV0LicsXG4gICAgbWVtYmVyUm9sZXM6ICdSb2xlcycsXG4gICAgaW52aXRlVGl0bGU6ICdJbnZpdGUnLFxuICAgIGludml0ZUVtYWlsOiAnRW1haWwgYWRkcmVzcycsXG4gICAgaW52aXRlUm9sZTogJ1JvbGUnLFxuICAgIGludml0ZUN0YTogJ0ludml0ZScsXG4gICAgaW52aXRlU3VjY2VzczogJ0ludml0YXRpb24gc2VudC4nLFxuICAgIGludml0ZUVycm9yOiAnQ291bGQgbm90IHNlbmQgaW52aXRhdGlvbi4nLFxuICAgIG1lbWJlcnNFcnJvcjogJ0NvdWxkIG5vdCBsb2FkIG1lbWJlcnMuJyxcbiAgICBsZWF2ZVRpdGxlOiAnTGVhdmUgb3JnYW5pemF0aW9uJyxcbiAgICBsZWF2ZUhpbnQ6ICdZb3Ugd2lsbCBsb3NlIGFjY2VzcyB0byB0aGlzIG9yZ2FuaXphdGlvbi4nLFxuICAgIGxlYXZlQ3RhOiAnTGVhdmUnLFxuICAgIGxlYXZlT3duZXJIaW50OiAnWW91IGFyZSB0aGUgb3duZXIuIFRyYW5zZmVyIG93bmVyc2hpcCBiZWZvcmUgbGVhdmluZy4nLFxuICAgIGxlYXZlQ29uZmlybTogJ0xlYXZlIHRoaXMgb3JnYW5pemF0aW9uPycsXG4gICAgcGxhbkZyZWU6ICdGcmVlJyxcbiAgICBwbGFuUHJvOiAnUHJvJyxcbiAgICBwbGFuRW50ZXJwcmlzZTogJ0VudGVycHJpc2UnLFxuICAgIHNhdmVTdWNjZXNzOiAnT3JnYW5pemF0aW9uIHVwZGF0ZWQuJyxcbiAgICBsZWF2ZVN1Y2Nlc3M6ICdZb3UgaGF2ZSBsZWZ0IHRoZSBvcmdhbml6YXRpb24uJyxcbiAgICBlcnJvclRpdGxlOiAnQ291bGQgbm90IGxvYWQgb3JnYW5pemF0aW9uJyxcbiAgICBvZmZsaW5lVGl0bGU6ICdObyBjb25uZWN0aW9uJyxcbiAgICBvZmZsaW5lSGludDogJ0NoZWNrIHlvdXIgY29ubmVjdGlvbiBhbmQgdHJ5IGFnYWluLicsXG4gICAgcmV0cnk6ICdSZXRyeScsXG4gICAgc2F2ZUVycm9yOiAnQ291bGQgbm90IHNhdmUuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICBsZWF2ZUVycm9yOiAnQ291bGQgbm90IGxlYXZlLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgdHJhbnNmZXJUaXRsZTogJ1RyYW5zZmVyIG93bmVyc2hpcCcsXG4gICAgdHJhbnNmZXJIaW50OiAnQ2hvb3NlIGEgbWVtYmVyIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGlzIG9yZ2FuaXphdGlvbi4nLFxuICAgIHRyYW5zZmVyU2VsZWN0OiAnU2VsZWN0IG5ldyBvd25lcicsXG4gICAgdHJhbnNmZXJDdGE6ICdUcmFuc2ZlcicsXG4gICAgdHJhbnNmZXJDb25maXJtOiAnVHJhbnNmZXIgb3duZXJzaGlwIHRvIHRoaXMgbWVtYmVyPyBZb3Ugd2lsbCBsb3NlIHRoZSBvd25lciByb2xlLicsXG4gICAgdHJhbnNmZXJTdWNjZXNzOiAnT3duZXJzaGlwIHRyYW5zZmVycmVkLicsXG4gICAgdHJhbnNmZXJFcnJvcjogJ0NvdWxkIG5vdCB0cmFuc2ZlciBvd25lcnNoaXAuJyxcbiAgICBpbnZpdGVDdGFUaXRsZTogJ1dhbnQgdG8gYWRkIHNvbWVvbmU/JyxcbiAgICBpbnZpdGVDdGFIaW50OiAnSW52aXRlIHVzZXJzIHRvIGpvaW4geW91ciBvcmdhbml6YXRpb24uJyxcbiAgICBpbnZpdGVPcGVuOiAnSW52aXRlJyxcbiAgICB2aWV3TWVtYmVyQ3RhOiAnVmlldyBtZW1iZXInLFxuICAgIHJvbGVWaWV3ZXI6ICdWaWV3ZXInLFxuICAgIHJvbGVFZGl0b3I6ICdFZGl0b3InLFxuICAgIHJvbGVBZG1pbjogJ0FkbWluJyxcbiAgICByb2xlU3VwZXJBZG1pbjogJ1N1cGVyIEFkbWluJyxcbiAgICByb2xlc1NlY3Rpb25UaXRsZTogJ1JvbGVzICYgcGVybWlzc2lvbnMnLFxuICAgIHJvbGVzSGludDpcbiAgICAgICdZb3VyIG9yZ2FuaXphdGlvbiBoYXMgcm9sZXMgdGhhdCBjb250cm9sIHdoYXQgZWFjaCBtZW1iZXIgY2FuIHNlZSBhbmQgZG8uIEVhY2ggcm9sZSBjYXJyaWVzIGEgc2V0IG9mIGFzc29jaWF0ZWQgcGVybWlzc2lvbnMuJyxcbiAgICByb2xlc1ZpZXdQZXJtczogJ1ZpZXcgcm9sZXMgJiBwZXJtaXNzaW9ucycsXG4gICAgcm9sZXNTeXN0ZW1CYWRnZTogJ1N5c3RlbScsXG4gICAgcGVybUFsbDogJ0FsbCcsXG4gICAgcGVybVVzZXJzOiAnVXNlcnMnLFxuICAgIHBlcm1Eb2N1bWVudHM6ICdEb2N1bWVudHMnLFxuICAgIHBlcm1Sb2xlczogJ1JvbGVzJyxcbiAgICBwZXJtTWVkaWE6ICdNZWRpYScsXG4gICAgcGVybVRlbXBsYXRlczogJ1RlbXBsYXRlcycsXG4gICAgcGVybVJlYWQ6ICdSZWFkJyxcbiAgICBwZXJtV3JpdGU6ICdXcml0ZScsXG4gICAgcGVybUNyZWF0ZTogJ0NyZWF0ZScsXG4gICAgcGVybURlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcGVybU1hbmFnZTogJ01hbmFnZScsXG4gICAgbWVtYmVyc1Nob3dNb3JlOiAnU2hvdyBtb3JlJyxcbiAgfSxcbn07XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnYW5pemF0aW9uLXZpZXcvb3JnYW5pemF0aW9uLXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUI7SUFDdEQsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsZUFBZSxFQUFFLGlDQUFpQztRQUNsRCxTQUFTLEVBQUUsYUFBYTtRQUN4QixRQUFRLEVBQUUsUUFBUTtRQUNsQixlQUFlLEVBQUUsYUFBYTtRQUM5QixRQUFRLEVBQUUsTUFBTTtRQUNoQixRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsVUFBVTtRQUNyQixZQUFZLEVBQUUsVUFBVTtRQUN4QixZQUFZLEVBQUUsbUJBQW1CO1FBQ2pDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsYUFBYSxFQUFFLHFCQUFxQjtRQUNwQyxXQUFXLEVBQUUsa0NBQWtDO1FBQy9DLFlBQVksRUFBRSxxQ0FBcUM7UUFDbkQsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxTQUFTLEVBQUUsOENBQThDO1FBQ3pELFFBQVEsRUFBRSxPQUFPO1FBQ2pCLGNBQWMsRUFBRSw4REFBOEQ7UUFDOUUsWUFBWSxFQUFFLDRCQUE0QjtRQUMxQyxRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsWUFBWSxF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K0I7UUFDOUMsY0FBYyxFQUFFLHNCQUFzQjtRQUN0QyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxTQUFTLEVBQ1AsOEhBQThIO1FBQ2hJLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGVBQWUsRUFBRSxXQUFXO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikgZW1iZWJpZG9zIGVuIGB2YWwtb3JnYW5pemF0aW9uLXZpZXdgLiBBdXRvLXJlZ2lzdHJhZG9zIGVuXG4gKiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuT3JnYW5pemF0aW9uYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFBvcnRhZG8gZGUgYE9SR19JMThOX0NPTlRFTlRgIChzaG93Y2FzZSkgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphY2nDs24nLFxuICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0dlc3Rpb25hIHR1IG9yZ2FuaXphY2nDs24gYWN0aXZhJyxcbiAgICBpbmZvVGl0bGU6ICdJbmZvcm1hY2nDs24nLFxuICAgIGluZm9OYW1lOiAnTm9tYnJlJyxcbiAgICBpbmZvRGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUaXBvJyxcbiAgICBlZGl0Q3RhOiAnRWRpdGFyJyxcbiAgICBzYXZlQ3RhOiAnR3VhcmRhcicsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsYXInLFxuICAgIG1lbWJlcnNUaXRsZTogJ01pZW1icm9zJyxcbiAgICBtZW1iZXJzRW1wdHk6ICdTaW4gbWllbWJyb3MgYcO6bi4nLFxuICAgIG1lbWJlclJvbGVzOiAnUm9sZXMnLFxuICAgIGludml0ZVRpdGxlOiAnSW52aXRhcicsXG4gICAgaW52aXRlRW1haWw6ICdDb3JyZW8gZWxlY3Ryw7NuaWNvJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sJyxcbiAgICBpbnZpdGVDdGE6ICdJbnZpdGFyJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhY2nDs24gZW52aWFkYS4nLFxuICAgIGludml0ZUVycm9yOiAnTm8gc2UgcHVkbyBlbnZpYXIgbGEgaW52aXRhY2nDs24uJyxcbiAgICBtZW1iZXJzRXJyb3I6ICdObyBzZSBwdWRpZXJvbiBjYXJnYXIgbG9zIG1pZW1icm9zLicsXG4gICAgbGVhdmVUaXRsZTogJ1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIGxlYXZlSGludDogJ0RlamFyw6FzIGRlIHRlbmVyIGFjY2VzbyBhIGVzdGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGxlYXZlQ3RhOiAnU2FsaXInLFxuICAgIGxlYXZlT3duZXJIaW50OiAnRXJlcyBlbCBwcm9waWV0YXJpby4gVHJhbnNmaWVyZSBsYSBwcm9waWVkYWQgYW50ZXMgZGUgc2FsaXIuJyxcbiAgICBsZWF2ZUNvbmZpcm06ICfCv1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24/JyxcbiAgICBwbGFuRnJlZTogJ0dyYXR1aXRvJyxcbiAgICBwbGFuUHJvOiAnUHJvJyxcbiAgICBwbGFuRW50ZXJwcmlzZTogJ0VtcHJlc2EnLFxuICAgIHNhdmVTdWNjZXNzOiAnT3JnYW5pemFjacOzbiBhY3R1YWxpemFkYS4nLFxuICAgIGxlYXZlU3VjY2VzczogJ0hhcyBzYWxpZG8gZGUgbGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGVycm9yVGl0bGU6ICdObyBzZSBwdWRvIGNhcmdhciBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICBvZmZsaW5lVGl0bGU6ICdTaW4gY29uZXhpw7NuJyxcbiAgICBvZmZsaW5lSGludDogJ1ZlcmlmaWNhIHR1IGNvbmV4acOzbiBlIGludGVudGEgZGUgbnVldm8uJyxcbiAgICByZXRyeTogJ1JlaW50ZW50YXInLFxuICAgIHNhdmVFcnJvcjogJ05vIHNlIHB1ZG8gZ3VhcmRhci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIGxlYXZlRXJyb3I6ICdObyBzZSBwdWRvIHNhbGlyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgdHJhbnNmZXJUaXRsZTogJ1RyYW5zZmVyaXIgcHJvcGllZGFkJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdFbGlnZSB1biBtaWVtYnJvIHBhcmEgdHJhbnNmZXJpcmxlIGxhIHByb3BpZWRhZCBkZSBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY2Npb25hciBudWV2byBwcm9waWV0YXJpbycsXG4gICAgdHJhbnNmZXJDdGE6ICdUcmFuc2ZlcmlyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICfCv1RyYW5zZmVyaXIgbGEgcHJvcGllZGFkIGEgZXN0ZSBtaWVtYnJvPyBQZXJkZXLDoXMgZWwgcm9sIGRlIHByb3BpZXRhcmlvLicsXG4gICAgdHJhbnNmZXJTdWNjZXNzOiAnUHJvcGllZGFkIHRyYW5zZmVyaWRhLicsXG4gICAgdHJhbnNmZXJFcnJvcjogJ05vIHNlIHB1ZG8gdHJhbnNmZXJpciBsYSBwcm9waWVkYWQuJyxcbiAgICBpbnZpdGVDdGFUaXRsZTogJ8K/RGVzZWFzIGFncmVnYXIgYSBhbGd1aWVuPycsXG4gICAgaW52aXRlQ3RhSGludDogJ0ludml0YSBhIHVzdWFyaW9zIGEgdW5pcnNlIGEgdHUgb3JnYW5pemFjacOzbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGFyJyxcbiAgICBpbXBvcnRPcGVuOiAnSW1wb3J0YXInLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWZXIgbWllbWJybycsXG4gICAgcm9sZVZpZXdlcjogJ1Zpc29yJyxcbiAgICByb2xlRWRpdG9yOiAnRWRpdG9yJyxcbiAgICByb2xlQWRtaW46ICdBZG1pbicsXG4gICAgcm9sZVN1cGVyQWRtaW46ICdTdXBlciBBZG1pbicsXG4gICAgcm9sZXNTZWN0aW9uVGl0bGU6ICdSb2xlcyB5IHBlcm1pc29zJyxcbiAgICByb2xlc0hpbnQ6XG4gICAgICAnVHUgb3JnYW5pemFjacOzbiB0aWVuZSByb2xlcyBxdWUgY29udHJvbGFuIGxvIHF1ZSBjYWRhIG1pZW1icm8gcHVlZGUgdmVyIHkgaGFjZXIuIENhZGEgcm9sIGxsZXZhIHVuIGNvbmp1bnRvIGRlIHBlcm1pc29zIGFzb2NpYWRvcy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmVyIHJvbGVzIHkgcGVybWlzb3MnLFxuICAgIHJvbGVzU3lzdGVtQmFkZ2U6ICdTaXN0ZW1hJyxcbiAgICBwZXJtQWxsOiAnVG9kbycsXG4gICAgcGVybVVzZXJzOiAnVXN1YXJpb3MnLFxuICAgIHBlcm1Eb2N1bWVudHM6ICdEb2N1bWVudG9zJyxcbiAgICBwZXJtUm9sZXM6ICdSb2xlcycsXG4gICAgcGVybU1lZGlhOiAnTWVkaWEnLFxuICAgIHBlcm1UZW1wbGF0ZXM6ICdQbGFudGlsbGFzJyxcbiAgICBwZXJtUmVhZDogJ0xlZXInLFxuICAgIHBlcm1Xcml0ZTogJ0VzY3JpYmlyJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXInLFxuICAgIHBlcm1EZWxldGU6ICdFbGltaW5hcicsXG4gICAgcGVybU1hbmFnZTogJ0dlc3Rpb25hcicsXG4gICAgbWVtYmVyc1Nob3dNb3JlOiAnVmVyIG3DoXMnLFxuICB9LFxuICBlbjoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphdGlvbicsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnTWFuYWdlIHlvdXIgYWN0aXZlIG9yZ2FuaXphdGlvbicsXG4gICAgaW5mb1RpdGxlOiAnSW5mb3JtYXRpb24nLFxuICAgIGluZm9OYW1lOiAnTmFtZScsXG4gICAgaW5mb0Rlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUeXBlJyxcbiAgICBlZGl0Q3RhOiAnRWRpdCcsXG4gICAgc2F2ZUN0YTogJ1NhdmUnLFxuICAgIGNhbmNlbEN0YTogJ0NhbmNlbCcsXG4gICAgbWVtYmVyc1RpdGxlOiAnTWVtYmVycycsXG4gICAgbWVtYmVyc0VtcHR5OiAnTm8gbWVtYmVycyB5ZXQuJyxcbiAgICBtZW1iZXJSb2xlczogJ1JvbGVzJyxcbiAgICBpbnZpdGVUaXRsZTogJ0ludml0ZScsXG4gICAgaW52aXRlRW1haWw6ICdFbWFpbCBhZGRyZXNzJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sZScsXG4gICAgaW52aXRlQ3RhOiAnSW52aXRlJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhdGlvbiBzZW50LicsXG4gICAgaW52aXRlRXJyb3I6ICdDb3VsZCBub3Qgc2VuZCBpbnZpdGF0aW9uLicsXG4gICAgbWVtYmVyc0Vycm9yOiAnQ291bGQgbm90IGxvYWQgbWVtYmVycy4nLFxuICAgIGxlYXZlVGl0bGU6ICdMZWF2ZSBvcmdhbml6YXRpb24nLFxuICAgIGxlYXZlSGludDogJ1lvdSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgbGVhdmVDdGE6ICdMZWF2ZScsXG4gICAgbGVhdmVPd25lckhpbnQ6ICdZb3UgYXJlIHRoZSBvd25lci4gVHJhbnNmZXIgb3duZXJzaGlwIGJlZm9yZSBsZWF2aW5nLicsXG4gICAgbGVhdmVDb25maXJtOiAnTGVhdmUgdGhpcyBvcmdhbml6YXRpb24/JyxcbiAgICBwbGFuRnJlZTogJ0ZyZWUnLFxuICAgIHBsYW5Qcm86ICdQcm8nLFxuICAgIHBsYW5FbnRlcnByaXNlOiAnRW50ZXJwcmlzZScsXG4gICAgc2F2ZVN1Y2Nlc3M6ICdPcmdhbml6YXRpb24gdXBkYXRlZC4nLFxuICAgIGxlYXZlU3VjY2VzczogJ1lvdSBoYXZlIGxlZnQgdGhlIG9yZ2FuaXphdGlvbi4nLFxuICAgIGVycm9yVGl0bGU6ICdDb3VsZCBub3QgbG9hZCBvcmdhbml6YXRpb24nLFxuICAgIG9mZmxpbmVUaXRsZTogJ05vIGNvbm5lY3Rpb24nLFxuICAgIG9mZmxpbmVIaW50OiAnQ2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uJyxcbiAgICByZXRyeTogJ1JldHJ5JyxcbiAgICBzYXZlRXJyb3I6ICdDb3VsZCBub3Qgc2F2ZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgIGxlYXZlRXJyb3I6ICdDb3VsZCBub3QgbGVhdmUuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICB0cmFuc2ZlclRpdGxlOiAnVHJhbnNmZXIgb3duZXJzaGlwJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdDaG9vc2UgYSBtZW1iZXIgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY3QgbmV3IG93bmVyJyxcbiAgICB0cmFuc2ZlckN0YTogJ1RyYW5zZmVyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICdUcmFuc2ZlciBvd25lcnNoaXAgdG8gdGhpcyBtZW1iZXI/IFlvdSB3aWxsIGxvc2UgdGhlIG93bmVyIHJvbGUuJyxcbiAgICB0cmFuc2ZlclN1Y2Nlc3M6ICdPd25lcnNoaXAgdHJhbnNmZXJyZWQuJyxcbiAgICB0cmFuc2ZlckVycm9yOiAnQ291bGQgbm90IHRyYW5zZmVyIG93bmVyc2hpcC4nLFxuICAgIGludml0ZUN0YVRpdGxlOiAnV2FudCB0byBhZGQgc29tZW9uZT8nLFxuICAgIGludml0ZUN0YUhpbnQ6ICdJbnZpdGUgdXNlcnMgdG8gam9pbiB5b3VyIG9yZ2FuaXphdGlvbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGUnLFxuICAgIGltcG9ydE9wZW46ICdJbXBvcnQnLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWaWV3IG1lbWJlcicsXG4gICAgcm9sZVZpZXdlcjogJ1ZpZXdlcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJvbGVzU2VjdGlvblRpdGxlOiAnUm9sZXMgJiBwZXJtaXNzaW9ucycsXG4gICAgcm9sZXNIaW50OlxuICAgICAgJ1lvdXIgb3JnYW5pemF0aW9uIGhhcyByb2xlcyB0aGF0IGNvbnRyb2wgd2hhdCBlYWNoIG1lbWJlciBjYW4gc2VlIGFuZCBkby4gRWFjaCByb2xlIGNhcnJpZXMgYSBzZXQgb2YgYXNzb2NpYXRlZCBwZXJtaXNzaW9ucy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmlldyByb2xlcyAmIHBlcm1pc3Npb25zJyxcbiAgICByb2xlc1N5c3RlbUJhZGdlOiAnU3lzdGVtJyxcbiAgICBwZXJtQWxsOiAnQWxsJyxcbiAgICBwZXJtVXNlcnM6ICdVc2VycycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50cycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnVGVtcGxhdGVzJyxcbiAgICBwZXJtUmVhZDogJ1JlYWQnLFxuICAgIHBlcm1Xcml0ZTogJ1dyaXRlJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXRlJyxcbiAgICBwZXJtRGVsZXRlOiAnRGVsZXRlJyxcbiAgICBwZXJtTWFuYWdlOiAnTWFuYWdlJyxcbiAgICBtZW1iZXJzU2hvd01vcmU6ICdTaG93IG1vcmUnLFxuICB9LFxufTtcbiJdfQ==