valtech-components 2.0.995 → 2.0.996
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.
- package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +385 -0
- package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +63 -0
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +24 -1
- package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +3 -1
- package/esm2022/lib/services/apikeys/api-keys.service.mjs +46 -0
- package/esm2022/lib/services/apikeys/types.mjs +7 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/valtech-components.mjs +548 -46
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +44 -0
- package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +6 -0
- package/lib/components/organisms/organization-view/organization-view.component.d.ts +2 -0
- package/lib/services/apikeys/api-keys.service.d.ts +25 -0
- package/lib/services/apikeys/types.d.ts +46 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -1
|
@@ -27,6 +27,7 @@ import { InviteMemberModalComponent } from '../invite-member-modal/invite-member
|
|
|
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
29
|
import { MemberImportModalComponent } from '../member-import-modal/member-import-modal.component';
|
|
30
|
+
import { ApiKeysModalComponent } from '../api-keys-modal/api-keys-modal.component';
|
|
30
31
|
import { ORGANIZATION_VIEW_I18N } from './organization-view.i18n';
|
|
31
32
|
import * as i0 from "@angular/core";
|
|
32
33
|
const DEFAULT_NAMESPACE = 'Settings.Organization';
|
|
@@ -228,6 +229,14 @@ export class OrganizationViewComponent {
|
|
|
228
229
|
shape: 'round',
|
|
229
230
|
type: 'button',
|
|
230
231
|
}));
|
|
232
|
+
this.openApiKeysButtonProps = computed(() => ({
|
|
233
|
+
text: this.tt('apiKeysOpen'),
|
|
234
|
+
color: 'dark',
|
|
235
|
+
fill: 'clear',
|
|
236
|
+
size: 'default',
|
|
237
|
+
shape: 'round',
|
|
238
|
+
type: 'button',
|
|
239
|
+
}));
|
|
231
240
|
/** Guarda para detectar el primer disparo del effect (evita doble carga). */
|
|
232
241
|
this.lastLoadedOrgId = null;
|
|
233
242
|
const ns = this.ns;
|
|
@@ -347,6 +356,17 @@ export class OrganizationViewComponent {
|
|
|
347
356
|
backdropDismiss: true,
|
|
348
357
|
});
|
|
349
358
|
}
|
|
359
|
+
onOpenApiKeys() {
|
|
360
|
+
void this.modalService.open({
|
|
361
|
+
component: ApiKeysModalComponent,
|
|
362
|
+
breakpoints: {
|
|
363
|
+
breakpoints: [0, 0.92],
|
|
364
|
+
initialBreakpoint: 0.92,
|
|
365
|
+
showHandle: true,
|
|
366
|
+
},
|
|
367
|
+
backdropDismiss: true,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
350
370
|
onViewPermissions() {
|
|
351
371
|
this.nav.navigateByUrl(this.resolvedConfig().viewPermissionsRoute);
|
|
352
372
|
}
|
|
@@ -734,6 +754,7 @@ export class OrganizationViewComponent {
|
|
|
734
754
|
</div>
|
|
735
755
|
<val-button [props]="openInviteButtonProps()" (click)="onOpenInvite()" />
|
|
736
756
|
<val-button [props]="openImportButtonProps()" (click)="onOpenImport()" />
|
|
757
|
+
<val-button [props]="openApiKeysButtonProps()" (click)="onOpenApiKeys()" />
|
|
737
758
|
</div>
|
|
738
759
|
</section>
|
|
739
760
|
}
|
|
@@ -843,6 +864,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
843
864
|
MemberCardComponent,
|
|
844
865
|
TransferOwnershipModalComponent,
|
|
845
866
|
MemberImportModalComponent,
|
|
867
|
+
ApiKeysModalComponent,
|
|
846
868
|
], template: `
|
|
847
869
|
<div class="page">
|
|
848
870
|
<header class="page-header">
|
|
@@ -1016,6 +1038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1016
1038
|
</div>
|
|
1017
1039
|
<val-button [props]="openInviteButtonProps()" (click)="onOpenInvite()" />
|
|
1018
1040
|
<val-button [props]="openImportButtonProps()" (click)="onOpenImport()" />
|
|
1041
|
+
<val-button [props]="openApiKeysButtonProps()" (click)="onOpenApiKeys()" />
|
|
1019
1042
|
</div>
|
|
1020
1043
|
</section>
|
|
1021
1044
|
}
|
|
@@ -1114,4 +1137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1114
1137
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
1115
1138
|
type: Input
|
|
1116
1139
|
}] } });
|
|
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==
|
|
1140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmdhbml6YXRpb24tdmlldy9vcmdhbml6YXRpb24tdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RixP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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNFFULHkrRUF4UkMsZ0JBQWdCLDJFQUNoQixtQkFBbUIsK0VBQ25CLHNCQUFzQiw2RkFDdEIsdUJBQXVCLG1GQUN2QixjQUFjLHlFQUNkLGFBQWEsd0VBQ2IsZUFBZSwwR0FDZixtQkFBbUI7OzRGQWtiVix5QkFBeUI7a0JBN2JyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQixxQkFBcUI7cUJBQ3RCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0UVQ7d0RBb0xRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgaXNEZXZNb2RlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmUsIGRvYywgZ2V0RG9jIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZW1iZXItY2FyZC9tZW1iZXItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9oYXMtcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnTWVtYmVyLCBPcmdSb2xlLCBPcmdhbml6YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRWRpdE9yZ01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZWRpdC1vcmctbW9kYWwvZWRpdC1vcmctbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEludml0ZU1lbWJlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW52aXRlLW1lbWJlci1tb2RhbC9pbnZpdGUtbWVtYmVyLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW1iZXJEZXRhaWxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVtYmVyRGV0YWlsIH0gZnJvbSAnLi4vbWVtYmVyLWRldGFpbC1tb2RhbC90eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2Zlck93bmVyc2hpcE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHJhbnNmZXItb3duZXJzaGlwLW1vZGFsL3RyYW5zZmVyLW93bmVyc2hpcC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tZW1iZXItaW1wb3J0LW1vZGFsL21lbWJlci1pbXBvcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaUtleXNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2FwaS1rZXlzLW1vZGFsL2FwaS1rZXlzLW1vZGFsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IE9yZ2FuaXphdGlvblZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE9SR0FOSVpBVElPTl9WSUVXX0kxOE4gfSBmcm9tICcuL29yZ2FuaXphdGlvbi12aWV3LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5Pcmdhbml6YXRpb24nO1xuY29uc3QgREVGQVVMVF9WSUVXX1BFUk1JU1NJT05TX1JPVVRFID0gJy9hcHAvc2V0dGluZ3MvcGVybWlzc2lvbnMnO1xuY29uc3QgREVGQVVMVF9MRUFWRV9SRURJUkVDVF9ST1VURSA9ICcvYXBwL3NldHRpbmdzL2FjY291bnQnO1xuXG4vKipcbiAqIGB2YWwtb3JnYW5pemF0aW9uLXZpZXdgIOKAlCB2aXN0YSBHZXN0acOzbiBkZSBvcmdhbml6YWNpw7NuIGZ1bGwtZmVhdHVyZVxuICogYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGVcbiAqIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSW5mb3JtYWNpw7NuKiog4oCUIG5vbWJyZSwgZGVzY3JpcGNpw7NuLCBwbGFuIHkgdGlwbyBkZSBsYSBvcmcgYWN0aXZhOyBlZGl0YXJcbiAqICAgIHbDrWEgbW9kYWwgYHZhbC1lZGl0LW9yZy1tb2RhbGAgKHNvbG8gc2kgYGNhbkVkaXRPcmcoKWApLlxuICogIC0gKipNaWVtYnJvcyoqIOKAlCBsaXN0YSBwYWdpbmFkYSAoYHZhbC1tZW1iZXItY2FyZGApIGVucmlxdWVjaWRhIGNvbiBwZXJmaWxlc1xuICogICAgcMO6YmxpY29zIChGaXJlc3RvcmUpOyB2ZXIgZGV0YWxsZSB2w61hIGB2YWwtbWVtYmVyLWRldGFpbC1tb2RhbGAuXG4gKiAgLSAqKlJvbGVzIHkgcGVybWlzb3MqKiDigJQgc2VjY2nDs24gZXhwbGljYXRpdmEgY29uIENUQSBhIGxhIHJ1dGEgZGUgcGVybWlzb3MuXG4gKiAgLSAqKkludml0YXIqKiDigJQgQ1RBIHF1ZSBhYnJlIGB2YWwtaW52aXRlLW1lbWJlci1tb2RhbGAgKGdhdGVhZGEgcG9yIGB1c2VyczoqYCkuXG4gKiAgLSAqKlRyYW5zZmVyaXIgcHJvcGllZGFkKiog4oCUIGB2YWwtdHJhbnNmZXItb3duZXJzaGlwLW1vZGFsYCAoc29sbyBvd25lcikuXG4gKiAgLSAqKlNhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24qKiDigJQgYE9yZ1NlcnZpY2UubGVhdmVPcmdgIGNvbiBjb25maXJtYWNpw7NuXG4gKiAgICBkZXN0cnVjdGl2YS5cbiAqXG4gKiAqKlJCQUMgaW50ZXJubyoqIChkZWNpc2nDs24gQ1RPLCBBRFItMDIxKTogZWwgZ2F0aW5nIGZpbm8gc2UgcmVzdWVsdmUgZGVudHJvIGRlXG4gKiBsYSB2aXN0YSB2w61hIGBBdXRoU2VydmljZS5oYXNQZXJtaXNzaW9uKClgICsgYCp2YWxIYXNQZXJtaXNzaW9uYCArIGNvbXB1dGVkc1xuICogYGlzT3duZXIoKWAvYGNhbk1hbmFnZU1lbWJlcnMoKWAvYGNhbkVkaXRPcmcoKWAuIE5PIHNlIGV4cG9uZSBjb21vIGNvbmZpZy5cbiAqXG4gKiAqKkF1dG8tcmVsb2FkIGVuIG9yZy1zd2l0Y2gqKjogdW4gYGVmZmVjdGAgcmVhY3Rpb25hIGEgYGFjdGl2ZU9yZ0lkKClgIHkgcmVjYXJnYVxuICogb3JnICsgbWllbWJyb3MgY3VhbmRvIGVsIHVzdWFyaW8gY2FtYmlhIGRlIG9yZ2FuaXphY2nDs24gYWN0aXZhIG1pZW50cmFzIGxhIHZpc3RhXG4gKiBlc3TDoSBtb250YWRhLiBFbCBlZmZlY3QgY3VicmUgdGFtYmnDqW4gbGEgY2FyZ2EgaW5pY2lhbCAoc2luIGRvYmxlIGNhcmdhKS5cbiAqXG4gKiBOTyByZW5kZXJpemEgaW9uLWNvbnRlbnQg4oCUIHZpdmUgZGVudHJvIGRlIHZhbC1wYWdlLXdyYXBwZXIuIGBBY3RpdmF0ZWRSb3V0ZWAgc2VcbiAqIGlueWVjdGEgYHsgb3B0aW9uYWw6IHRydWUgfWAgc29sbyBwYXJhIGxlZXIgZWwgcm91dGUgZGF0YSBkZSBjb25maWcgKG5vLW9wXG4gKiBlbWJlYmlkbykuIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICogbmFtZXNwYWNlIChkZWZhdWx0IGBTZXR0aW5ncy5Pcmdhbml6YXRpb25gKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9yZ2FuaXphdGlvbi12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlLFxuICAgIFNrZWxldG9uTGF5b3V0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIE1lbWJlckNhcmRDb21wb25lbnQsXG4gICAgVHJhbnNmZXJPd25lcnNoaXBNb2RhbENvbXBvbmVudCxcbiAgICBNZW1iZXJJbXBvcnRNb2RhbENvbXBvbmVudCxcbiAgICBBcGlLZXlzTW9kYWxDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgY29udGVudDogcGFnZVRpdGxlKCkgfVwiIC8+XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhZ2VEZXNjcmlwdGlvbigpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93SW5mbykge1xuICAgICAgICA8IS0tIE9yZyBJbmZvIC0tPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdpbmZvVGl0bGUnKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChjYW5FZGl0T3JnKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImVkaXRCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uRWRpdCgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2RldGFpbCcsIHJvd3M6IDQgfVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChvcmdFcnJvclN0YXRlKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwib3JnRXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgQGlmIChvcmcoKTsgYXMgbykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctaW5mby1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGQgb3JnLWluZm8tZmllbGQtLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby1sYWJlbFwiPnt7IHR0KCdpbmZvTmFtZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1pbmZvLXZhbHVlXCI+e3sgby5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGQgb3JnLWluZm8tZmllbGQtLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby1sYWJlbFwiPnt7IHR0KCdpbmZvRGVzY3JpcHRpb24nKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby12YWx1ZSBvcmctaW5mby12YWx1ZS0tbXV0ZWRcIj57eyBvLmRlc2NyaXB0aW9uIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctaW5mby1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWluZm8tbGFiZWxcIj57eyB0dCgnaW5mb1BsYW4nKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYW4tYmFkZ2UgcGxhbi1iYWRnZS0te3sgby5wbGFuIH19XCI+e3sgcGxhbkxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWluZm8tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1pbmZvLWxhYmVsXCI+e3sgdHQoJ2luZm9UeXBlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctaW5mby12YWx1ZVwiPnt7IG8udHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TWVtYmVycykge1xuICAgICAgICA8IS0tIE1lbWJlcnMgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgnbWVtYmVyc1RpdGxlJyksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIEBpZiAobWVtYmVyc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogMyB9XCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKG1lbWJlcnNFcnJvclN0YXRlKCkpIHtcbiAgICAgICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwibWVtYmVyc0Vycm9yU3RhdGUoKSFcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAobWVtYmVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ21lbWJlcnNFbXB0eScpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbWJlcnMtbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG0gb2YgdmlzaWJsZU1lbWJlcnMoKTsgdHJhY2sgbS51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgIDx2YWwtbWVtYmVyLWNhcmRcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ29yZy1tZW1iZXItJyArIG0udXNlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBpZDogbS51c2VySWQsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogbS5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgZW1haWw6IG0uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBtLmF2YXRhcixcbiAgICAgICAgICAgICAgICAgICAgICByb2xlTGFiZWw6IG0ucm9sZXNbMF0gPyByb2xlTGFiZWwobS5yb2xlc1swXSkgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25BcmlhTGFiZWw6IHR0KCd2aWV3TWVtYmVyQ3RhJyksXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAob25BY3Rpb24pPVwib25WaWV3TWVtYmVyKG0pXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmICghc2hvd0FsbE1lbWJlcnMoKSAmJiBtZW1iZXJzKCkubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1iZXJzLXNob3ctbW9yZVwiIChjbGljayk9XCJzaG93QWxsTWVtYmVycy5zZXQodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHR0KCdtZW1iZXJzU2hvd01vcmUnKSB9fSAoe3sgbWVtYmVycygpLmxlbmd0aCAtIDMgfX0pXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzaG93QWxsTWVtYmVycygpICYmIG1lbWJlcnNOZXh0VG9rZW4oKSkge1xuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1iZXJzLXNob3ctbW9yZVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nTW9yZU1lbWJlcnMoKVwiIChjbGljayk9XCJsb2FkTW9yZU1lbWJlcnMoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgbG9hZGluZ01vcmVNZW1iZXJzKCkgPyAn4oCmJyA6IHR0KCdtZW1iZXJzU2hvd01vcmUnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dSb2xlcykge1xuICAgICAgICA8IS0tIFJvbGVzIHkgcGVybWlzb3M6IHNlY2Npb24gZXhwbGljYXRpdmEsIGRldGFsbGUgZW4gbGEgcnV0YSBkZSBwZXJtaXNvcyAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdyb2xlc1NlY3Rpb25UaXRsZScpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgncm9sZXNIaW50JyksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ2aWV3UGVybWlzc2lvbnNCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uVmlld1Blcm1pc3Npb25zKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dJbnZpdGUpIHtcbiAgICAgICAgPCEtLSBJbnZpdGU6IHNvbG8gYWRtaW4rIChnYXRpbmcgUkJBQyBpbnRlcm5vKSAtLT5cbiAgICAgICAgPHNlY3Rpb24gKnZhbEhhc1Blcm1pc3Npb249XCIndXNlcnM6KidcIiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIiBkYXRhLXRlc3RpZD1cIm9yZy1pbnZpdGUtc2VjdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZpdGUtY3RhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52aXRlLWN0YV9fdGV4dFwiPlxuICAgICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnaW52aXRlQ3RhVGl0bGUnKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2ludml0ZUN0YUhpbnQnKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm9wZW5JbnZpdGVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uT3Blbkludml0ZSgpXCIgLz5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJvcGVuSW1wb3J0QnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk9wZW5JbXBvcnQoKVwiIC8+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwib3BlbkFwaUtleXNCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uT3BlbkFwaUtleXMoKVwiIC8+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+KFtdKTtcbiAgcmVhZG9ubHkgbWVtYmVyc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbWJlcnNMb2FkRXJyb3IgPSBzaWduYWw8dW5rbm93bj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgbWVtYmVyc0Vycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGEgfCBudWxsPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLm1lbWJlcnNMb2FkRXJyb3IoKTtcbiAgICBpZiAoIWVycikgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGNyZWF0ZUVycm9yU3RhdGVQcm9wcyhlcnIsIHtcbiAgICAgIHRpdGxlOiB7IG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVUaXRsZScpLCBlcnJvcjogdGhpcy50dCgnZXJyb3JUaXRsZScpIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lSGludCcpLFxuICAgICAgICBlcnJvcjogaW50ZXJwcmV0RXJyb3IoZXJyKS5tZXNzYWdlLFxuICAgICAgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudHQoJ3JldHJ5JyksXG4gICAgICBvblJldHJ5OiAoKSA9PiB0aGlzLmxvYWRNZW1iZXJzKCksXG4gICAgICByZXRyeWluZzogdGhpcy5tZW1iZXJzTG9hZGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICByZWFkb25seSBtZW1iZXJzTmV4dFRva2VuID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nTW9yZU1lbWJlcnMgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBzaG93QWxsTWVtYmVycyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHZpc2libGVNZW1iZXJzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuc2hvd0FsbE1lbWJlcnMoKSA/IHRoaXMubWVtYmVycygpIDogdGhpcy5tZW1iZXJzKCkuc2xpY2UoMCwgMykpKTtcbiAgcmVhZG9ubHkgdHJhbnNmZXJyaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgYXZhaWxhYmxlUm9sZXMgPSBzaWduYWw8T3JnUm9sZVtdPihbXG4gICAgeyBpZDogJ3ZpZXdlcicsIG5hbWU6ICd2aWV3ZXInIH0sXG4gICAgeyBpZDogJ2VkaXRvcicsIG5hbWU6ICdlZGl0b3InIH0sXG4gICAgeyBpZDogJ2FkbWluJywgbmFtZTogJ2FkbWluJyB9LFxuICBdKTtcblxuICByZWFkb25seSBhY3RpdmVPcmdJZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLnVzZXIoKSBhcyB7XG4gICAgICBhY3RpdmVPcmdJZD86IHN0cmluZztcbiAgICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgICB9IHwgbnVsbDtcbiAgICByZXR1cm4gdT8uYWN0aXZlT3JnSWQgPz8gdT8uYWN0aXZlT3JnID8/ICcnO1xuICB9KTtcblxuICByZWFkb25seSB1c2VySWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF1dGgudXNlcigpPy51c2VySWQgPz8gJycpO1xuXG4gIHJlYWRvbmx5IGlzT3duZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbyA9IHRoaXMub3JnKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy51c2VySWQoKTtcbiAgICByZXR1cm4gISFvICYmICEhdWlkICYmIG8ub3duZXJJZCA9PT0gdWlkO1xuICB9KTtcblxuICByZWFkb25seSBjYW5FZGl0T3JnID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc093bmVyKCkgfHwgdGhpcy5hdXRoLmhhc1Blcm1pc3Npb24oJ29yZzptYW5hZ2UnKSk7XG5cbiAgcmVhZG9ubHkgY2FuTWFuYWdlTWVtYmVycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc093bmVyKCkpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMudXNlcklkKCk7XG4gICAgY29uc3QgbWUgPSB0aGlzLm1lbWJlcnMoKS5maW5kKG0gPT4gbS51c2VySWQgPT09IHVpZCk7XG4gICAgaWYgKCFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBtZS5yb2xlcy5zb21lKHIgPT4gciA9PT0gJ2FkbWluJyB8fCByID09PSAnc3VwZXJfYWRtaW4nKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlRGVzY3JpcHRpb24nKSk7XG5cbiAgcmVhZG9ubHkgcGxhbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBsYW4gPSB0aGlzLm9yZygpPy5wbGFuO1xuICAgIGlmIChwbGFuID09PSAncHJvJykgcmV0dXJuIHRoaXMudHQoJ3BsYW5Qcm8nKTtcbiAgICBpZiAocGxhbiA9PT0gJ2VudGVycHJpc2UnKSByZXR1cm4gdGhpcy50dCgncGxhbkVudGVycHJpc2UnKTtcbiAgICByZXR1cm4gdGhpcy50dCgncGxhbkZyZWUnKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZWRpdEJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnZWRpdEN0YScpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH0pKTtcblxuICByZWFkb25seSBsZWF2ZUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnbGVhdmVDdGEnKSxcbiAgICB0b2tlbjogJ29yZy1sZWF2ZScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLmlzT3duZXIoKSB8fCB0aGlzLmxlYXZpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgdHJhbnNmZXJhYmxlTWVtYmVycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVtYmVycygpLmZpbHRlcihtID0+IG0udXNlcklkICE9PSB0aGlzLnVzZXJJZCgpKSk7XG5cbiAgcmVhZG9ubHkgdmlld1Blcm1pc3Npb25zQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdyb2xlc1ZpZXdQZXJtcycpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ29yZy12aWV3LXBlcm1pc3Npb25zJyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHRyYW5zZmVyQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCd0cmFuc2ZlckN0YScpLFxuICAgIHRva2VuOiAnb3JnLXRyYW5zZmVyLXN1Ym1pdCcsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLnRyYW5zZmVycmluZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICByZWFkb25seSBvcGVuSW52aXRlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdpbnZpdGVPcGVuJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IG9wZW5JbXBvcnRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2ltcG9ydE9wZW4nKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH0pKTtcblxuICByZWFkb25seSBvcGVuQXBpS2V5c0J1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnYXBpS2V5c09wZW4nKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdjbGVhcicsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgLyoqIEd1YXJkYSBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBkaXNwYXJvIGRlbCBlZmZlY3QgKGV2aXRhIGRvYmxlIGNhcmdhKS4gKi9cbiAgcHJpdmF0ZSBsYXN0TG9hZGVkT3JnSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBPUkdBTklaQVRJT05fVklFV19JMThOKTtcbiAgICB9XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBBdXRvLXJlbG9hZCBlbiBvcmctc3dpdGNoOiByZWFjY2lvbmEgYSBhY3RpdmVPcmdJZCgpIHkgcmVjYXJnYSBvcmcgKyBtaWVtYnJvc1xuICAgIC8vIGN1YW5kbyBlbCB1c3VhcmlvIGNhbWJpYSBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YSBtaWVudHJhcyBsYSB2aXN0YSBlc3TDoVxuICAgIC8vIG1vbnRhZGEuIEN1YnJlIHRhbWJpw6luIGxhIGNhcmdhIGluaWNpYWwg4oCUIGBsYXN0TG9hZGVkT3JnSWRgIGV2aXRhIHJlY2FyZ2FyXG4gICAgLy8gZG9zIHZlY2VzIGVsIG1pc21vIGlkIChwLmVqLiBzaSBlbCBlZmZlY3QgcmUtY29ycmUgcG9yIG90cmEgZGVwZW5kZW5jaWEpLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlc2AgcG9ycXVlIGxhcyBsb2FkIGZucyBlc2NyaWJlbiBzaWduYWxzIHPDrW5jcm9uYW1lbnRlXG4gICAgLy8gKGxvYWRpbmcvZXJyb3IvdG9rZW4pIOKAlCBBbmd1bGFyIDE4IGJsb3F1ZWEgd3JpdGVzIGVuIGVmZmVjdCBzaW4gZWwgZmxhZy5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgICAgICBpZiAob3JnSWQgPT09IHRoaXMubGFzdExvYWRlZE9yZ0lkKSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdExvYWRlZE9yZ0lkID0gb3JnSWQ7XG4gICAgICAgIHRoaXMubG9hZE9yZygpO1xuICAgICAgICB0aGlzLmxvYWRNZW1iZXJzKCk7XG4gICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGNvbm5lY3RQYWdlUmVmcmVzaChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5sb2FkT3JnKCksIHRoaXMubG9hZE1lbWJlcnMoKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25FZGl0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IEVkaXRPcmdNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZzogdGhpcy5vcmcoKSxcbiAgICAgICAgb25TdWNjZXNzOiAodXBkYXRlZDogT3JnYW5pemF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcmcuc2V0KHVwZGF0ZWQpO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk9yZ0VkaXRlZD8uKCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25MZWF2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc093bmVyKCkgfHwgdGhpcy5sZWF2aW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdsZWF2ZVRpdGxlJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCdsZWF2ZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50dCgnbGVhdmVDdGEnKSB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ2NhbmNlbEN0YScpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMubGVhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5sZWF2ZU9yZyhvcmdJZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnbGVhdmVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKGNmZy5sZWF2ZVJlZGlyZWN0Um91dGUpO1xuICAgICAgY2ZnLm9uTGVmdE9yZz8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24ubGVhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2xlYXZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubGVhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uT3Blbkludml0ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBJbnZpdGVNZW1iZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIG9yZ0lkOiB0aGlzLmFjdGl2ZU9yZ0lkKCksXG4gICAgICAgIGV4aXN0aW5nTWVtYmVySWRzOiB0aGlzLm1lbWJlcnMoKS5tYXAobSA9PiBtLnVzZXJJZCksXG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25NZW1iZXJJbnZpdGVkPy4oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOTJdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45MixcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBvbk9wZW5JbXBvcnQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBvcmdJZDogdGhpcy5hY3RpdmVPcmdJZCgpLFxuICAgICAgICBhdmFpbGFibGVSb2xlczogdGhpcy5hdmFpbGFibGVSb2xlcygpLm1hcChyID0+IHIubmFtZSksXG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25NZW1iZXJJbnZpdGVkPy4oKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOTJdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45MixcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBvbk9wZW5BcGlLZXlzKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IEFwaUtleXNNb2RhbENvbXBvbmVudCxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC45Ml0sXG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjkyLFxuICAgICAgICBzaG93SGFuZGxlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uVmlld1Blcm1pc3Npb25zKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlQnlVcmwodGhpcy5yZXNvbHZlZENvbmZpZygpLnZpZXdQZXJtaXNzaW9uc1JvdXRlKTtcbiAgfVxuXG4gIG9uT3BlblRyYW5zZmVyKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IFRyYW5zZmVyT3duZXJzaGlwTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBtZW1iZXJzOiB0aGlzLnRyYW5zZmVyYWJsZU1lbWJlcnMoKSxcbiAgICAgICAgb25Db25maXJtOiAobmV3T3duZXJJZDogc3RyaW5nKSA9PiB2b2lkIHRoaXMub25UcmFuc2ZlcihuZXdPd25lcklkKSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuNzVdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC43NSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblRyYW5zZmVyKG5ld093bmVySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbmV3T3duZXJJZCB8fCB0aGlzLnRyYW5zZmVycmluZygpKSByZXR1cm47XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtRGlhbG9nLmNvbmZpcm1EZXN0cnVjdGl2ZSh7XG4gICAgICB0aXRsZTogdGhpcy50dCgndHJhbnNmZXJUaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50dCgndHJhbnNmZXJDb25maXJtJyksXG4gICAgICBjb25maXJtQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ3RyYW5zZmVyQ3RhJykgfSxcbiAgICAgIGNhbmNlbEJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCdjYW5jZWxDdGEnKSB9LFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0LmNvbmZpcm1lZCkgcmV0dXJuO1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLnRyYW5zZmVycmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS50cmFuc2Zlck93bmVyc2hpcChvcmdJZCwgbmV3T3duZXJJZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndHJhbnNmZXJTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvYWRPcmcoKTtcbiAgICAgIHRoaXMubG9hZE1lbWJlcnMoKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk93bmVyc2hpcFRyYW5zZmVycmVkPy4oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ29yZ2FuaXphdGlvbi50cmFuc2ZlcicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAndHJhbnNmZXJFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy50cmFuc2ZlcnJpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdMb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMub3JnU2VydmljZS5nZXRPcmcob3JnSWQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IG9yZyA9PiB7XG4gICAgICAgICAgdGhpcy5vcmcuc2V0KG9yZyk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLm9yZ0xvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRNZW1iZXJzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB0aGlzLm1lbWJlcnNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm1lbWJlcnNMb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgIHRoaXMubWVtYmVyc05leHRUb2tlbi5zZXQobnVsbCk7XG4gICAgdGhpcy5zaG93QWxsTWVtYmVycy5zZXQoZmFsc2UpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMub3JnU2VydmljZS5nZXRPcmdNZW1iZXJzKG9yZ0lkLCB7IGxpbWl0OiAyMCB9KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBhc3luYyByZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhcmRzID0gYXdhaXQgdGhpcy5lbnJpY2hXaXRoUHJvZmlsZXMocmVzLm1lbWJlcnMpO1xuICAgICAgICAgIHRoaXMubWVtYmVycy5zZXQoY2FyZHMpO1xuICAgICAgICAgIHRoaXMubWVtYmVyc05leHRUb2tlbi5zZXQocmVzLm5leHRUb2tlbiA/PyBudWxsKTtcbiAgICAgICAgICB0aGlzLm1lbWJlcnNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLm1lbWJlcnNMb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgICAgdGhpcy5tZW1iZXJzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZE1vcmVNZW1iZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5tZW1iZXJzTmV4dFRva2VuKCk7XG4gICAgaWYgKCFvcmdJZCB8fCAhdG9rZW4gfHwgdGhpcy5sb2FkaW5nTW9yZU1lbWJlcnMoKSkgcmV0dXJuO1xuICAgIHRoaXMubG9hZGluZ01vcmVNZW1iZXJzLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2UuZ2V0T3JnTWVtYmVycyhvcmdJZCwgeyBsaW1pdDogMjAsIG5leHRUb2tlbjogdG9rZW4gfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGFzeW5jIHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IGNhcmRzID0gYXdhaXQgdGhpcy5lbnJpY2hXaXRoUHJvZmlsZXMocmVzLm1lbWJlcnMpO1xuICAgICAgICB0aGlzLm1lbWJlcnMudXBkYXRlKHByZXYgPT4gWy4uLnByZXYsIC4uLmNhcmRzXSk7XG4gICAgICAgIHRoaXMubWVtYmVyc05leHRUb2tlbi5zZXQocmVzLm5leHRUb2tlbiA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9yZU1lbWJlcnMuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICAgIGNvbnRleHQ6ICdvcmdhbml6YXRpb24ubG9hZE1vcmVNZW1iZXJzJyxcbiAgICAgICAgICBmYWxsYmFja0tleTogJ21lbWJlcnNFcnJvcicsXG4gICAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9hZGluZ01vcmVNZW1iZXJzLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnJpY2hXaXRoUHJvZmlsZXMobWVtYmVyczogT3JnTWVtYmVyW10pOiBQcm9taXNlPE1lbWJlckRldGFpbFtdPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIG1lbWJlcnMubWFwKGFzeW5jIG0gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBhd2FpdCBnZXREb2MoZG9jKHRoaXMuZmlyZXN0b3JlLCBgcHJvZmlsZXMvJHttLnVzZXJJZH1gKSk7XG4gICAgICAgICAgY29uc3QgcCA9IHNuYXAuZXhpc3RzKCkgPyBzbmFwLmRhdGEoKSA6IHt9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5tLFxuICAgICAgICAgICAgaGFuZGxlOiBwWydoYW5kbGUnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhdmF0YXI6IChwWydhdmF0YXJVcmwnXSA/PyBwWydhdmF0YXInXSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmFtZTogKHBbJ25hbWUnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpIHx8IG0ubmFtZSxcbiAgICAgICAgICB9IGFzIE1lbWJlckRldGFpbDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIG0gYXMgTWVtYmVyRGV0YWlsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdHMubWFwKHIgPT4gKHIuc3RhdHVzID09PSAnZnVsZmlsbGVkJyA/IHIudmFsdWUgOiAoe30gYXMgTWVtYmVyRGV0YWlsKSkpO1xuICB9XG5cbiAgbG9hZFJvbGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLm9yZ1NlcnZpY2UubGlzdE9yZ1JvbGVzKG9yZ0lkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcm9sZXMgPT4ge1xuICAgICAgICBpZiAocm9sZXMubGVuZ3RoKSB0aGlzLmF2YWlsYWJsZVJvbGVzLnNldChyb2xlcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcm9sZUxhYmVsKHJvbGVJZE9yTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUcnkgdG8gZmluZCBieSBpZCBmaXJzdCAoVVVJRCksIHRoZW4gYnkgbmFtZVxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hdmFpbGFibGVSb2xlcygpLmZpbmQociA9PiByLmlkID09PSByb2xlSWRPck5hbWUgfHwgci5uYW1lID09PSByb2xlSWRPck5hbWUpO1xuICAgIGNvbnN0IG5hbWUgPSBmb3VuZD8ubmFtZSA/PyByb2xlSWRPck5hbWU7XG4gICAgY29uc3Qga2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdmlld2VyOiAncm9sZVZpZXdlcicsXG4gICAgICBlZGl0b3I6ICdyb2xlRWRpdG9yJyxcbiAgICAgIGFkbWluOiAncm9sZUFkbWluJyxcbiAgICAgIHN1cGVyX2FkbWluOiAncm9sZVN1cGVyQWRtaW4nLFxuICAgIH07XG4gICAgY29uc3Qga2V5ID0ga2V5TWFwW25hbWVdID8/IG5hbWU7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnR0KGtleSk7XG4gICAgcmV0dXJuIGxhYmVsICYmICFsYWJlbC5zdGFydHNXaXRoKCdbJykgPyBsYWJlbCA6IG5hbWU7XG4gIH1cblxuICBwZXJtaXNzaW9uTGFiZWwocGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocGVybSA9PT0gJyo6KicpIHJldHVybiB0aGlzLnR0KCdwZXJtQWxsJyk7XG4gICAgY29uc3QgW3Jlc291cmNlLCBhY3Rpb25dID0gcGVybS5zcGxpdCgnOicpO1xuICAgIGNvbnN0IHJlc0tleTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHVzZXJzOiAncGVybVVzZXJzJyxcbiAgICAgIGRvY3VtZW50czogJ3Blcm1Eb2N1bWVudHMnLFxuICAgICAgcm9sZXM6ICdwZXJtUm9sZXMnLFxuICAgICAgbWVkaWE6ICdwZXJtTWVkaWEnLFxuICAgICAgdGVtcGxhdGVzOiAncGVybVRlbXBsYXRlcycsXG4gICAgICAnKic6ICdwZXJtQWxsJyxcbiAgICB9O1xuICAgIGNvbnN0IGFjdEtleTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHJlYWQ6ICdwZXJtUmVhZCcsXG4gICAgICB3cml0ZTogJ3Blcm1Xcml0ZScsXG4gICAgICBjcmVhdGU6ICdwZXJtQ3JlYXRlJyxcbiAgICAgIGRlbGV0ZTogJ3Blcm1EZWxldGUnLFxuICAgICAgbWFuYWdlOiAncGVybU1hbmFnZScsXG4gICAgICAnKic6ICdwZXJtQWxsJyxcbiAgICB9O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMudHQocmVzS2V5W3Jlc291cmNlXSA/PyByZXNvdXJjZSk7XG4gICAgY29uc3QgYWN0ID0gdGhpcy50dChhY3RLZXlbYWN0aW9uXSA/PyBhY3Rpb24pO1xuICAgIHJldHVybiBgJHtyZXN9OiAke2FjdH1gO1xuICB9XG5cbiAgb25WaWV3TWVtYmVyKG1lbWJlcjogTWVtYmVyRGV0YWlsKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVtYmVyRGV0YWlsTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBtZW1iZXIsXG4gICAgICAgIG9yZ0lkOiB0aGlzLmFjdGl2ZU9yZ0lkKCksXG4gICAgICAgIGF2YWlsYWJsZVJvbGVzOiB0aGlzLmF2YWlsYWJsZVJvbGVzKCksXG4gICAgICAgIGNhbk1hbmFnZTogdGhpcy5jYW5NYW5hZ2VNZW1iZXJzKCkgJiYgbWVtYmVyLnVzZXJJZCAhPT0gdGhpcy51c2VySWQoKSxcbiAgICAgICAgaXNTZWxmOiBtZW1iZXIudXNlcklkID09PSB0aGlzLnVzZXJJZCgpLFxuICAgICAgICBvbkNoYW5nZWQ6ICgpID0+IHRoaXMubG9hZE1lbWJlcnMoKSxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuN10sXG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjcsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
|
|
@@ -54,6 +54,7 @@ export const ORGANIZATION_VIEW_I18N = {
|
|
|
54
54
|
inviteCtaHint: 'Invita a usuarios a unirse a tu organización.',
|
|
55
55
|
inviteOpen: 'Invitar',
|
|
56
56
|
importOpen: 'Importar',
|
|
57
|
+
apiKeysOpen: 'API Keys',
|
|
57
58
|
viewMemberCta: 'Ver miembro',
|
|
58
59
|
roleViewer: 'Visor',
|
|
59
60
|
roleEditor: 'Editor',
|
|
@@ -124,6 +125,7 @@ export const ORGANIZATION_VIEW_I18N = {
|
|
|
124
125
|
inviteCtaHint: 'Invite users to join your organization.',
|
|
125
126
|
inviteOpen: 'Invite',
|
|
126
127
|
importOpen: 'Import',
|
|
128
|
+
apiKeysOpen: 'API Keys',
|
|
127
129
|
viewMemberCta: 'View member',
|
|
128
130
|
roleViewer: 'Viewer',
|
|
129
131
|
roleEditor: 'Editor',
|
|
@@ -147,4 +149,4 @@ export const ORGANIZATION_VIEW_I18N = {
|
|
|
147
149
|
membersShowMore: 'Show more',
|
|
148
150
|
},
|
|
149
151
|
};
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnYW5pemF0aW9uLXZpZXcvb3JnYW5pemF0aW9uLXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUI7SUFDdEQsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsZUFBZSxFQUFFLGlDQUFpQztRQUNsRCxTQUFTLEVBQUUsYUFBYTtRQUN4QixRQUFRLEVBQUUsUUFBUTtRQUNsQixlQUFlLEVBQUUsYUFBYTtRQUM5QixRQUFRLEVBQUUsTUFBTTtRQUNoQixRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsVUFBVTtRQUNyQixZQUFZLEVBQUUsVUFBVTtRQUN4QixZQUFZLEVBQUUsbUJBQW1CO1FBQ2pDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsYUFBYSxFQUFFLHFCQUFxQjtRQUNwQyxXQUFXLEVBQUUsa0NBQWtDO1FBQy9DLFlBQVksRUFBRSxxQ0FBcUM7UUFDbkQsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxTQUFTLEVBQUUsOENBQThDO1FBQ3pELFFBQVEsRUFBRSxPQUFPO1FBQ2pCLGNBQWMsRUFBRSw4REFBOEQ7UUFDOUUsWUFBWSxFQUFFLDRCQUE0QjtRQUMxQyxRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsWUFBWSxF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K0I7UUFDOUMsY0FBYyxFQUFFLHNCQUFzQjtRQUN0QyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxTQUFTLEVBQ1AsOEhBQThIO1FBQ2hJLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGVBQWUsRUFBRSxXQUFXO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikgZW1iZWJpZG9zIGVuIGB2YWwtb3JnYW5pemF0aW9uLXZpZXdgLiBBdXRvLXJlZ2lzdHJhZG9zIGVuXG4gKiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuT3JnYW5pemF0aW9uYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFBvcnRhZG8gZGUgYE9SR19JMThOX0NPTlRFTlRgIChzaG93Y2FzZSkgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphY2nDs24nLFxuICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0dlc3Rpb25hIHR1IG9yZ2FuaXphY2nDs24gYWN0aXZhJyxcbiAgICBpbmZvVGl0bGU6ICdJbmZvcm1hY2nDs24nLFxuICAgIGluZm9OYW1lOiAnTm9tYnJlJyxcbiAgICBpbmZvRGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUaXBvJyxcbiAgICBlZGl0Q3RhOiAnRWRpdGFyJyxcbiAgICBzYXZlQ3RhOiAnR3VhcmRhcicsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsYXInLFxuICAgIG1lbWJlcnNUaXRsZTogJ01pZW1icm9zJyxcbiAgICBtZW1iZXJzRW1wdHk6ICdTaW4gbWllbWJyb3MgYcO6bi4nLFxuICAgIG1lbWJlclJvbGVzOiAnUm9sZXMnLFxuICAgIGludml0ZVRpdGxlOiAnSW52aXRhcicsXG4gICAgaW52aXRlRW1haWw6ICdDb3JyZW8gZWxlY3Ryw7NuaWNvJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sJyxcbiAgICBpbnZpdGVDdGE6ICdJbnZpdGFyJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhY2nDs24gZW52aWFkYS4nLFxuICAgIGludml0ZUVycm9yOiAnTm8gc2UgcHVkbyBlbnZpYXIgbGEgaW52aXRhY2nDs24uJyxcbiAgICBtZW1iZXJzRXJyb3I6ICdObyBzZSBwdWRpZXJvbiBjYXJnYXIgbG9zIG1pZW1icm9zLicsXG4gICAgbGVhdmVUaXRsZTogJ1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIGxlYXZlSGludDogJ0RlamFyw6FzIGRlIHRlbmVyIGFjY2VzbyBhIGVzdGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGxlYXZlQ3RhOiAnU2FsaXInLFxuICAgIGxlYXZlT3duZXJIaW50OiAnRXJlcyBlbCBwcm9waWV0YXJpby4gVHJhbnNmaWVyZSBsYSBwcm9waWVkYWQgYW50ZXMgZGUgc2FsaXIuJyxcbiAgICBsZWF2ZUNvbmZpcm06ICfCv1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24/JyxcbiAgICBwbGFuRnJlZTogJ0dyYXR1aXRvJyxcbiAgICBwbGFuUHJvOiAnUHJvJyxcbiAgICBwbGFuRW50ZXJwcmlzZTogJ0VtcHJlc2EnLFxuICAgIHNhdmVTdWNjZXNzOiAnT3JnYW5pemFjacOzbiBhY3R1YWxpemFkYS4nLFxuICAgIGxlYXZlU3VjY2VzczogJ0hhcyBzYWxpZG8gZGUgbGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGVycm9yVGl0bGU6ICdObyBzZSBwdWRvIGNhcmdhciBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICBvZmZsaW5lVGl0bGU6ICdTaW4gY29uZXhpw7NuJyxcbiAgICBvZmZsaW5lSGludDogJ1ZlcmlmaWNhIHR1IGNvbmV4acOzbiBlIGludGVudGEgZGUgbnVldm8uJyxcbiAgICByZXRyeTogJ1JlaW50ZW50YXInLFxuICAgIHNhdmVFcnJvcjogJ05vIHNlIHB1ZG8gZ3VhcmRhci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIGxlYXZlRXJyb3I6ICdObyBzZSBwdWRvIHNhbGlyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgdHJhbnNmZXJUaXRsZTogJ1RyYW5zZmVyaXIgcHJvcGllZGFkJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdFbGlnZSB1biBtaWVtYnJvIHBhcmEgdHJhbnNmZXJpcmxlIGxhIHByb3BpZWRhZCBkZSBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY2Npb25hciBudWV2byBwcm9waWV0YXJpbycsXG4gICAgdHJhbnNmZXJDdGE6ICdUcmFuc2ZlcmlyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICfCv1RyYW5zZmVyaXIgbGEgcHJvcGllZGFkIGEgZXN0ZSBtaWVtYnJvPyBQZXJkZXLDoXMgZWwgcm9sIGRlIHByb3BpZXRhcmlvLicsXG4gICAgdHJhbnNmZXJTdWNjZXNzOiAnUHJvcGllZGFkIHRyYW5zZmVyaWRhLicsXG4gICAgdHJhbnNmZXJFcnJvcjogJ05vIHNlIHB1ZG8gdHJhbnNmZXJpciBsYSBwcm9waWVkYWQuJyxcbiAgICBpbnZpdGVDdGFUaXRsZTogJ8K/RGVzZWFzIGFncmVnYXIgYSBhbGd1aWVuPycsXG4gICAgaW52aXRlQ3RhSGludDogJ0ludml0YSBhIHVzdWFyaW9zIGEgdW5pcnNlIGEgdHUgb3JnYW5pemFjacOzbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGFyJyxcbiAgICBpbXBvcnRPcGVuOiAnSW1wb3J0YXInLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWZXIgbWllbWJybycsXG4gICAgcm9sZVZpZXdlcjogJ1Zpc29yJyxcbiAgICByb2xlRWRpdG9yOiAnRWRpdG9yJyxcbiAgICByb2xlQWRtaW46ICdBZG1pbicsXG4gICAgcm9sZVN1cGVyQWRtaW46ICdTdXBlciBBZG1pbicsXG4gICAgcm9sZXNTZWN0aW9uVGl0bGU6ICdSb2xlcyB5IHBlcm1pc29zJyxcbiAgICByb2xlc0hpbnQ6XG4gICAgICAnVHUgb3JnYW5pemFjacOzbiB0aWVuZSByb2xlcyBxdWUgY29udHJvbGFuIGxvIHF1ZSBjYWRhIG1pZW1icm8gcHVlZGUgdmVyIHkgaGFjZXIuIENhZGEgcm9sIGxsZXZhIHVuIGNvbmp1bnRvIGRlIHBlcm1pc29zIGFzb2NpYWRvcy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmVyIHJvbGVzIHkgcGVybWlzb3MnLFxuICAgIHJvbGVzU3lzdGVtQmFkZ2U6ICdTaXN0ZW1hJyxcbiAgICBwZXJtQWxsOiAnVG9kbycsXG4gICAgcGVybVVzZXJzOiAnVXN1YXJpb3MnLFxuICAgIHBlcm1Eb2N1bWVudHM6ICdEb2N1bWVudG9zJyxcbiAgICBwZXJtUm9sZXM6ICdSb2xlcycsXG4gICAgcGVybU1lZGlhOiAnTWVkaWEnLFxuICAgIHBlcm1UZW1wbGF0ZXM6ICdQbGFudGlsbGFzJyxcbiAgICBwZXJtUmVhZDogJ0xlZXInLFxuICAgIHBlcm1Xcml0ZTogJ0VzY3JpYmlyJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXInLFxuICAgIHBlcm1EZWxldGU6ICdFbGltaW5hcicsXG4gICAgcGVybU1hbmFnZTogJ0dlc3Rpb25hcicsXG4gICAgbWVtYmVyc1Nob3dNb3JlOiAnVmVyIG3DoXMnLFxuICB9LFxuICBlbjoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphdGlvbicsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnTWFuYWdlIHlvdXIgYWN0aXZlIG9yZ2FuaXphdGlvbicsXG4gICAgaW5mb1RpdGxlOiAnSW5mb3JtYXRpb24nLFxuICAgIGluZm9OYW1lOiAnTmFtZScsXG4gICAgaW5mb0Rlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUeXBlJyxcbiAgICBlZGl0Q3RhOiAnRWRpdCcsXG4gICAgc2F2ZUN0YTogJ1NhdmUnLFxuICAgIGNhbmNlbEN0YTogJ0NhbmNlbCcsXG4gICAgbWVtYmVyc1RpdGxlOiAnTWVtYmVycycsXG4gICAgbWVtYmVyc0VtcHR5OiAnTm8gbWVtYmVycyB5ZXQuJyxcbiAgICBtZW1iZXJSb2xlczogJ1JvbGVzJyxcbiAgICBpbnZpdGVUaXRsZTogJ0ludml0ZScsXG4gICAgaW52aXRlRW1haWw6ICdFbWFpbCBhZGRyZXNzJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sZScsXG4gICAgaW52aXRlQ3RhOiAnSW52aXRlJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhdGlvbiBzZW50LicsXG4gICAgaW52aXRlRXJyb3I6ICdDb3VsZCBub3Qgc2VuZCBpbnZpdGF0aW9uLicsXG4gICAgbWVtYmVyc0Vycm9yOiAnQ291bGQgbm90IGxvYWQgbWVtYmVycy4nLFxuICAgIGxlYXZlVGl0bGU6ICdMZWF2ZSBvcmdhbml6YXRpb24nLFxuICAgIGxlYXZlSGludDogJ1lvdSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgbGVhdmVDdGE6ICdMZWF2ZScsXG4gICAgbGVhdmVPd25lckhpbnQ6ICdZb3UgYXJlIHRoZSBvd25lci4gVHJhbnNmZXIgb3duZXJzaGlwIGJlZm9yZSBsZWF2aW5nLicsXG4gICAgbGVhdmVDb25maXJtOiAnTGVhdmUgdGhpcyBvcmdhbml6YXRpb24/JyxcbiAgICBwbGFuRnJlZTogJ0ZyZWUnLFxuICAgIHBsYW5Qcm86ICdQcm8nLFxuICAgIHBsYW5FbnRlcnByaXNlOiAnRW50ZXJwcmlzZScsXG4gICAgc2F2ZVN1Y2Nlc3M6ICdPcmdhbml6YXRpb24gdXBkYXRlZC4nLFxuICAgIGxlYXZlU3VjY2VzczogJ1lvdSBoYXZlIGxlZnQgdGhlIG9yZ2FuaXphdGlvbi4nLFxuICAgIGVycm9yVGl0bGU6ICdDb3VsZCBub3QgbG9hZCBvcmdhbml6YXRpb24nLFxuICAgIG9mZmxpbmVUaXRsZTogJ05vIGNvbm5lY3Rpb24nLFxuICAgIG9mZmxpbmVIaW50OiAnQ2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uJyxcbiAgICByZXRyeTogJ1JldHJ5JyxcbiAgICBzYXZlRXJyb3I6ICdDb3VsZCBub3Qgc2F2ZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgIGxlYXZlRXJyb3I6ICdDb3VsZCBub3QgbGVhdmUuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICB0cmFuc2ZlclRpdGxlOiAnVHJhbnNmZXIgb3duZXJzaGlwJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdDaG9vc2UgYSBtZW1iZXIgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY3QgbmV3IG93bmVyJyxcbiAgICB0cmFuc2ZlckN0YTogJ1RyYW5zZmVyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICdUcmFuc2ZlciBvd25lcnNoaXAgdG8gdGhpcyBtZW1iZXI/IFlvdSB3aWxsIGxvc2UgdGhlIG93bmVyIHJvbGUuJyxcbiAgICB0cmFuc2ZlclN1Y2Nlc3M6ICdPd25lcnNoaXAgdHJhbnNmZXJyZWQuJyxcbiAgICB0cmFuc2ZlckVycm9yOiAnQ291bGQgbm90IHRyYW5zZmVyIG93bmVyc2hpcC4nLFxuICAgIGludml0ZUN0YVRpdGxlOiAnV2FudCB0byBhZGQgc29tZW9uZT8nLFxuICAgIGludml0ZUN0YUhpbnQ6ICdJbnZpdGUgdXNlcnMgdG8gam9pbiB5b3VyIG9yZ2FuaXphdGlvbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGUnLFxuICAgIGltcG9ydE9wZW46ICdJbXBvcnQnLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWaWV3IG1lbWJlcicsXG4gICAgcm9sZVZpZXdlcjogJ1ZpZXdlcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJvbGVzU2VjdGlvblRpdGxlOiAnUm9sZXMgJiBwZXJtaXNzaW9ucycsXG4gICAgcm9sZXNIaW50OlxuICAgICAgJ1lvdXIgb3JnYW5pemF0aW9uIGhhcyByb2xlcyB0aGF0IGNvbnRyb2wgd2hhdCBlYWNoIG1lbWJlciBjYW4gc2VlIGFuZCBkby4gRWFjaCByb2xlIGNhcnJpZXMgYSBzZXQgb2YgYXNzb2NpYXRlZCBwZXJtaXNzaW9ucy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmlldyByb2xlcyAmIHBlcm1pc3Npb25zJyxcbiAgICByb2xlc1N5c3RlbUJhZGdlOiAnU3lzdGVtJyxcbiAgICBwZXJtQWxsOiAnQWxsJyxcbiAgICBwZXJtVXNlcnM6ICdVc2VycycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50cycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnVGVtcGxhdGVzJyxcbiAgICBwZXJtUmVhZDogJ1JlYWQnLFxuICAgIHBlcm1Xcml0ZTogJ1dyaXRlJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXRlJyxcbiAgICBwZXJtRGVsZXRlOiAnRGVsZXRlJyxcbiAgICBwZXJtTWFuYWdlOiAnTWFuYWdlJyxcbiAgICBtZW1iZXJzU2hvd01vcmU6ICdTaG93IG1vcmUnLFxuICB9LFxufTtcbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXZpZXcuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnYW5pemF0aW9uLXZpZXcvb3JnYW5pemF0aW9uLXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUI7SUFDdEQsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsZUFBZSxFQUFFLGlDQUFpQztRQUNsRCxTQUFTLEVBQUUsYUFBYTtRQUN4QixRQUFRLEVBQUUsUUFBUTtRQUNsQixlQUFlLEVBQUUsYUFBYTtRQUM5QixRQUFRLEVBQUUsTUFBTTtRQUNoQixRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsVUFBVTtRQUNyQixZQUFZLEVBQUUsVUFBVTtRQUN4QixZQUFZLEVBQUUsbUJBQW1CO1FBQ2pDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsYUFBYSxFQUFFLHFCQUFxQjtRQUNwQyxXQUFXLEVBQUUsa0NBQWtDO1FBQy9DLFlBQVksRUFBRSxxQ0FBcUM7UUFDbkQsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxTQUFTLEVBQUUsOENBQThDO1FBQ3pELFFBQVEsRUFBRSxPQUFPO1FBQ2pCLGNBQWMsRUFBRSw4REFBOEQ7UUFDOUUsWUFBWSxFQUFFLDRCQUE0QjtRQUMxQyxRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsWUFBWSxF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O1FBQ3pDLGFBQWEsRUFBRSwrQkFBK0I7UUFDOUMsY0FBYyxFQUFFLHNCQUFzQjtRQUN0QyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxTQUFTLEVBQ1AsOEhBQThIO1FBQ2hJLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGVBQWUsRUFBRSxXQUFXO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikgZW1iZWJpZG9zIGVuIGB2YWwtb3JnYW5pemF0aW9uLXZpZXdgLiBBdXRvLXJlZ2lzdHJhZG9zIGVuXG4gKiBlbCBjb25zdHJ1Y3RvciBkZWwgY29tcG9uZW50ZSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIChgU2V0dGluZ3MuT3JnYW5pemF0aW9uYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFBvcnRhZG8gZGUgYE9SR19JMThOX0NPTlRFTlRgIChzaG93Y2FzZSkgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphY2nDs24nLFxuICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0dlc3Rpb25hIHR1IG9yZ2FuaXphY2nDs24gYWN0aXZhJyxcbiAgICBpbmZvVGl0bGU6ICdJbmZvcm1hY2nDs24nLFxuICAgIGluZm9OYW1lOiAnTm9tYnJlJyxcbiAgICBpbmZvRGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUaXBvJyxcbiAgICBlZGl0Q3RhOiAnRWRpdGFyJyxcbiAgICBzYXZlQ3RhOiAnR3VhcmRhcicsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsYXInLFxuICAgIG1lbWJlcnNUaXRsZTogJ01pZW1icm9zJyxcbiAgICBtZW1iZXJzRW1wdHk6ICdTaW4gbWllbWJyb3MgYcO6bi4nLFxuICAgIG1lbWJlclJvbGVzOiAnUm9sZXMnLFxuICAgIGludml0ZVRpdGxlOiAnSW52aXRhcicsXG4gICAgaW52aXRlRW1haWw6ICdDb3JyZW8gZWxlY3Ryw7NuaWNvJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sJyxcbiAgICBpbnZpdGVDdGE6ICdJbnZpdGFyJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhY2nDs24gZW52aWFkYS4nLFxuICAgIGludml0ZUVycm9yOiAnTm8gc2UgcHVkbyBlbnZpYXIgbGEgaW52aXRhY2nDs24uJyxcbiAgICBtZW1iZXJzRXJyb3I6ICdObyBzZSBwdWRpZXJvbiBjYXJnYXIgbG9zIG1pZW1icm9zLicsXG4gICAgbGVhdmVUaXRsZTogJ1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24nLFxuICAgIGxlYXZlSGludDogJ0RlamFyw6FzIGRlIHRlbmVyIGFjY2VzbyBhIGVzdGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGxlYXZlQ3RhOiAnU2FsaXInLFxuICAgIGxlYXZlT3duZXJIaW50OiAnRXJlcyBlbCBwcm9waWV0YXJpby4gVHJhbnNmaWVyZSBsYSBwcm9waWVkYWQgYW50ZXMgZGUgc2FsaXIuJyxcbiAgICBsZWF2ZUNvbmZpcm06ICfCv1NhbGlyIGRlIGxhIG9yZ2FuaXphY2nDs24/JyxcbiAgICBwbGFuRnJlZTogJ0dyYXR1aXRvJyxcbiAgICBwbGFuUHJvOiAnUHJvJyxcbiAgICBwbGFuRW50ZXJwcmlzZTogJ0VtcHJlc2EnLFxuICAgIHNhdmVTdWNjZXNzOiAnT3JnYW5pemFjacOzbiBhY3R1YWxpemFkYS4nLFxuICAgIGxlYXZlU3VjY2VzczogJ0hhcyBzYWxpZG8gZGUgbGEgb3JnYW5pemFjacOzbi4nLFxuICAgIGVycm9yVGl0bGU6ICdObyBzZSBwdWRvIGNhcmdhciBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICBvZmZsaW5lVGl0bGU6ICdTaW4gY29uZXhpw7NuJyxcbiAgICBvZmZsaW5lSGludDogJ1ZlcmlmaWNhIHR1IGNvbmV4acOzbiBlIGludGVudGEgZGUgbnVldm8uJyxcbiAgICByZXRyeTogJ1JlaW50ZW50YXInLFxuICAgIHNhdmVFcnJvcjogJ05vIHNlIHB1ZG8gZ3VhcmRhci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIGxlYXZlRXJyb3I6ICdObyBzZSBwdWRvIHNhbGlyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgdHJhbnNmZXJUaXRsZTogJ1RyYW5zZmVyaXIgcHJvcGllZGFkJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdFbGlnZSB1biBtaWVtYnJvIHBhcmEgdHJhbnNmZXJpcmxlIGxhIHByb3BpZWRhZCBkZSBsYSBvcmdhbml6YWNpw7NuLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY2Npb25hciBudWV2byBwcm9waWV0YXJpbycsXG4gICAgdHJhbnNmZXJDdGE6ICdUcmFuc2ZlcmlyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICfCv1RyYW5zZmVyaXIgbGEgcHJvcGllZGFkIGEgZXN0ZSBtaWVtYnJvPyBQZXJkZXLDoXMgZWwgcm9sIGRlIHByb3BpZXRhcmlvLicsXG4gICAgdHJhbnNmZXJTdWNjZXNzOiAnUHJvcGllZGFkIHRyYW5zZmVyaWRhLicsXG4gICAgdHJhbnNmZXJFcnJvcjogJ05vIHNlIHB1ZG8gdHJhbnNmZXJpciBsYSBwcm9waWVkYWQuJyxcbiAgICBpbnZpdGVDdGFUaXRsZTogJ8K/RGVzZWFzIGFncmVnYXIgYSBhbGd1aWVuPycsXG4gICAgaW52aXRlQ3RhSGludDogJ0ludml0YSBhIHVzdWFyaW9zIGEgdW5pcnNlIGEgdHUgb3JnYW5pemFjacOzbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGFyJyxcbiAgICBpbXBvcnRPcGVuOiAnSW1wb3J0YXInLFxuICAgIGFwaUtleXNPcGVuOiAnQVBJIEtleXMnLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWZXIgbWllbWJybycsXG4gICAgcm9sZVZpZXdlcjogJ1Zpc29yJyxcbiAgICByb2xlRWRpdG9yOiAnRWRpdG9yJyxcbiAgICByb2xlQWRtaW46ICdBZG1pbicsXG4gICAgcm9sZVN1cGVyQWRtaW46ICdTdXBlciBBZG1pbicsXG4gICAgcm9sZXNTZWN0aW9uVGl0bGU6ICdSb2xlcyB5IHBlcm1pc29zJyxcbiAgICByb2xlc0hpbnQ6XG4gICAgICAnVHUgb3JnYW5pemFjacOzbiB0aWVuZSByb2xlcyBxdWUgY29udHJvbGFuIGxvIHF1ZSBjYWRhIG1pZW1icm8gcHVlZGUgdmVyIHkgaGFjZXIuIENhZGEgcm9sIGxsZXZhIHVuIGNvbmp1bnRvIGRlIHBlcm1pc29zIGFzb2NpYWRvcy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmVyIHJvbGVzIHkgcGVybWlzb3MnLFxuICAgIHJvbGVzU3lzdGVtQmFkZ2U6ICdTaXN0ZW1hJyxcbiAgICBwZXJtQWxsOiAnVG9kbycsXG4gICAgcGVybVVzZXJzOiAnVXN1YXJpb3MnLFxuICAgIHBlcm1Eb2N1bWVudHM6ICdEb2N1bWVudG9zJyxcbiAgICBwZXJtUm9sZXM6ICdSb2xlcycsXG4gICAgcGVybU1lZGlhOiAnTWVkaWEnLFxuICAgIHBlcm1UZW1wbGF0ZXM6ICdQbGFudGlsbGFzJyxcbiAgICBwZXJtUmVhZDogJ0xlZXInLFxuICAgIHBlcm1Xcml0ZTogJ0VzY3JpYmlyJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXInLFxuICAgIHBlcm1EZWxldGU6ICdFbGltaW5hcicsXG4gICAgcGVybU1hbmFnZTogJ0dlc3Rpb25hcicsXG4gICAgbWVtYmVyc1Nob3dNb3JlOiAnVmVyIG3DoXMnLFxuICB9LFxuICBlbjoge1xuICAgIHBhZ2VUaXRsZTogJ09yZ2FuaXphdGlvbicsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnTWFuYWdlIHlvdXIgYWN0aXZlIG9yZ2FuaXphdGlvbicsXG4gICAgaW5mb1RpdGxlOiAnSW5mb3JtYXRpb24nLFxuICAgIGluZm9OYW1lOiAnTmFtZScsXG4gICAgaW5mb0Rlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgIGluZm9QbGFuOiAnUGxhbicsXG4gICAgaW5mb1R5cGU6ICdUeXBlJyxcbiAgICBlZGl0Q3RhOiAnRWRpdCcsXG4gICAgc2F2ZUN0YTogJ1NhdmUnLFxuICAgIGNhbmNlbEN0YTogJ0NhbmNlbCcsXG4gICAgbWVtYmVyc1RpdGxlOiAnTWVtYmVycycsXG4gICAgbWVtYmVyc0VtcHR5OiAnTm8gbWVtYmVycyB5ZXQuJyxcbiAgICBtZW1iZXJSb2xlczogJ1JvbGVzJyxcbiAgICBpbnZpdGVUaXRsZTogJ0ludml0ZScsXG4gICAgaW52aXRlRW1haWw6ICdFbWFpbCBhZGRyZXNzJyxcbiAgICBpbnZpdGVSb2xlOiAnUm9sZScsXG4gICAgaW52aXRlQ3RhOiAnSW52aXRlJyxcbiAgICBpbnZpdGVTdWNjZXNzOiAnSW52aXRhdGlvbiBzZW50LicsXG4gICAgaW52aXRlRXJyb3I6ICdDb3VsZCBub3Qgc2VuZCBpbnZpdGF0aW9uLicsXG4gICAgbWVtYmVyc0Vycm9yOiAnQ291bGQgbm90IGxvYWQgbWVtYmVycy4nLFxuICAgIGxlYXZlVGl0bGU6ICdMZWF2ZSBvcmdhbml6YXRpb24nLFxuICAgIGxlYXZlSGludDogJ1lvdSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgbGVhdmVDdGE6ICdMZWF2ZScsXG4gICAgbGVhdmVPd25lckhpbnQ6ICdZb3UgYXJlIHRoZSBvd25lci4gVHJhbnNmZXIgb3duZXJzaGlwIGJlZm9yZSBsZWF2aW5nLicsXG4gICAgbGVhdmVDb25maXJtOiAnTGVhdmUgdGhpcyBvcmdhbml6YXRpb24/JyxcbiAgICBwbGFuRnJlZTogJ0ZyZWUnLFxuICAgIHBsYW5Qcm86ICdQcm8nLFxuICAgIHBsYW5FbnRlcnByaXNlOiAnRW50ZXJwcmlzZScsXG4gICAgc2F2ZVN1Y2Nlc3M6ICdPcmdhbml6YXRpb24gdXBkYXRlZC4nLFxuICAgIGxlYXZlU3VjY2VzczogJ1lvdSBoYXZlIGxlZnQgdGhlIG9yZ2FuaXphdGlvbi4nLFxuICAgIGVycm9yVGl0bGU6ICdDb3VsZCBub3QgbG9hZCBvcmdhbml6YXRpb24nLFxuICAgIG9mZmxpbmVUaXRsZTogJ05vIGNvbm5lY3Rpb24nLFxuICAgIG9mZmxpbmVIaW50OiAnQ2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uJyxcbiAgICByZXRyeTogJ1JldHJ5JyxcbiAgICBzYXZlRXJyb3I6ICdDb3VsZCBub3Qgc2F2ZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgIGxlYXZlRXJyb3I6ICdDb3VsZCBub3QgbGVhdmUuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICB0cmFuc2ZlclRpdGxlOiAnVHJhbnNmZXIgb3duZXJzaGlwJyxcbiAgICB0cmFuc2ZlckhpbnQ6ICdDaG9vc2UgYSBtZW1iZXIgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoaXMgb3JnYW5pemF0aW9uLicsXG4gICAgdHJhbnNmZXJTZWxlY3Q6ICdTZWxlY3QgbmV3IG93bmVyJyxcbiAgICB0cmFuc2ZlckN0YTogJ1RyYW5zZmVyJyxcbiAgICB0cmFuc2ZlckNvbmZpcm06ICdUcmFuc2ZlciBvd25lcnNoaXAgdG8gdGhpcyBtZW1iZXI/IFlvdSB3aWxsIGxvc2UgdGhlIG93bmVyIHJvbGUuJyxcbiAgICB0cmFuc2ZlclN1Y2Nlc3M6ICdPd25lcnNoaXAgdHJhbnNmZXJyZWQuJyxcbiAgICB0cmFuc2ZlckVycm9yOiAnQ291bGQgbm90IHRyYW5zZmVyIG93bmVyc2hpcC4nLFxuICAgIGludml0ZUN0YVRpdGxlOiAnV2FudCB0byBhZGQgc29tZW9uZT8nLFxuICAgIGludml0ZUN0YUhpbnQ6ICdJbnZpdGUgdXNlcnMgdG8gam9pbiB5b3VyIG9yZ2FuaXphdGlvbi4nLFxuICAgIGludml0ZU9wZW46ICdJbnZpdGUnLFxuICAgIGltcG9ydE9wZW46ICdJbXBvcnQnLFxuICAgIGFwaUtleXNPcGVuOiAnQVBJIEtleXMnLFxuICAgIHZpZXdNZW1iZXJDdGE6ICdWaWV3IG1lbWJlcicsXG4gICAgcm9sZVZpZXdlcjogJ1ZpZXdlcicsXG4gICAgcm9sZUVkaXRvcjogJ0VkaXRvcicsXG4gICAgcm9sZUFkbWluOiAnQWRtaW4nLFxuICAgIHJvbGVTdXBlckFkbWluOiAnU3VwZXIgQWRtaW4nLFxuICAgIHJvbGVzU2VjdGlvblRpdGxlOiAnUm9sZXMgJiBwZXJtaXNzaW9ucycsXG4gICAgcm9sZXNIaW50OlxuICAgICAgJ1lvdXIgb3JnYW5pemF0aW9uIGhhcyByb2xlcyB0aGF0IGNvbnRyb2wgd2hhdCBlYWNoIG1lbWJlciBjYW4gc2VlIGFuZCBkby4gRWFjaCByb2xlIGNhcnJpZXMgYSBzZXQgb2YgYXNzb2NpYXRlZCBwZXJtaXNzaW9ucy4nLFxuICAgIHJvbGVzVmlld1Blcm1zOiAnVmlldyByb2xlcyAmIHBlcm1pc3Npb25zJyxcbiAgICByb2xlc1N5c3RlbUJhZGdlOiAnU3lzdGVtJyxcbiAgICBwZXJtQWxsOiAnQWxsJyxcbiAgICBwZXJtVXNlcnM6ICdVc2VycycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50cycsXG4gICAgcGVybVJvbGVzOiAnUm9sZXMnLFxuICAgIHBlcm1NZWRpYTogJ01lZGlhJyxcbiAgICBwZXJtVGVtcGxhdGVzOiAnVGVtcGxhdGVzJyxcbiAgICBwZXJtUmVhZDogJ1JlYWQnLFxuICAgIHBlcm1Xcml0ZTogJ1dyaXRlJyxcbiAgICBwZXJtQ3JlYXRlOiAnQ3JlYXRlJyxcbiAgICBwZXJtRGVsZXRlOiAnRGVsZXRlJyxcbiAgICBwZXJtTWFuYWdlOiAnTWFuYWdlJyxcbiAgICBtZW1iZXJzU2hvd01vcmU6ICdTaG93IG1vcmUnLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { VALTECH_AUTH_CONFIG } from '../auth/config';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
/**
|
|
7
|
+
* Cliente HTTP de Client API Keys org-scopeadas (ADR-023). La org activa se
|
|
8
|
+
* resuelve en backend desde el JWT, así que el path no la incluye.
|
|
9
|
+
*/
|
|
10
|
+
export class ApiKeyService {
|
|
11
|
+
constructor(config, http) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.http = http;
|
|
14
|
+
}
|
|
15
|
+
get baseUrl() {
|
|
16
|
+
return `${this.config.apiUrl}/org/api-keys`;
|
|
17
|
+
}
|
|
18
|
+
/** Lista las API keys de la org activa. */
|
|
19
|
+
list() {
|
|
20
|
+
return this.http.get(`${this.baseUrl}/`).pipe(map(r => r.keys ?? []));
|
|
21
|
+
}
|
|
22
|
+
/** Crea una API key. La respuesta incluye el secreto (se muestra UNA vez). */
|
|
23
|
+
create(req) {
|
|
24
|
+
return this.http.post(`${this.baseUrl}/`, req);
|
|
25
|
+
}
|
|
26
|
+
/** Revoca (elimina) una API key por id. */
|
|
27
|
+
revoke(keyId) {
|
|
28
|
+
return this.http.delete(`${this.baseUrl}/${keyId}`);
|
|
29
|
+
}
|
|
30
|
+
/** Catálogo de permisos asignables a una key. */
|
|
31
|
+
availablePermissions() {
|
|
32
|
+
return this.http
|
|
33
|
+
.get(`${this.baseUrl}/permissions`)
|
|
34
|
+
.pipe(map(r => r.permissions ?? []));
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiKeyService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiKeyService, providedIn: 'root' }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiKeyService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{ providedIn: 'root' }]
|
|
42
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
43
|
+
type: Inject,
|
|
44
|
+
args: [VALTECH_AUTH_CONFIG]
|
|
45
|
+
}] }, { type: i1.HttpClient }] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYXBpa2V5cy9hcGkta2V5cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBV3JEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ3VDLE1BQXlCLEVBQ3RELElBQWdCO1FBRGEsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDdEQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDO0lBRUosSUFBWSxPQUFPO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLE1BQU0sQ0FBQyxHQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUF1QixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQXVCLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQStCLEdBQUcsSUFBSSxDQUFDLE9BQU8sY0FBYyxDQUFDO2FBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0E5QlUsYUFBYSxrQkFFZCxtQkFBbUI7bUhBRmxCLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9BVVRIX0NPTkZJRyB9IGZyb20gJy4uL2F1dGgvY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hBdXRoQ29uZmlnIH0gZnJvbSAnLi4vYXV0aC90eXBlcyc7XG5pbXBvcnQge1xuICBBdmFpbGFibGVQZXJtaXNzaW9uc1Jlc3BvbnNlLFxuICBDbGllbnRBcGlLZXksXG4gIENyZWF0ZUFwaUtleVJlcXVlc3QsXG4gIENyZWF0ZUFwaUtleVJlc3BvbnNlLFxuICBMaXN0QXBpS2V5c1Jlc3BvbnNlLFxuICBSZXZva2VBcGlLZXlSZXNwb25zZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ2xpZW50ZSBIVFRQIGRlIENsaWVudCBBUEkgS2V5cyBvcmctc2NvcGVhZGFzIChBRFItMDIzKS4gTGEgb3JnIGFjdGl2YSBzZVxuICogcmVzdWVsdmUgZW4gYmFja2VuZCBkZXNkZSBlbCBKV1QsIGFzw60gcXVlIGVsIHBhdGggbm8gbGEgaW5jbHV5ZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBcGlLZXlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEF1dGhDb25maWcsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICkge31cblxuICBwcml2YXRlIGdldCBiYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uZmlnLmFwaVVybH0vb3JnL2FwaS1rZXlzYDtcbiAgfVxuXG4gIC8qKiBMaXN0YSBsYXMgQVBJIGtleXMgZGUgbGEgb3JnIGFjdGl2YS4gKi9cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPENsaWVudEFwaUtleVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdEFwaUtleXNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9gKS5waXBlKG1hcChyID0+IHIua2V5cyA/PyBbXSkpO1xuICB9XG5cbiAgLyoqIENyZWEgdW5hIEFQSSBrZXkuIExhIHJlc3B1ZXN0YSBpbmNsdXllIGVsIHNlY3JldG8gKHNlIG11ZXN0cmEgVU5BIHZleikuICovXG4gIGNyZWF0ZShyZXE6IENyZWF0ZUFwaUtleVJlcXVlc3QpOiBPYnNlcnZhYmxlPENyZWF0ZUFwaUtleVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZUFwaUtleVJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L2AsIHJlcSk7XG4gIH1cblxuICAvKiogUmV2b2NhIChlbGltaW5hKSB1bmEgQVBJIGtleSBwb3IgaWQuICovXG4gIHJldm9rZShrZXlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXZva2VBcGlLZXlSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFJldm9rZUFwaUtleVJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9LyR7a2V5SWR9YCk7XG4gIH1cblxuICAvKiogQ2F0w6Fsb2dvIGRlIHBlcm1pc29zIGFzaWduYWJsZXMgYSB1bmEga2V5LiAqL1xuICBhdmFpbGFibGVQZXJtaXNzaW9ucygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxBdmFpbGFibGVQZXJtaXNzaW9uc1Jlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L3Blcm1pc3Npb25zYClcbiAgICAgIC5waXBlKG1hcChyID0+IHIucGVybWlzc2lvbnMgPz8gW10pKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos de Client API Keys org-scopeadas (ADR-023). Contrato espejo de
|
|
3
|
+
* `lambdas/org` `/org/api-keys/*`. El orgID se resuelve del JWT (ActiveOrgID),
|
|
4
|
+
* no va en el path.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2FwaWtleXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlwb3MgZGUgQ2xpZW50IEFQSSBLZXlzIG9yZy1zY29wZWFkYXMgKEFEUi0wMjMpLiBDb250cmF0byBlc3Blam8gZGVcbiAqIGBsYW1iZGFzL29yZ2AgYC9vcmcvYXBpLWtleXMvKmAuIEVsIG9yZ0lEIHNlIHJlc3VlbHZlIGRlbCBKV1QgKEFjdGl2ZU9yZ0lEKSxcbiAqIG5vIHZhIGVuIGVsIHBhdGguXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBDbGllbnRBcGlLZXkge1xuICBrZXlJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHJhdGVMaW1pdD86IG51bWJlcjtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nO1xuICBhbGxvd2VkSXBzPzogc3RyaW5nW107XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgbGFzdFVzZWRBdD86IHN0cmluZztcbn1cblxuLyoqIFNvbG8gZW4gbGEgcmVzcHVlc3RhIGRlIGNyZWFjacOzbjogZWwgc2VjcmV0byBzZSBtdWVzdHJhIFVOQSB2ZXouICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWVudEFwaUtleVdpdGhTZWNyZXQgZXh0ZW5kcyBDbGllbnRBcGlLZXkge1xuICBzZWNyZXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcGlLZXlSZXF1ZXN0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHJhdGVMaW1pdD86IG51bWJlcjtcbiAgZXhwaXJlc0luRGF5cz86IG51bWJlcjtcbiAgYWxsb3dlZElwcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUFwaUtleVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAga2V5OiBDbGllbnRBcGlLZXlXaXRoU2VjcmV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RBcGlLZXlzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBrZXlzOiBDbGllbnRBcGlLZXlbXTtcbiAgbmV4dFRva2VuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZVBlcm1pc3Npb25zUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV2b2tlQXBpS2V5UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.996';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45OTYnO1xuIl19
|