@openziti/ziti-console-lib 0.5.1 → 0.6.1
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/assets/scripts/growler.js +4 -0
- package/assets/styles/forms.css +7 -7
- package/assets/styles/global.scss +273 -22
- package/assets/styles/header.css +1 -1
- package/assets/styles/ziti.css +40 -40
- package/esm2022/lib/features/card/card.component.mjs +2 -2
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +2 -2
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +12 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -2
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +2 -2
- package/esm2022/lib/features/data-table/data-table.component.mjs +2 -2
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -2
- package/esm2022/lib/features/json-view/json-view.component.mjs +2 -2
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +22 -3
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -2
- package/esm2022/lib/features/overrides/overrides.component.mjs +2 -2
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +342 -0
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +127 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +338 -0
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +92 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +14 -11
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +2 -2
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +2 -2
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +2 -2
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +3 -3
- package/esm2022/lib/models/auth-policy.mjs +31 -0
- package/esm2022/lib/models/jwt-signer.mjs +19 -0
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +115 -0
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +207 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
- package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +96 -0
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +177 -0
- package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +2 -2
- package/esm2022/lib/services/login-service.class.mjs +1 -1
- package/esm2022/lib/services/node-data.service.mjs +23 -3
- package/esm2022/lib/services/noop-login.service.mjs +1 -4
- package/esm2022/lib/services/settings-service.class.mjs +1 -1
- package/esm2022/lib/services/settings.service.mjs +6 -1
- package/esm2022/lib/services/validation.service.mjs +23 -1
- package/esm2022/lib/services/ziti-controller-data.service.mjs +16 -1
- package/esm2022/lib/services/ziti-data.service.mjs +4 -4
- package/esm2022/lib/ziti-console-lib.module.mjs +29 -5
- package/esm2022/public-api.mjs +9 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +1874 -356
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +75 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +38 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +64 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts +21 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/models/auth-policy.d.ts +8 -0
- package/lib/models/auth-policy.d.ts.map +1 -0
- package/lib/models/jwt-signer.d.ts +16 -0
- package/lib/models/jwt-signer.d.ts.map +1 -0
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts +29 -0
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +34 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -0
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +29 -0
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +1 -0
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts +31 -0
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts.map +1 -0
- package/lib/services/login-service.class.d.ts +0 -1
- package/lib/services/login-service.class.d.ts.map +1 -1
- package/lib/services/node-data.service.d.ts +1 -0
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/noop-login.service.d.ts +0 -1
- package/lib/services/noop-login.service.d.ts.map +1 -1
- package/lib/services/settings-service.class.d.ts +1 -0
- package/lib/services/settings-service.class.d.ts.map +1 -1
- package/lib/services/settings.service.d.ts +1 -0
- package/lib/services/settings.service.d.ts.map +1 -1
- package/lib/services/validation.service.d.ts +2 -0
- package/lib/services/validation.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts +1 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +4 -3
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +22 -17
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +8 -0
- package/public-api.d.ts.map +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { ZITI_DATA_SERVICE } from "../../../services/ziti-data.service";
|
|
3
|
+
import { isEmpty, keys } from "lodash";
|
|
4
|
+
import { GrowlerModel } from "../../messaging/growler.model";
|
|
5
|
+
import { SHAREDZ_EXTENSION } from "../../extendable/extensions-noop.service";
|
|
6
|
+
import { JwtSigner } from "../../../models/jwt-signer";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../messaging/growler.service";
|
|
9
|
+
import * as i2 from "../../../services/validation.service";
|
|
10
|
+
import * as i3 from "../../../services/ziti-data.service";
|
|
11
|
+
class JwtSignerFormService {
|
|
12
|
+
constructor(dataService, extService, growlerService, validationService) {
|
|
13
|
+
this.dataService = dataService;
|
|
14
|
+
this.extService = extService;
|
|
15
|
+
this.growlerService = growlerService;
|
|
16
|
+
this.validationService = validationService;
|
|
17
|
+
this.items = [];
|
|
18
|
+
this.errors = [];
|
|
19
|
+
this.saveDisabled = false;
|
|
20
|
+
}
|
|
21
|
+
save(formData) {
|
|
22
|
+
const isUpdate = !isEmpty(formData.id);
|
|
23
|
+
const data = this.getJwtSignerDataModel(formData, isUpdate);
|
|
24
|
+
let prom;
|
|
25
|
+
if (isUpdate) {
|
|
26
|
+
prom = this.dataService.put('external-jwt-signers', data, formData.id, true);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
prom = this.dataService.post('external-jwt-signers', data, true);
|
|
30
|
+
}
|
|
31
|
+
return prom.then(async (result) => {
|
|
32
|
+
const id = isUpdate ? formData.id : (result?.data?.id || result?.id);
|
|
33
|
+
let config = await this.dataService.getSubdata('external-jwt-signers', id, '').then((svcData) => {
|
|
34
|
+
return svcData.data;
|
|
35
|
+
});
|
|
36
|
+
return this.extService.formDataSaved(config).then((formSavedResult) => {
|
|
37
|
+
if (!formSavedResult) {
|
|
38
|
+
return config;
|
|
39
|
+
}
|
|
40
|
+
const growlerData = new GrowlerModel('success', 'Success', `JWT Signer ${isUpdate ? 'Updated' : 'Created'}`, `Successfully ${isUpdate ? 'updated' : 'created'} JWT Signer: ${formData.name}`);
|
|
41
|
+
this.growlerService.show(growlerData);
|
|
42
|
+
return config;
|
|
43
|
+
}).catch((result) => {
|
|
44
|
+
return false;
|
|
45
|
+
});
|
|
46
|
+
}).catch((resp) => {
|
|
47
|
+
let errorMessage;
|
|
48
|
+
if (resp?.error?.error?.cause?.message) {
|
|
49
|
+
errorMessage = resp?.error?.error?.cause?.message;
|
|
50
|
+
}
|
|
51
|
+
else if (resp?.error?.error?.cause?.reason) {
|
|
52
|
+
errorMessage = resp?.error?.error?.cause?.reason;
|
|
53
|
+
}
|
|
54
|
+
else if (resp?.error?.message) {
|
|
55
|
+
errorMessage = resp?.error?.message;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
errorMessage = 'An unknown error occurred';
|
|
59
|
+
}
|
|
60
|
+
const growlerData = new GrowlerModel('error', 'Error', `Error Creating JWT Signer`, errorMessage);
|
|
61
|
+
this.growlerService.show(growlerData);
|
|
62
|
+
throw resp;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
getJwtSignerDataModel(formData, isUpdate) {
|
|
66
|
+
const saveModel = new JwtSigner();
|
|
67
|
+
const modelProperties = keys(saveModel);
|
|
68
|
+
modelProperties.forEach((prop) => {
|
|
69
|
+
switch (prop) {
|
|
70
|
+
default:
|
|
71
|
+
saveModel[prop] = formData[prop];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return saveModel;
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignerFormService, deps: [{ token: ZITI_DATA_SERVICE }, { token: SHAREDZ_EXTENSION }, { token: i1.GrowlerService }, { token: i2.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
77
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignerFormService, providedIn: 'root' }); }
|
|
78
|
+
}
|
|
79
|
+
export { JwtSignerFormService };
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignerFormService, decorators: [{
|
|
81
|
+
type: Injectable,
|
|
82
|
+
args: [{
|
|
83
|
+
providedIn: 'root'
|
|
84
|
+
}]
|
|
85
|
+
}], ctorParameters: function () { return [{ type: i3.ZitiDataService, decorators: [{
|
|
86
|
+
type: Inject,
|
|
87
|
+
args: [ZITI_DATA_SERVICE]
|
|
88
|
+
}] }, { type: undefined, decorators: [{
|
|
89
|
+
type: Inject,
|
|
90
|
+
args: [SHAREDZ_EXTENSION]
|
|
91
|
+
}] }, { type: i1.GrowlerService }, { type: i2.ValidationService }]; } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXNpZ25lci1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvand0LXNpZ25lci9qd3Qtc2lnbmVyLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDdkYsT0FBTyxFQUEyQixPQUFPLEVBQVMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFFN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUVyRCxNQUdhLG9CQUFvQjtJQU03QixZQUN1QyxXQUE0QixFQUM3QixVQUE0QixFQUN0RCxjQUE4QixFQUM5QixpQkFBb0M7UUFIVCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDdEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFSaEQsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNsQixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUXJCLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUTtRQUNULE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBUSxJQUFJLENBQUMscUJBQXFC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QUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsUUFBUTtRQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsUUFBTyxJQUFJLEVBQUU7Z0JBQ1Q7b0JBQ0ksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzsrR0E1RVEsb0JBQW9CLGtCQU9qQixpQkFBaUIsYUFDakIsaUJBQWlCO21IQVJwQixvQkFBb0IsY0FGakIsTUFBTTs7U0FFVCxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVFRLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtkZWZlciwgaW52ZXJ0LCBpc0Jvb2xlYW4sIGlzRW1wdHksIGlzTmlsLCBrZXlzfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlLCBTSEFSRURaX0VYVEVOU0lPTn0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7VmFsaWRhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7Snd0U2lnbmVyfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2p3dC1zaWduZXJcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKd3RTaWduZXJGb3JtU2VydmljZSB7XG5cbiAgICBpdGVtczogYW55W10gPSBbXTtcbiAgICBlcnJvcnM6IGFueVtdID0gW107XG4gICAgc2F2ZURpc2FibGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJpdmF0ZSBkYXRhU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgc2F2ZShmb3JtRGF0YSkge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRKd3RTaWduZXJEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKTtcbiAgICAgICAgbGV0IHByb207XG4gICAgICAgIGlmIChpc1VwZGF0ZSkge1xuICAgICAgICAgICAgcHJvbSA9IHRoaXMuZGF0YVNlcnZpY2UucHV0KCdleHRlcm5hbC1qd3Qtc2lnbmVycycsIGRhdGEsIGZvcm1EYXRhLmlkLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb20gPSB0aGlzLmRhdGFTZXJ2aWNlLnBvc3QoJ2V4dGVybmFsLWp3dC1zaWduZXJzJywgZGF0YSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvbS50aGVuKGFzeW5jIChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBpc1VwZGF0ZSA/IGZvcm1EYXRhLmlkIDogKHJlc3VsdD8uZGF0YT8uaWQgfHwgcmVzdWx0Py5pZCk7XG4gICAgICAgICAgICBsZXQgY29uZmlnID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5nZXRTdWJkYXRhKCdleHRlcm5hbC1qd3Qtc2lnbmVycycsIGlkLCAnJykudGhlbigoc3ZjRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmNEYXRhLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFTYXZlZChjb25maWcpLnRoZW4oKGZvcm1TYXZlZFJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JtU2F2ZWRSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgYEpXVCBTaWduZXIgJHtpc1VwZGF0ZSA/ICdVcGRhdGVkJyA6ICdDcmVhdGVkJ31gLFxuICAgICAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IEpXVCBTaWduZXI6ICR7Zm9ybURhdGEubmFtZX1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgICAgICAgICAgfSkuY2F0Y2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaCgocmVzcCkgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uO1xuICAgICAgICAgICAgfWVsc2UgaWYgKHJlc3A/LmVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYEVycm9yIENyZWF0aW5nIEpXVCBTaWduZXJgLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgdGhyb3cgcmVzcDtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRKd3RTaWduZXJEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHNhdmVNb2RlbCA9IG5ldyBKd3RTaWduZXIoKTtcbiAgICAgICAgY29uc3QgbW9kZWxQcm9wZXJ0aWVzID0ga2V5cyhzYXZlTW9kZWwpO1xuICAgICAgICBtb2RlbFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzYXZlTW9kZWw7XG4gICAgfVxuXG59XG4iXX0=
|