@openziti/ziti-console-lib 0.4.1 → 0.4.3
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/features/config-editor/config-editor.component.mjs +19 -4
- package/esm2022/lib/features/json-view/json-view.component.mjs +6 -3
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +32 -20
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -1
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +68 -51
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +37 -1
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +2 -1
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -1
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +2 -1
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +273 -0
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +197 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +54 -66
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +49 -1
- package/esm2022/lib/models/service-edge-router-policy.mjs +10 -0
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +9 -15
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +13 -9
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +10 -12
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +19 -15
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +129 -0
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +382 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +10 -12
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +21 -17
- package/esm2022/lib/pages/services/services-page.service.mjs +2 -2
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/lib/ziti-console-lib.module.mjs +9 -3
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +6671 -5623
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/config-editor/config-editor.component.d.ts +4 -0
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
- package/lib/features/json-view/json-view.component.d.ts +1 -0
- package/lib/features/json-view/json-view.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +10 -2
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +9 -8
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +8 -0
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +53 -0
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +38 -0
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +8 -11
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +11 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
- package/lib/models/service-edge-router-policy.d.ts +7 -0
- package/lib/models/service-edge-router-policy.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
- package/lib/pages/configurations/configurations-page.service.d.ts +3 -1
- package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +3 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +35 -0
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -0
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +59 -0
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts +3 -1
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +19 -17
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -1
|
@@ -22,6 +22,10 @@ class EdgeRouterPolicyFormService {
|
|
|
22
22
|
this.associatedEdgeRouterNames = [];
|
|
23
23
|
this.edgeRouterNamedAttributesMap = {};
|
|
24
24
|
this.identityNamedAttributesMap = {};
|
|
25
|
+
this.identityNamedAttributes = [];
|
|
26
|
+
this.edgeRouterNamedAttributes = [];
|
|
27
|
+
this.edgeRouterRoleAttributes = [];
|
|
28
|
+
this.identityRoleAttributes = [];
|
|
25
29
|
}
|
|
26
30
|
save(formData) {
|
|
27
31
|
const isUpdate = !isEmpty(formData.id);
|
|
@@ -130,6 +134,38 @@ class EdgeRouterPolicyFormService {
|
|
|
130
134
|
this.associatedIdentityNames = sortedUniq(this.associatedIdentityNames);
|
|
131
135
|
});
|
|
132
136
|
}
|
|
137
|
+
getEdgeRouterRoleAttributes() {
|
|
138
|
+
return this.zitiService.get('edge-router-role-attributes', {}, []).then((result) => {
|
|
139
|
+
this.edgeRouterRoleAttributes = result.data;
|
|
140
|
+
return result;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
getIdentityNamedAttributes() {
|
|
144
|
+
return this.zitiService.get('identities', {}, []).then((result) => {
|
|
145
|
+
const namedAttributes = result.data.map((identity) => {
|
|
146
|
+
this.identityNamedAttributesMap[identity.name] = identity.id;
|
|
147
|
+
return identity.name;
|
|
148
|
+
});
|
|
149
|
+
this.identityNamedAttributes = namedAttributes;
|
|
150
|
+
return namedAttributes;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
getEdgeRouterNamedAttributes() {
|
|
154
|
+
return this.zitiService.get('edge-routers', {}, []).then((result) => {
|
|
155
|
+
const namedAttributes = result.data.map((router) => {
|
|
156
|
+
this.edgeRouterNamedAttributesMap[router.name] = router.id;
|
|
157
|
+
return router.name;
|
|
158
|
+
});
|
|
159
|
+
this.edgeRouterNamedAttributes = namedAttributes;
|
|
160
|
+
return namedAttributes;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
getIdentityRoleAttributes() {
|
|
164
|
+
return this.zitiService.get('identity-role-attributes', {}, []).then((result) => {
|
|
165
|
+
this.identityRoleAttributes = result.data;
|
|
166
|
+
return result;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
133
169
|
getEdgeRouterPolicyDataModel(formData, isUpdate) {
|
|
134
170
|
const saveModel = new EdgeRouterPolicy();
|
|
135
171
|
const modelProperties = keys(saveModel);
|
|
@@ -174,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
174
210
|
type: Inject,
|
|
175
211
|
args: [EDGE_ROUTER_POLICY_EXTENSION_SERVICE]
|
|
176
212
|
}] }]; } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9lZGdlLXJvdXRlci1wb2xpY3kvZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxjQUFjLENBQU0sc0NBQXNDLENBQUMsQ0FBQztBQUVwSCxNQUdhLDJCQUEyQjtJQVVwQyxZQUNxQyxlQUFnQyxFQUM5QixXQUE0QixFQUN2RCxjQUE4QixFQUNlLFVBQTRCO1FBSGhELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDdkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2UsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFackYseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBQy9CLDRCQUF1QixHQUFRLEVBQUUsQ0FBQztRQUNsQywwQkFBcUIsR0FB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O2tCQUh2QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBWVEsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtpc0VtcHR5LCB1bnNldCwga2V5c30gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7c29ydGVkVW5pcX0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHtFZGdlUm91dGVyUG9saWN5fSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VkZ2Utcm91dGVyLXBvbGljeVwiO1xuXG5leHBvcnQgY29uc3QgRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0VER0VfUk9VVEVSX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRScpO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVkZ2VSb3V0ZXJQb2xpY3lGb3JtU2VydmljZSB7XG5cbiAgICBhc3NvY2lhdGVkSWRlbnRpdGllczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZElkZW50aXR5TmFtZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRFZGdlUm91dGVyczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lczogYW55ID0gW107XG5cbiAgICBlZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcbiAgICBpZGVudGl0eU5hbWVkQXR0cmlidXRlc01hcDogYW55ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZVxuICAgICkge31cblxuICAgIHNhdmUoZm9ybURhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IHN2YyA9IGlzVXBkYXRlID8gdGhpcy56aXRpU2VydmljZS5wYXRjaC5iaW5kKHRoaXMueml0aVNlcnZpY2UpIDogdGhpcy56aXRpU2VydmljZS5wb3N0LmJpbmQodGhpcy56aXRpU2VydmljZSk7XG4gICAgICAgIHJldHVybiBzdmMoJ2VkZ2Utcm91dGVyLXBvbGljaWVzJywgZGF0YSwgZm9ybURhdGEuaWQpLnRoZW4oYXN5bmMgKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3VsdD8uZGF0YT8uaWQgfHwgZm9ybURhdGEuaWQ7XG4gICAgICAgICAgICBsZXQgcm91dGVyID0gYXdhaXQgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdlZGdlLXJvdXRlci1wb2xpY2llcycsIGlkLCAnJykudGhlbigocm91dGVyRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZXJEYXRhLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFTYXZlZChyb3V0ZXIpLnRoZW4oKGZvcm1TYXZlZFJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiByb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlOiB0aGlzLmV4dFNlcnZpY2UuY2xvc2VBZnRlclNhdmVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgIGBFZGdlIFJvdXRlciBQb2xpY3kgJHtpc1VwZGF0ZSA/ICdVcGRhdGVkJyA6ICdDcmVhdGVkJ31gLFxuICAgICAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IEVkZ2UgUm91dGVyIFBvbGljeTogJHtmb3JtRGF0YS5uYW1lfWAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XG4gICAgICAgICAgICB9KS5jYXRjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKChyZXNwKSA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgaWYgKHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb247XG4gICAgICAgICAgICB9ZWxzZSBpZiAocmVzcD8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgQ3JlYXRpbmcgRWRnZSBSb3V0ZXIgUG9saWN5YCxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgIHRocm93IHJlc3A7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzQnlSb2xlKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJ2VkZ2Utcm91dGVycycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVycyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZElkZW50aXRpZXNCeUlkKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJ2lkZW50aXRpZXMnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMubWFwKChpZGVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpZGVudC5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5JZDogXCJyb2xlQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICAgIGZpbHRlck5hbWU6IFwiRWRnZSBSb3V0ZXIgQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiQVRUUklCVVRFXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJvbGVBdHRyaWJ1dGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnZWRnZS1yb3V0ZXJzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJzLm1hcCgoc3ZjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gc29ydGVkVW5pcSh0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkSWRlbnRpdGllc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IFtdO1xuICAgICAgICBpZiAoaXNFbXB0eShyb2xlQXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbHVtbklkOiBcInJvbGVBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgICAgZmlsdGVyTmFtZTogXCJJZGVudGl0eSBBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJBVFRSSUJVVEVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogcm9sZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy56aXRpU2VydmljZS5ERUZBVUxUX1BBR0lORztcbiAgICAgICAgcGFnaW5nLm5vU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0aWVzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcywgLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSkge1xuICAgICAgICBjb25zdCBzYXZlTW9kZWwgPSBuZXcgRWRnZVJvdXRlclBvbGljeSgpO1xuICAgICAgICBjb25zdCBtb2RlbFByb3BlcnRpZXMgPSBrZXlzKHNhdmVNb2RlbCk7XG4gICAgICAgIG1vZGVsUHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNhdmVNb2RlbDtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQVBJIGNhbGwgVVJMIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkUm9sZXMocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVNYXApIHtcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMgPSByb2xlQXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyBhdHRyO1xuICAgICAgICB9KVxuICAgICAgICBjb25zdCBwcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJ0AnICsgbmFtZWRBdHRyaWJ1dGVNYXBbYXR0cl07XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBbLi4ucHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMsIC4uLnByZXBlbmRlZE5hbWVkQXR0cmlidXRlc107XG4gICAgfVxufSJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9lZGdlLXJvdXRlci1wb2xpY3kvZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxjQUFjLENBQU0sc0NBQXNDLENBQUMsQ0FBQztBQUVwSCxNQUdhLDJCQUEyQjtJQWdCcEMsWUFDcUMsZUFBZ0MsRUFDOUIsV0FBNEIsRUFDdkQsY0FBOEIsRUFDZSxVQUE0QjtRQUhoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQ3ZELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNlLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBbEJyRix5QkFBb0IsR0FBUSxFQUFFLENBQUM7UUFDL0IsNEJBQXVCLEdBQVEsRUFBRSxDQUFDO1FBQ2xDLDBCQUFxQixH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QUM7SUFFRCxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQjtRQUMvRCxNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RCxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxRCxPQUFPLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxHQUFHLHVCQUF1QixFQUFFLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQWpOUSwyQkFBMkIsa0JBaUJ4QixnQkFBZ0IsYUFDaEIsaUJBQWlCLDJDQUVqQixvQ0FBb0M7bUhBcEJ2QywyQkFBMkIsY0FGeEIsTUFBTTs7U0FFVCwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWtCUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge2lzRW1wdHksIHVuc2V0LCBrZXlzfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtzb3J0ZWRVbmlxfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge0VkZ2VSb3V0ZXJQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZWRnZS1yb3V0ZXItcG9saWN5XCI7XG5cbmV4cG9ydCBjb25zdCBFREdFX1JPVVRFUl9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWRnZVJvdXRlclBvbGljeUZvcm1TZXJ2aWNlIHtcblxuICAgIGFzc29jaWF0ZWRJZGVudGl0aWVzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkSWRlbnRpdHlOYW1lczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZEVkZ2VSb3V0ZXJzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzOiBhbnkgPSBbXTtcblxuICAgIGVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXA6IGFueSA9IHt9O1xuICAgIGlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcblxuICAgIGlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBlZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcblxuICAgIGVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlczogYW55ID0gW107XG4gICAgaWRlbnRpdHlSb2xlQXR0cmlidXRlczogYW55ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZVxuICAgICkge31cblxuICAgIHNhdmUoZm9ybURhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IHN2YyA9IGlzVXBkYXRlID8gdGhpcy56aXRpU2VydmljZS5wYXRjaC5iaW5kKHRoaXMueml0aVNlcnZpY2UpIDogdGhpcy56aXRpU2VydmljZS5wb3N0LmJpbmQodGhpcy56aXRpU2VydmljZSk7XG4gICAgICAgIHJldHVybiBzdmMoJ2VkZ2Utcm91dGVyLXBvbGljaWVzJywgZGF0YSwgZm9ybURhdGEuaWQpLnRoZW4oYXN5bmMgKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3VsdD8uZGF0YT8uaWQgfHwgZm9ybURhdGEuaWQ7XG4gICAgICAgICAgICBsZXQgcm91dGVyID0gYXdhaXQgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdlZGdlLXJvdXRlci1wb2xpY2llcycsIGlkLCAnJykudGhlbigocm91dGVyRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZXJEYXRhLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFTYXZlZChyb3V0ZXIpLnRoZW4oKGZvcm1TYXZlZFJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiByb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlOiB0aGlzLmV4dFNlcnZpY2UuY2xvc2VBZnRlclNhdmVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgIGBFZGdlIFJvdXRlciBQb2xpY3kgJHtpc1VwZGF0ZSA/ICdVcGRhdGVkJyA6ICdDcmVhdGVkJ31gLFxuICAgICAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IEVkZ2UgUm91dGVyIFBvbGljeTogJHtmb3JtRGF0YS5uYW1lfWAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XG4gICAgICAgICAgICB9KS5jYXRjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKChyZXNwKSA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgaWYgKHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb247XG4gICAgICAgICAgICB9ZWxzZSBpZiAocmVzcD8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgQ3JlYXRpbmcgRWRnZSBSb3V0ZXIgUG9saWN5YCxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgIHRocm93IHJlc3A7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzQnlSb2xlKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJ2VkZ2Utcm91dGVycycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVycyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZElkZW50aXRpZXNCeUlkKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJ2lkZW50aXRpZXMnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMubWFwKChpZGVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpZGVudC5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5JZDogXCJyb2xlQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICAgIGZpbHRlck5hbWU6IFwiRWRnZSBSb3V0ZXIgQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiQVRUUklCVVRFXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJvbGVBdHRyaWJ1dGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnZWRnZS1yb3V0ZXJzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJzLm1hcCgoc3ZjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gc29ydGVkVW5pcSh0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkSWRlbnRpdGllc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IFtdO1xuICAgICAgICBpZiAoaXNFbXB0eShyb2xlQXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbHVtbklkOiBcInJvbGVBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgICAgZmlsdGVyTmFtZTogXCJJZGVudGl0eSBBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJBVFRSSUJVVEVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogcm9sZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy56aXRpU2VydmljZS5ERUZBVUxUX1BBR0lORztcbiAgICAgICAgcGFnaW5nLm5vU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0aWVzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcywgLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2VkZ2Utcm91dGVyLXJvbGUtYXR0cmlidXRlcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2lkZW50aXRpZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZWRBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGEubWFwKChpZGVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXBbaWRlbnRpdHkubmFtZV0gPSBpZGVudGl0eS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRpdHkubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pZGVudGl0eU5hbWVkQXR0cmlidXRlcyA9IG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgICAgIHJldHVybiBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2VkZ2Utcm91dGVycycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKHJvdXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcFtyb3V0ZXIubmFtZV0gPSByb3V0ZXIuaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlci5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRlbnRpdHlSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSkge1xuICAgICAgICBjb25zdCBzYXZlTW9kZWwgPSBuZXcgRWRnZVJvdXRlclBvbGljeSgpO1xuICAgICAgICBjb25zdCBtb2RlbFByb3BlcnRpZXMgPSBrZXlzKHNhdmVNb2RlbCk7XG4gICAgICAgIG1vZGVsUHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNhdmVNb2RlbDtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQVBJIGNhbGwgVVJMIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkUm9sZXMocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVNYXApIHtcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMgPSByb2xlQXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyBhdHRyO1xuICAgICAgICB9KVxuICAgICAgICBjb25zdCBwcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJ0AnICsgbmFtZWRBdHRyaWJ1dGVNYXBbYXR0cl07XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBbLi4ucHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMsIC4uLnByZXBlbmRlZE5hbWVkQXR0cmlidXRlc107XG4gICAgfVxufSJdfQ==
|
|
@@ -225,6 +225,7 @@ class IdentityFormComponent extends ProjectableForm {
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
save(event) {
|
|
228
|
+
this.formData.name = this.formData.name.trim();
|
|
228
229
|
if (!this.validate()) {
|
|
229
230
|
return;
|
|
230
231
|
}
|
|
@@ -351,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
351
352
|
}], close: [{
|
|
352
353
|
type: Output
|
|
353
354
|
}] } });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBSU4sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFFckYsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsMEJBQTBCLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEQsTUFXYSxxQkFBc0IsU0FBUSxlQUFlO0lBOEJ4RCxZQUNxQyxlQUFnQyxFQUMxRCxHQUF3QixFQUN4QixpQkFBd0MsRUFDWCxX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SztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBBZnRlclZpZXdJbml0LFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2plY3RhYmxlRm9ybX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm0uY2xhc3NcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGlzTmlsLCBmb3JPd24sIGNsb25lRGVlcCwgc2V0LCB1bnNldH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSwgSWRlbnRpdHlGb3JtU2VydmljZX0gZnJvbSAnLi9pZGVudGl0eS1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7SWRlbnRpdGllc1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0lkZW50aXR5fSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2lkZW50aXR5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1pZGVudGl0eS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lkZW50aXR5LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pZGVudGl0eS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgIHVzZVZhbHVlOiB7fVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlGb3JtQ29tcG9uZW50IGV4dGVuZHMgUHJvamVjdGFibGVGb3JtIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBmb3JtRGF0YTogYW55ID0ge307XG4gIEBJbnB1dCgpIGlkZW50aXR5Um9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ2lkZW50aXRpZXMnO1xuICBvdmVycmlkZSBlbnRpdHlDbGFzcyA9IElkZW50aXR5O1xuXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBlbnJvbGxtZW50RXhwaXJhdGlvbjogYW55O1xuICBqd3Q6IGFueTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llczogYW55ID0gW107XG4gIGFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZU5hbWVzOiBhbnkgPSBbXTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gIHNlcnZpY2VQb2xpY2llc0xvYWRpbmcgPSBmYWxzZTtcbiAgYXV0aFBvbGljaWVzOiBhbnkgPSBbXTtcblxuICBzaG93TW9yZSA9IGZhbHNlO1xuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBlbnJvbGxtZW50VHlwZSA9ICdvdHQnO1xuICBlbnJvbGxtZW50Q0E7XG4gIGVucm9sbG1lbnRVUERCID0gJyc7XG4gIHNldHRpbmdzOiBhbnkgPSB7fTtcbiAgdGVzdFJlc3VsdDogc3RyaW5nID0gJyc7XG4gIHRlc3RSZXN1bHRPcGVuID0gZmFsc2U7XG5cbiAgY2FzID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHB1YmxpYyBzdmM6IElkZW50aXR5Rm9ybVNlcnZpY2UsXG4gICAgICBwdWJsaWMgaWRlbnRpdGllc1NlcnZpY2U6IElkZW50aXRpZXNQYWdlU2VydmljZSxcbiAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIG92ZXJyaWRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICBASW5qZWN0KElERU5USVRZX0VYVEVOU0lPTl9TRVJWSUNFKSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlKTtcbiAgICB0aGlzLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IHJlc3VsdHM7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5uYW1lRmllbGRJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5yZXNldFRhZ3MoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YS5pZCkge1xuICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLmZvcm1EYXRhLmhhc0FwaVNlc3Npb24gfHwgdGhpcy5mb3JtRGF0YS5oYXNFZGdlUm91dGVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09ubGluZScsIGNsYXNzOiAnb25saW5lJywgY2lyY2xlOiAndHJ1ZSd9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnT2ZmbGluZScsIGNsYXNzOiAnb2ZmbGluZScsIGNpcmNsZTogJ2ZhbHNlJ30pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudD8ub3R0KSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnVW5yZWdpc3RlcmVkJywgY2xhc3M6ICd1bnJlZyd9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuand0ID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRKV1QodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmVucm9sbG1lbnRFeHBpcmF0aW9uID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRFbnJvbGxtZW50RXhwaXJhdGlvbih0aGlzLmZvcm1EYXRhKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RW5yb2xsbWVudFR5cGUoKTtcbiAgICB0aGlzLmdldElkZW50aXR5Um9sZUF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmdldEFzc29jaWF0ZWRTZXJ2aWNlcygpO1xuICAgIHRoaXMuZ2V0QXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llcygpO1xuICAgIHRoaXMuZ2V0QXV0aFBvbGljaWVzKCk7XG4gICAgdGhpcy5nZXRDZXJ0aWZpY2F0ZUF1dGhvcml0aWVzKCk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIHJlZnJlc2hJZGVudGl0eSgpIHtcbiAgICB0aGlzLnN2Yy5yZWZyZXNoSWRlbnRpdHkodGhpcy5mb3JtRGF0YS5pZCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuZW5yb2xsbWVudEV4cGlyYXRpb24gPSB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmdldEVucm9sbG1lbnRFeHBpcmF0aW9uKHRoaXMuZm9ybURhdGEpO1xuICAgICAgdGhpcy5qd3QgPSB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmdldEpXVCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgICB9KVxuICB9XG5cbiAgaW5pdEVucm9sbG1lbnRUeXBlKCkge1xuICAgIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py5vdHQpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAnb3R0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURhdGE/LmVucm9sbG1lbnQ/LnVwZGIpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAndXBkYic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py5vdHRjYSkge1xuICAgICAgdGhpcy5lbnJvbGxtZW50VHlwZSA9ICdDQSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0SWRlbnRpdHlSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgIHRoaXMuZ2V0Um9sZUF0dHJpYnV0ZXMoJ2lkZW50aXR5LXJvbGUtYXR0cmlidXRlcycpLnRoZW4oKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgICB0aGlzLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRBc3NvY2lhdGVkU2VydmljZXMoKSB7XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdpZGVudGl0aWVzJywgdGhpcy5mb3JtRGF0YS5pZCwgJ3NlcnZpY2VzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzID0gcmVzdWx0LmRhdGE7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKSB7XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdpZGVudGl0aWVzJywgdGhpcy5mb3JtRGF0YS5pZCwgJ3NlcnZpY2UtcG9saWNpZXMnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljaWVzID0gcmVzdWx0LmRhdGE7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMubWFwKChwb2xpY3kpID0+IHtcbiAgICAgICAgcmV0dXJuIHBvbGljeS5uYW1lO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDZXJ0aWZpY2F0ZUF1dGhvcml0aWVzKCkge1xuICAgIGNvbnN0IHBhZ2luZyA9IHtcbiAgICAgIGZpbHRlcjogXCJcIixcbiAgICAgIG5vU2VhcmNoOiB0cnVlLFxuICAgICAgb3JkZXI6IFwiYXNjXCIsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoT246IFwibmFtZVwiLFxuICAgICAgc29ydDogXCJuYW1lXCIsXG4gICAgICB0b3RhbDogMTAwXG4gICAgfVxuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdjYXMnLCBwYWdpbmcsIFtdKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jYXMgPSBbLi4ucmVzdWx0LmRhdGFdO1xuICAgICAgaWYgKHRoaXMuY2FzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5lbnJvbGxtZW50Q0EgPSB0aGlzLmNhc1swXS5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEF1dGhQb2xpY2llcygpIHtcbiAgICBjb25zdCBwYWdpbmcgPSB7XG4gICAgICBmaWx0ZXI6IFwiXCIsXG4gICAgICBub1NlYXJjaDogdHJ1ZSxcbiAgICAgIG9yZGVyOiBcImFzY1wiLFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgIHNvcnQ6IFwibmFtZVwiLFxuICAgICAgdG90YWw6IDEwMFxuICAgIH1cbiAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnYXV0aC1wb2xpY2llcycsIHBhZ2luZywgW10pLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmF1dGhQb2xpY2llcyA9IFsuLi5yZXN1bHQuZGF0YV07XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzQXV0aGVudGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzU2VydmljZS5oYXNBdXRoZW50aWNhdG9yKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgZ2V0IGhhc0Vucm9sbWVudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmhhc0Vucm9sbWVudFRva2VuKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgZ2V0IGp3dEV4cGlyZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGVhZGVyQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaChhY3Rpb24ubmFtZSkge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgdGhpcy5jbG9zZUZvcm0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgdGhpcy5yZXNldFRhZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRW5yb2xsbWVudCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZW5yb2xsbWVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ290dCc6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHtvdHQ6IHRydWV9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0EnOlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0Y2E6IHRoaXMuZW5yb2xsbWVudENBfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGRiJzpcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50ID0ge3VwZGI6IHRoaXMuZW5yb2xsbWVudFVQREJ9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHtvdHQ6IHRydWV9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNhdmUoZXZlbnQ/KSB7XG4gICAgaWYoIXRoaXMudmFsaWRhdGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWdWYWxzID0gdGhpcy5nZXRUYWdWYWx1ZXMoKTtcbiAgICBpZiAoIWlzRW1wdHkodGFnVmFscykpIHtcbiAgICAgIGZvck93bih0YWdWYWxzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLnRhZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNNb2RhbCkge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgdGhpcy5fZGF0YUNoYW5nZSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5yb2xsbWVudFR5cGUgPT09ICdDQScgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50Q0EpIHx8IGlzTmlsKHRoaXMuZW5yb2xsbWVudENBKSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydlbnJvbGxtZW50Q0EnXSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50VVBEQikgfHwgaXNOaWwodGhpcy5lbnJvbGxtZW50VVBEQikpKSB7XG4gICAgICB0aGlzLmVycm9yc1snZW5yb2xsbWVudFVQREInXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGdldCBlbnJvbGxtZW50VHlwZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmVucm9sbG1lbnRUeXBlID09PSAnQ0EnID8gJ0NFUlRJRklDQVRFIEFVVEhPUklUWScgOiAodGhpcy5lbnJvbGxtZW50VHlwZSA9PT0gJ3VwZGInICYmICF0aGlzLmlzRWRpdGluZykgPyAnVVBEQiBVU0VSTkFNRScgOiB1bmRlZmluZWQ7XG4gIH1cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL2lkZW50aXRpZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IGFwaURhdGEoKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgIHR5cGU6IHRoaXMuZm9ybURhdGE/LnR5cGU/Lm5hbWUgfHwgdGhpcy5mb3JtRGF0YT8udHlwZSB8fCAnJyxcbiAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICBpc0FkbWluOiB0aGlzLmZvcm1EYXRhPy5pc0FkbWluIHx8ICcnLFxuICAgICAgcm9sZUF0dHJpYnV0ZXM6IHRoaXMuZm9ybURhdGEucm9sZUF0dHJpYnV0ZXMgfHwgJycsXG4gICAgICBhdXRoUG9saWN5SWQ6IHRoaXMuZm9ybURhdGEuYXV0aFBvbGljeUlkIHx8ICcnLFxuICAgICAgZXh0ZXJuYWxJZDogdGhpcy5mb3JtRGF0YS5leHRlcm5hbElkIHx8ICcnLFxuICAgICAgZGVmYXVsdEhvc3RpbmdDb3N0OiB0aGlzLmZvcm1EYXRhLmRlZmF1bHRIb3N0aW5nQ29zdCB8fCAnMCcsXG4gICAgICBkZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2U6IHRoaXMuZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlIHx8ICdkZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2UnLFxuICAgICAgdGFnczogdGhpcy5mb3JtRGF0YS50YWdzIHx8ICcnXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuaXNFZGl0aW5nKSB7XG4gICAgICBkYXRhLmVucm9sbG1lbnQgPSB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgfHwge290dDogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgX2FwaURhdGEgPSB7fTtcbiAgc2V0IGFwaURhdGEoZGF0YSkge1xuICAgIHRoaXMuX2FwaURhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2VydmljZVNlbGVjdGVkKHNlcnZpY2VOYW1lKSB7XG4gICAgbGV0IHNlcnZpY2U6IGFueSA9IHt9O1xuICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzLmZvckVhY2goKHN2YykgPT4ge1xuICAgICAgaWYoc3ZjLm5hbWUgPT09IHNlcnZpY2VOYW1lKSB7XG4gICAgICAgIHNlcnZpY2UgPSBzdmM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdmMudGVzdFNlcnZpY2UodGhpcy5mb3JtRGF0YS5pZCwgc2VydmljZS5pZCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnRlc3RSZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUlzQWRtaW4oKSB7XG4gICAgdGhpcy5mb3JtRGF0YS5pc0FkbWluID0gIXRoaXMuZm9ybURhdGEuaXNBZG1pbjtcbiAgfVxuXG4gIGdldCBpZGVudGl0eVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0aW5nID8gdGhpcy5mb3JtRGF0YS50eXBlLm5hbWUgOiB0aGlzLmZvcm1EYXRhLnR5cGU7XG4gIH1cblxuICBzZXQgaWRlbnRpdHlUeXBlKHR5cGUpIHtcbiAgICBpZiAodGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZS5uYW1lJywgdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZScsIHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlVGVzdFJlc3VsdCgpIHtcbiAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gZmFsc2U7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBJZGVudGl0eTogJyA6ICdDcmVhdGUgTmV3IElkZW50aXR5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpZGVudGl0eS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ0lkZW50aXR5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBlcnJvcnNbJ25hbWUnXX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVGaWVsZElucHV0XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3Qgb3IgY3JlYXRlIElkZW50aXR5IGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDk5OTk5OTk5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F0dHJpYnV0ZXMgYXJlIHRhZ3MgYXBwbGllZCB0byBhbiByZXNvdXJjZS4gQXBwbHkgdGhlIHNhbWUgdGFnIHRvIG90aGVyIElkZW50aXRpZXMgdG8gZm9ybSBhIGdyb3VwIG9mIElkZW50aXRpZXMuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwiZm9ybURhdGEucm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJpZGVudGl0eVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FkZCBhdHRyaWJ1dGVzIHRvIGdyb3VwIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0F1dGggUG9saWN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F1dGhlbnRpY2F0aW9uIFBvbGljaWVzIHJlc3RyaWN0IHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGF2YWlsYWJsZSB0byBpZGVudGl0aWVzLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuYXV0aFBvbGljeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImF1dGhQb2xpY3lJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhbiBBdXRoZW50aWNhdGlvbiBQb2xpY3k8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9saWN5IG9mIGF1dGhQb2xpY2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcG9saWN5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWwgRXh0ZXJuYWwgSURcIiBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmV4dGVybmFsSWRcIi8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRW5yb2xsbWVudCBUeXBlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGUyXT1cImVucm9sbG1lbnRUeXBlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJFbnJvbGxtZW50VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGlzRWRpdGluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsbWVudFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3R0XCI+T25lIFRpbWUgVG9rZW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ0FcIj5DZXJ0aWZpY2F0ZSBBdXRob3JpdHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidXBkYlwiPlVQREI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiQ2VydEF1dGhvcml0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsbWVudFR5cGUgPT09ICdDQSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogaXNFZGl0aW5nfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxtZW50Q0FcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogZXJyb3JzLmVucm9sbG1lbnRDQX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjYSBvZiBjYXNcIiBbdmFsdWVdPVwiY2EuaWRcIj57e2NhLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgIWlzRWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBpc0VkaXRpbmcsIGVycm9yOiBlcnJvcnMuZW5yb2xsbWVudFVQREJ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbG1lbnRVUERCXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiVVBEQk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FkbWluJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkIGlzLWFkbWluLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyIHRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXItbGFiZWxcIj5JUyBBRE1JTjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUlzQWRtaW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvbjogZm9ybURhdGEuaXNBZG1pbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLmlzQWRtaW5cIiBjbGFzcz1cIm9uLWxhYmVsXCI+WUVTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5pc0FkbWluXCIgY2xhc3M9XCJvZmYtbGFiZWxcIj5OTzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0hvc3RpbmcgQ29zdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1ByZWNlZGVuY2UnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5kZWZhdWx0SG9zdGluZ0Nvc3RcIiB0eXBlPVwibnVtYmVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCI+RGVmYXVsdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZXF1aXJlZFwiPlJlcXVpcmVkPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImZhaWxlZFwiPkZhaWxlZDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWdFbGVtZW50IG9mIHRhZ0VsZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGFnRWxlbWVudC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJ0YWdFbGVtZW50LmNvbnRlbnQgfCBzYWZlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jdXN0b20tdGFncyBbKHRhZ3MpXT1cImZvcm1EYXRhLnRhZ3NcIj48L2xpYi1jdXN0b20tdGFncz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FwcCBEYXRhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3IFsoZGF0YSldPVwiZm9ybURhdGEuYXBwRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0d28tZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNFbnJvbG1lbnRUb2tlbiB8fCBoYXNBdXRoZW50aWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcXItY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkZW50aXR5XT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtqd3RdPVwiand0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtleHBpcmF0aW9uXT1cImVucm9sbG1lbnRFeHBpcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRoZW50aWNhdG9yc109XCJmb3JtRGF0YS5hdXRoZW50aWNhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInaWRlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5FeHBhbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZG9SZWZyZXNoKT1cInJlZnJlc2hJZGVudGl0eSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXFyLWNvZGU+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIHNlcnZpY2VzIHRoYXQgdGhpcyBJZGVudGl0eSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZXJ2aWNlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJzZXJ2aWNlc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXRlc3QtcmVzdWx0XCIgW25nQ2xhc3NdPVwieyd0ZXN0LXJlc3VsdC1vcGVuJzogdGVzdFJlc3VsdE9wZW59XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZVRlc3RSZXN1bHQoKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jb250YWluZXJcIiBbaW5uZXJIVE1MXT1cInRlc3RSZXN1bHRcIiA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIFNlcnZpY2UgUG9saWNpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoaXMgSWRlbnRpdHkgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VydmljZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInNlcnZpY2VQb2xpY2llc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIiByZWFkb25seS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXJsLWNvcHkgaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJhcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBSU4sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFFckYsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsMEJBQTBCLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEQsTUFXYSxxQkFBc0IsU0FBUSxlQUFlO0lBOEJ4RCxZQUNxQyxlQUFnQyxFQUMxRCxHQUF3QixFQUN4QixpQkFBd0MsRUFDWCxX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RXhCLE1BQU07MkJBQUMsMEJBQTBCOzhGQW5DN0IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBBZnRlclZpZXdJbml0LFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2plY3RhYmxlRm9ybX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm0uY2xhc3NcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGlzTmlsLCBmb3JPd24sIGNsb25lRGVlcCwgc2V0LCB1bnNldH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSwgSWRlbnRpdHlGb3JtU2VydmljZX0gZnJvbSAnLi9pZGVudGl0eS1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7SWRlbnRpdGllc1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0lkZW50aXR5fSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2lkZW50aXR5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1pZGVudGl0eS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lkZW50aXR5LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pZGVudGl0eS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgIHVzZVZhbHVlOiB7fVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlGb3JtQ29tcG9uZW50IGV4dGVuZHMgUHJvamVjdGFibGVGb3JtIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBmb3JtRGF0YTogYW55ID0ge307XG4gIEBJbnB1dCgpIGlkZW50aXR5Um9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ2lkZW50aXRpZXMnO1xuICBvdmVycmlkZSBlbnRpdHlDbGFzcyA9IElkZW50aXR5O1xuXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBlbnJvbGxtZW50RXhwaXJhdGlvbjogYW55O1xuICBqd3Q6IGFueTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llczogYW55ID0gW107XG4gIGFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZU5hbWVzOiBhbnkgPSBbXTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gIHNlcnZpY2VQb2xpY2llc0xvYWRpbmcgPSBmYWxzZTtcbiAgYXV0aFBvbGljaWVzOiBhbnkgPSBbXTtcblxuICBzaG93TW9yZSA9IGZhbHNlO1xuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBlbnJvbGxtZW50VHlwZSA9ICdvdHQnO1xuICBlbnJvbGxtZW50Q0E7XG4gIGVucm9sbG1lbnRVUERCID0gJyc7XG4gIHNldHRpbmdzOiBhbnkgPSB7fTtcbiAgdGVzdFJlc3VsdDogc3RyaW5nID0gJyc7XG4gIHRlc3RSZXN1bHRPcGVuID0gZmFsc2U7XG5cbiAgY2FzID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHB1YmxpYyBzdmM6IElkZW50aXR5Rm9ybVNlcnZpY2UsXG4gICAgICBwdWJsaWMgaWRlbnRpdGllc1NlcnZpY2U6IElkZW50aXRpZXNQYWdlU2VydmljZSxcbiAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIG92ZXJyaWRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICBASW5qZWN0KElERU5USVRZX0VYVEVOU0lPTl9TRVJWSUNFKSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlKTtcbiAgICB0aGlzLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IHJlc3VsdHM7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5uYW1lRmllbGRJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5yZXNldFRhZ3MoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YS5pZCkge1xuICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLmZvcm1EYXRhLmhhc0FwaVNlc3Npb24gfHwgdGhpcy5mb3JtRGF0YS5oYXNFZGdlUm91dGVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09ubGluZScsIGNsYXNzOiAnb25saW5lJywgY2lyY2xlOiAndHJ1ZSd9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnT2ZmbGluZScsIGNsYXNzOiAnb2ZmbGluZScsIGNpcmNsZTogJ2ZhbHNlJ30pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudD8ub3R0KSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnVW5yZWdpc3RlcmVkJywgY2xhc3M6ICd1bnJlZyd9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuand0ID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRKV1QodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmVucm9sbG1lbnRFeHBpcmF0aW9uID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRFbnJvbGxtZW50RXhwaXJhdGlvbih0aGlzLmZvcm1EYXRhKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RW5yb2xsbWVudFR5cGUoKTtcbiAgICB0aGlzLmdldElkZW50aXR5Um9sZUF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmdldEFzc29jaWF0ZWRTZXJ2aWNlcygpO1xuICAgIHRoaXMuZ2V0QXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llcygpO1xuICAgIHRoaXMuZ2V0QXV0aFBvbGljaWVzKCk7XG4gICAgdGhpcy5nZXRDZXJ0aWZpY2F0ZUF1dGhvcml0aWVzKCk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIHJlZnJlc2hJZGVudGl0eSgpIHtcbiAgICB0aGlzLnN2Yy5yZWZyZXNoSWRlbnRpdHkodGhpcy5mb3JtRGF0YS5pZCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuZW5yb2xsbWVudEV4cGlyYXRpb24gPSB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmdldEVucm9sbG1lbnRFeHBpcmF0aW9uKHRoaXMuZm9ybURhdGEpO1xuICAgICAgdGhpcy5qd3QgPSB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmdldEpXVCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgICB9KVxuICB9XG5cbiAgaW5pdEVucm9sbG1lbnRUeXBlKCkge1xuICAgIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py5vdHQpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAnb3R0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURhdGE/LmVucm9sbG1lbnQ/LnVwZGIpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAndXBkYic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py5vdHRjYSkge1xuICAgICAgdGhpcy5lbnJvbGxtZW50VHlwZSA9ICdDQSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0SWRlbnRpdHlSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgIHRoaXMuZ2V0Um9sZUF0dHJpYnV0ZXMoJ2lkZW50aXR5LXJvbGUtYXR0cmlidXRlcycpLnRoZW4oKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgICB0aGlzLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRBc3NvY2lhdGVkU2VydmljZXMoKSB7XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdpZGVudGl0aWVzJywgdGhpcy5mb3JtRGF0YS5pZCwgJ3NlcnZpY2VzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzID0gcmVzdWx0LmRhdGE7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKSB7XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdpZGVudGl0aWVzJywgdGhpcy5mb3JtRGF0YS5pZCwgJ3NlcnZpY2UtcG9saWNpZXMnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljaWVzID0gcmVzdWx0LmRhdGE7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMubWFwKChwb2xpY3kpID0+IHtcbiAgICAgICAgcmV0dXJuIHBvbGljeS5uYW1lO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDZXJ0aWZpY2F0ZUF1dGhvcml0aWVzKCkge1xuICAgIGNvbnN0IHBhZ2luZyA9IHtcbiAgICAgIGZpbHRlcjogXCJcIixcbiAgICAgIG5vU2VhcmNoOiB0cnVlLFxuICAgICAgb3JkZXI6IFwiYXNjXCIsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoT246IFwibmFtZVwiLFxuICAgICAgc29ydDogXCJuYW1lXCIsXG4gICAgICB0b3RhbDogMTAwXG4gICAgfVxuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdjYXMnLCBwYWdpbmcsIFtdKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jYXMgPSBbLi4ucmVzdWx0LmRhdGFdO1xuICAgICAgaWYgKHRoaXMuY2FzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5lbnJvbGxtZW50Q0EgPSB0aGlzLmNhc1swXS5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEF1dGhQb2xpY2llcygpIHtcbiAgICBjb25zdCBwYWdpbmcgPSB7XG4gICAgICBmaWx0ZXI6IFwiXCIsXG4gICAgICBub1NlYXJjaDogdHJ1ZSxcbiAgICAgIG9yZGVyOiBcImFzY1wiLFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgIHNvcnQ6IFwibmFtZVwiLFxuICAgICAgdG90YWw6IDEwMFxuICAgIH1cbiAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnYXV0aC1wb2xpY2llcycsIHBhZ2luZywgW10pLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmF1dGhQb2xpY2llcyA9IFsuLi5yZXN1bHQuZGF0YV07XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzQXV0aGVudGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzU2VydmljZS5oYXNBdXRoZW50aWNhdG9yKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgZ2V0IGhhc0Vucm9sbWVudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXRpZXNTZXJ2aWNlLmhhc0Vucm9sbWVudFRva2VuKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgZ2V0IGp3dEV4cGlyZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGVhZGVyQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaChhY3Rpb24ubmFtZSkge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgdGhpcy5jbG9zZUZvcm0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgdGhpcy5yZXNldFRhZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRW5yb2xsbWVudCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZW5yb2xsbWVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ290dCc6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHtvdHQ6IHRydWV9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0EnOlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0Y2E6IHRoaXMuZW5yb2xsbWVudENBfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGRiJzpcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50ID0ge3VwZGI6IHRoaXMuZW5yb2xsbWVudFVQREJ9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHtvdHQ6IHRydWV9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNhdmUoZXZlbnQ/KSB7XG4gICAgdGhpcy5mb3JtRGF0YS5uYW1lID0gdGhpcy5mb3JtRGF0YS5uYW1lLnRyaW0oKTtcbiAgICBpZighdGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhZ1ZhbHMgPSB0aGlzLmdldFRhZ1ZhbHVlcygpO1xuICAgIGlmICghaXNFbXB0eSh0YWdWYWxzKSkge1xuICAgICAgZm9yT3duKHRhZ1ZhbHMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEudGFnc1trZXldID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3ZjLnNhdmUodGhpcy5mb3JtRGF0YSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICBpZiAodGhpcy5pc01vZGFsKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0cnVlLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICB0aGlzLl9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEubmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWyduYW1lJ10gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbnJvbGxtZW50VHlwZSA9PT0gJ0NBJyAmJiAoaXNFbXB0eSh0aGlzLmVucm9sbG1lbnRDQSkgfHwgaXNOaWwodGhpcy5lbnJvbGxtZW50Q0EpKSkge1xuICAgICAgdGhpcy5lcnJvcnNbJ2Vucm9sbG1lbnRDQSddID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5yb2xsbWVudFR5cGUgPT09ICd1cGRiJyAmJiAoaXNFbXB0eSh0aGlzLmVucm9sbG1lbnRVUERCKSB8fCBpc05pbCh0aGlzLmVucm9sbG1lbnRVUERCKSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydlbnJvbGxtZW50VVBEQiddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgZ2V0IGVucm9sbG1lbnRUeXBlVGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5yb2xsbWVudFR5cGUgPT09ICdDQScgPyAnQ0VSVElGSUNBVEUgQVVUSE9SSVRZJyA6ICh0aGlzLmVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgIXRoaXMuaXNFZGl0aW5nKSA/ICdVUERCIFVTRVJOQU1FJyA6IHVuZGVmaW5lZDtcbiAgfVxuICBnZXQgYXBpQ2FsbFVSTCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyICsgJy9lZGdlL21hbmFnZW1lbnQvdjEvaWRlbnRpdGllcycgKyAodGhpcy5mb3JtRGF0YS5pZCA/IGAvJHt0aGlzLmZvcm1EYXRhLmlkfWAgOiAnJyk7XG4gIH1cblxuICBnZXQgYXBpRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICBuYW1lOiB0aGlzLmZvcm1EYXRhPy5uYW1lIHx8ICcnLFxuICAgICAgdHlwZTogdGhpcy5mb3JtRGF0YT8udHlwZT8ubmFtZSB8fCB0aGlzLmZvcm1EYXRhPy50eXBlIHx8ICcnLFxuICAgICAgYXBwRGF0YTogdGhpcy5mb3JtRGF0YT8uYXBwRGF0YSB8fCAnJyxcbiAgICAgIGlzQWRtaW46IHRoaXMuZm9ybURhdGE/LmlzQWRtaW4gfHwgJycsXG4gICAgICByb2xlQXR0cmlidXRlczogdGhpcy5mb3JtRGF0YS5yb2xlQXR0cmlidXRlcyB8fCAnJyxcbiAgICAgIGF1dGhQb2xpY3lJZDogdGhpcy5mb3JtRGF0YS5hdXRoUG9saWN5SWQgfHwgJycsXG4gICAgICBleHRlcm5hbElkOiB0aGlzLmZvcm1EYXRhLmV4dGVybmFsSWQgfHwgJycsXG4gICAgICBkZWZhdWx0SG9zdGluZ0Nvc3Q6IHRoaXMuZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdDb3N0IHx8ICcwJyxcbiAgICAgIGRlZmF1bHRIb3N0aW5nUHJlY2VkZW5jZTogdGhpcy5mb3JtRGF0YS5kZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2UgfHwgJ2RlZmF1bHRIb3N0aW5nUHJlY2VkZW5jZScsXG4gICAgICB0YWdzOiB0aGlzLmZvcm1EYXRhLnRhZ3MgfHwgJydcbiAgICB9O1xuICAgIGlmICghdGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgIGRhdGEuZW5yb2xsbWVudCA9IHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCB8fCB7b3R0OiB0cnVlfTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBfYXBpRGF0YSA9IHt9O1xuICBzZXQgYXBpRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gIH1cblxuICBzZXJ2aWNlU2VsZWN0ZWQoc2VydmljZU5hbWUpIHtcbiAgICBsZXQgc2VydmljZTogYW55ID0ge307XG4gICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZXMuZm9yRWFjaCgoc3ZjKSA9PiB7XG4gICAgICBpZihzdmMubmFtZSA9PT0gc2VydmljZU5hbWUpIHtcbiAgICAgICAgc2VydmljZSA9IHN2YztcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN2Yy50ZXN0U2VydmljZSh0aGlzLmZvcm1EYXRhLmlkLCBzZXJ2aWNlLmlkKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIHRoaXMudGVzdFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgIHRoaXMudGVzdFJlc3VsdE9wZW4gPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlSXNBZG1pbigpIHtcbiAgICB0aGlzLmZvcm1EYXRhLmlzQWRtaW4gPSAhdGhpcy5mb3JtRGF0YS5pc0FkbWluO1xuICB9XG5cbiAgZ2V0IGlkZW50aXR5VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VkaXRpbmcgPyB0aGlzLmZvcm1EYXRhLnR5cGUubmFtZSA6IHRoaXMuZm9ybURhdGEudHlwZTtcbiAgfVxuXG4gIHNldCBpZGVudGl0eVR5cGUodHlwZSkge1xuICAgIGlmICh0aGlzLmlzRWRpdGluZykge1xuICAgICAgc2V0KHRoaXMuZm9ybURhdGEsICd0eXBlLm5hbWUnLCB0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0KHRoaXMuZm9ybURhdGEsICd0eXBlJywgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VUZXN0UmVzdWx0KCkge1xuICAgIHRoaXMudGVzdFJlc3VsdE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS13cmFwcGVyXCJcbiAgICAgKGtleXVwLmVudGVyKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgIChrZXl1cC5lc2NhcGUpPVwiY2xvc2VNb2RhbChmYWxzZSlcIlxuPlxuICAgIDxsaWItZm9ybS1oZWFkZXJcbiAgICAgICAgICAgIFtkYXRhXT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmb3JtRGF0YS5pZCA/ICdFZGl0IElkZW50aXR5OiAnIDogJ0NyZWF0ZSBOZXcgSWRlbnRpdHknXCJcbiAgICAgICAgICAgIFttb3JlQWN0aW9uc109XCJtb3JlQWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uUmVxdWVzdGVkKT1cImhlYWRlckFjdGlvblJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFsoZm9ybVZpZXcpXT1cImZvcm1WaWV3XCJcbiAgICA+PC9saWItZm9ybS1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImlkZW50aXR5LWZvcm0tY29udGFpbmVyIHByb2plY3RhYmxlLWZvcm0tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9qZWN0YWJsZS1mb3JtLW1haW4tY29sdW1uIGZvcm0tZ3JvdXAtcm93XCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3NpbXBsZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0aHJlZS1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyIFt0aXRsZV09XCInSWRlbnRpdHkgTmFtZSdcIiBbbGFiZWxdPVwiJ1JFUVVJUkVEJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBpZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZXJyb3I6IGVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBvciBjcmVhdGUgSWRlbnRpdHkgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRTdHlsZV09XCInei1pbmRleDogOTk5OTk5OTknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQXR0cmlidXRlcyBhcmUgdGFncyBhcHBsaWVkIHRvIGFuIHJlc291cmNlLiBBcHBseSB0aGUgc2FtZSB0YWcgdG8gb3RoZXIgSWRlbnRpdGllcyB0byBmb3JtIGEgZ3JvdXAgb2YgSWRlbnRpdGllcy4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJmb3JtRGF0YS5yb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZVJvbGVBdHRyaWJ1dGVzXT1cImlkZW50aXR5Um9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWRkIGF0dHJpYnV0ZXMgdG8gZ3JvdXAgSWRlbnRpdGllcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXV0aCBQb2xpY3knXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQXV0aGVudGljYXRpb24gUG9saWNpZXMgcmVzdHJpY3QgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgYXZhaWxhYmxlIHRvIGlkZW50aXRpZXMuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5hdXRoUG9saWN5SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYXV0aFBvbGljeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGFuIEF1dGhlbnRpY2F0aW9uIFBvbGljeTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwb2xpY3kgb2YgYXV0aFBvbGljaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9saWN5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwb2xpY3kubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJPcHRpb25hbCBFeHRlcm5hbCBJRFwiIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZXh0ZXJuYWxJZFwiLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtdG9nZ2xlIFsodG9nZ2xlT24pXT1cInNob3dNb3JlXCIgKHRvZ2dsZU9uQ2hhbmdlKT1cInNob3dNb3JlQ2hhbmdlZCgkZXZlbnQpXCIgc3R5bGU9XCJtYXJnaW46IDBweCAxMHB4XCI+PC9saWItZm9ybS1maWVsZC10b2dnbGU+XG4gICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cIiFzaG93TW9yZVwiIGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidFbnJvbGxtZW50IFR5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiZW5yb2xsbWVudFR5cGVUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIkVucm9sbG1lbnRUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogaXNFZGl0aW5nfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxtZW50VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVFbnJvbGxtZW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJvdHRcIj5PbmUgVGltZSBUb2tlbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJDQVwiPkNlcnRpZmljYXRlIEF1dGhvcml0eTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ1cGRiXCI+VVBEQjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJDZXJ0QXV0aG9yaXRpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbnJvbGxtZW50VHlwZSA9PT0gJ0NBJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBpc0VkaXRpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbG1lbnRDQVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBlcnJvcnMuZW5yb2xsbWVudENBfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVFbnJvbGxtZW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNhIG9mIGNhc1wiIFt2YWx1ZV09XCJjYS5pZFwiPnt7Y2EubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsbWVudFR5cGUgPT09ICd1cGRiJyAmJiAhaXNFZGl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGlzRWRpdGluZywgZXJyb3I6IGVycm9ycy5lbnJvbGxtZW50VVBEQn1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsbWVudFVQREJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJ1cGRhdGVFbnJvbGxtZW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJVUERCTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWRtaW4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWQgaXMtYWRtaW4tY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXIgdG9nZ2xlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWNvbnRhaW5lci1sYWJlbFwiPklTIEFETUlOPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXNBZG1pbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9uOiBmb3JtRGF0YS5pc0FkbWluIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhZm9ybURhdGEuaXNBZG1pblwiIGNsYXNzPVwib24tbGFiZWxcIj5ZRVM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cImZvcm1EYXRhLmlzQWRtaW5cIiBjbGFzcz1cIm9mZi1sYWJlbFwiPk5PPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInSG9zdGluZyBDb3N0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlMl09XCInUHJlY2VkZW5jZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRdPVwiJ3JvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmRlZmF1bHRIb3N0aW5nQ29zdFwiIHR5cGU9XCJudW1iZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5kZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaG9zdGluZ1ByZWNlZGVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRlZmF1bHRcIj5EZWZhdWx0PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJlcXVpcmVkXCI+UmVxdWlyZWQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFpbGVkXCI+RmFpbGVkPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZ0VsZW1lbnQgb2YgdGFnRWxlbWVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0YWdFbGVtZW50LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInRhZ0VsZW1lbnQuY29udGVudCB8IHNhZmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXBwIERhdGEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgWyhkYXRhKV09XCJmb3JtRGF0YS5hcHBEYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0Vucm9sbWVudFRva2VuIHx8IGhhc0F1dGhlbnRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1xci1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRlbnRpdHldPVwiZm9ybURhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2p3dF09XCJqd3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4cGlyYXRpb25dPVwiZW5yb2xsbWVudEV4cGlyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dGhlbnRpY2F0b3JzXT1cImZvcm1EYXRhLmF1dGhlbnRpY2F0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidpZGVudGl0eSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkV4cGFuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb1JlZnJlc2gpPVwicmVmcmVzaElkZW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcXItY29kZT5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1EYXRhLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXNzb2NpYXRlZCBTZXJ2aWNlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cImFzc29jaWF0ZWRTZXJ2aWNlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidoaWRlLW92ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZXMgdGhhdCB0aGlzIElkZW50aXR5IGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKT1cInNlcnZpY2VTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInNlcnZpY2VzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwiYXNzb2NpYXRlZFNlcnZpY2VOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtdGVzdC1yZXN1bHRcIiBbbmdDbGFzc109XCJ7J3Rlc3QtcmVzdWx0LW9wZW4nOiB0ZXN0UmVzdWx0T3Blbn1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVGVzdFJlc3VsdCgpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNvbnRhaW5lclwiIFtpbm5lckhUTUxdPVwidGVzdFJlc3VsdFwiID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZSBQb2xpY2llcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cImFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBzZXJ2aWNlIHBvbGljaWVzIHRoYXQgdGhpcyBJZGVudGl0eSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZXJ2aWNlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwic2VydmljZVBvbGljaWVzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwiYXNzb2NpYXRlZFNlcnZpY2VQb2xpY3lOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIiBbdmFsdWVdPVwiYXBpQ2FsbFVSTFwiIHJlYWRvbmx5Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cmwtY29weSBpY29uLWNvcHkgY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoYXBpQ2FsbFVSTClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImFwaURhdGFcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIFtzaG93Q29weV09XCJ0cnVlXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIiAqbmdJZj1cImZvcm1WaWV3ID09PSAncmF3J1wiPlxuICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiZm9ybURhdGFcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=
|
|
@@ -168,6 +168,7 @@ class ServiceFormComponent extends ProjectableForm {
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
async save(event) {
|
|
171
|
+
this.formData.name = this.formData.name.trim();
|
|
171
172
|
const isValid = this.svc.validate();
|
|
172
173
|
const isExtValid = await this.extService.validateData();
|
|
173
174
|
const isEdit = !isEmpty(this.formData.id);
|
|
@@ -191,6 +192,7 @@ class ServiceFormComponent extends ProjectableForm {
|
|
|
191
192
|
}
|
|
192
193
|
if (serviceId) {
|
|
193
194
|
this.closeModal(true, true);
|
|
195
|
+
this.returnToListPage();
|
|
194
196
|
}
|
|
195
197
|
}
|
|
196
198
|
toggleEncryptionRequired() {
|
|
@@ -251,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
251
253
|
type: ViewChild,
|
|
252
254
|
args: ["configEditor", { read: ConfigEditorComponent }]
|
|
253
255
|
}] } });
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9zZXJ2aWNlL3NlcnZpY2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS9zZXJ2aWNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFHVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRixPQUFPLEVBQUMsT0FBTyxFQUFrQixLQUFLLEVBQWUsU0FBUyxFQUF3QixNQUFNLFFBQVEsQ0FBQztBQUNyRyxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBQyx5QkFBeUIsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHaEQsTUFXYSxvQkFB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Q29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBJbmplY3QsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Byb2plY3RhYmxlRm9ybX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm0uY2xhc3NcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGZvckVhY2gsIGRlbGF5LCB1bnNldCwga2V5cywgZGVmZXIsIGNsb25lRGVlcCwgaXNFcXVhbCwgc29tZSwgZmlsdGVyfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge1NFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UsIFNlcnZpY2VGb3JtU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlLWZvcm0uc2VydmljZSc7XG5pbXBvcnQge01hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtDb25maWdFZGl0b3JDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZXJ2aWNlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgIHVzZVZhbHVlOiB7fVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZXQgZm9ybURhdGEoZGF0YSkge1xuICAgIGlmICghZGF0YT8uY29uZmlncykge1xuICAgICAgZGF0YS5jb25maWdzID0gW107XG4gICAgfVxuICAgIHRoaXMuc3ZjLmZvcm1EYXRhID0gZGF0YTtcbiAgfVxuXG4gIGdldCBmb3JtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnN2Yy5mb3JtRGF0YTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNlcnZpY2VSb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBlbnJvbGxtZW50RXhwaXJhdGlvbjogYW55O1xuICBqd3Q6IGFueTtcbiAgdG9rZW46IGFueTtcbiAgc3RyYXRlZ2llcyA9IFtcbiAgICB7aWQ6ICdzbWFydHJvdXRpbmcnLCBsYWJlbDogJ1NtYXJ0IFJvdXRpbmcnfSxcbiAgICB7aWQ6ICd3ZWlnaHRlZCcsIGxhYmVsOiAnV2VpZ2h0ZWQnfSxcbiAgICB7aWQ6ICdyYW5kb20nLCBsYWJlbDogJ1JhbmRvbSd9LFxuICAgIHtpZDogJ2hhJywgbGFiZWw6ICdIaWdoIEF2YWlsYWJpbGl0eSd9LFxuICBdO1xuICBiaW5kaW5nVHlwZXMgPSBbXG4gICAge2lkOiAndWRwJywgbmFtZTogJ1VEUCd9LFxuICAgIHtpZDogJ3RyYW5zcG9ydCcsIG5hbWU6ICdUcmFuc3BvcnQnfSxcbiAgICB7aWQ6ICdlZGdlJywgbmFtZTogJ0VkZ2UnfSxcbiAgXTtcbiAgcHJvdG9jb2xzID0gW1xuICAgIHtpZDogJ3VkcCcsIG5hbWU6ICdVRFAnfSxcbiAgICB7aWQ6ICd0Y3AnLCBuYW1lOiAnVENQJ31cbiAgXTtcblxuICBzaG93TW9yZSA9IGZhbHNlO1xuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBmb3JtRGF0YUludmFsaWQgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIG92ZXJyaWRlIGVudGl0eVR5cGUgPSAnc2VydmljZXMnO1xuICBvdmVycmlkZSBlbnRpdHlDbGFzcyA9IFNlcnZpY2U7XG5cbiAgQFZpZXdDaGlsZChcImNvbmZpZ0VkaXRvclwiLCB7cmVhZDogQ29uZmlnRWRpdG9yQ29tcG9uZW50fSkgY29uZmlnRWRpdG9yITogQ29uZmlnRWRpdG9yQ29tcG9uZW50O1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgcHVibGljIHN2YzogU2VydmljZUZvcm1TZXJ2aWNlLFxuICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgb3ZlcnJpZGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgIEBJbmplY3QoU0VSVklDRV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSk7XG4gICAgdGhpcy5mb3JtRGF0YSA9IHt9O1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHJlc3VsdHM6YW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICB0aGlzLmdldFNlcnZpY2VSb2xlQXR0cmlidXRlcygpO1xuICAgIHRoaXMuc3ZjLnJlc2V0Rm9ybURhdGEoKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkQ29uZmlncygpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRUZXJtaW5hdG9ycygpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKTtcbiAgICB0aGlzLnN2Yy5lcnJvcnMgPSB7fTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldFNlcnZpY2VSb2xlQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdzZXJ2aWNlLXJvbGUtYXR0cmlidXRlcycpLnRoZW4oKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgIHRoaXMuc2VydmljZVJvbGVBdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5jbG9zZWQuZW1pdCh7fSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLm5hbWVGaWVsZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLnJlc2V0VGFncygpO1xuICAgIHRoaXMuc3ZjLmNvbmZpZ0VkaXRvciA9IHRoaXMuY29uZmlnRWRpdG9yO1xuICAgIHRoaXMuc3ZjLmdldENvbmZpZ1R5cGVzKCk7XG4gICAgdGhpcy5zdmMuZ2V0Q29uZmlncygpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zdmMudXBkYXRlZEFkZGVkQ29uZmlncygpO1xuICAgIH0pO1xuICAgIHRoaXMuc3ZjLmdldFJvdXRlcnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgY29uZmlnQ2hhbmdlZCgkZXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ2FkZC1uZXcnKSB7XG4gICAgICB0aGlzLnN2Yy5uZXdDb25maWdOYW1lID0gJyc7XG4gICAgfVxuICAgIHRoaXMuc3ZjLmNvbmZpZ0NoYW5nZWQoKTtcbiAgfVxuXG4gIGNvbmZpZ1R5cGVDaGFuZ2VkKCRldmVudCkge1xuICAgIHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPSAnJztcbiAgICB0aGlzLnN2Yy5uZXdDb25maWdOYW1lID0gJyc7XG4gICAgdGhpcy5zdmMuY29uZmlnVHlwZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCBzaG93Q29uZmlnRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ2FkZC1uZXcnIHx8IHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPT09ICdwcmV2aWV3JztcbiAgfVxuXG4gIGF0dGFjaENvbmZpZygpIHtcbiAgICB0aGlzLmNvbmZpZ0VkaXRvci5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICB0aGlzLnN2Yy5hdHRhY2hDb25maWcodGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCk7XG4gIH1cblxuICBjYXB0dXJlQ29uZmlnRW50ZXJFdmVudChldmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuY29uZmlnRWRpdG9yLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgIHRoaXMuc3ZjLmF0dGFjaENvbmZpZyh0aGlzLnN2Yy5zZWxlY3RlZENvbmZpZ0lkKTtcbiAgfVxuXG4gIGhlYWRlckFjdGlvblJlcXVlc3RlZChhY3Rpb24pIHtcbiAgICBzd2l0Y2goYWN0aW9uLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKGAvc2VydmljZXNgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudD8pIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5zdmMudmFsaWRhdGUoKTtcbiAgICBjb25zdCBpc0V4dFZhbGlkID0gYXdhaXQgdGhpcy5leHRTZXJ2aWNlLnZhbGlkYXRlRGF0YSgpO1xuICAgIGNvbnN0IGlzRWRpdCA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICAgIGlmKCFpc1ZhbGlkIHx8ICFpc0V4dFZhbGlkKSB7XG4gICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgIGBEYXRhIEludmFsaWRgLFxuICAgICAgICAgIGBTZXJ2aWNlIGRhdGEgaXMgaW52YWxpZC4gUGxlYXNlIHVwZGF0ZSBhbmQgdHJ5IGFnYWluLmAsXG4gICAgICApO1xuICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3Qgc2VydmljZUlkID0gYXdhaXQgdGhpcy5zdmMuc2F2ZSh0aGlzLmZvcm1EYXRhKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGlmICghaXNFbXB0eShyZXN1bHQ/LmlkKSkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhID0gcmVzdWx0O1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ/LmlkO1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBpZiAoc2VydmljZUlkICYmICFpc0VkaXQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc3ZjLmFkZFRlcm1pbmF0b3JzKHNlcnZpY2VJZClcbiAgICB9XG4gICAgaWYgKHNlcnZpY2VJZCkge1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKHRydWUsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUVuY3J5cHRpb25SZXF1aXJlZCgpIHtcbiAgICB0aGlzLmZvcm1EYXRhLmVuY3J5cHRpb25SZXF1aXJlZCA9ICF0aGlzLmZvcm1EYXRhLmVuY3J5cHRpb25SZXF1aXJlZDtcbiAgfVxuXG4gIGdldCBhcGlDYWxsVVJMKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgKyAnL2VkZ2UvbWFuYWdlbWVudC92MS9zZXJ2aWNlcycgKyAodGhpcy5mb3JtRGF0YS5pZCA/IGAvJHt0aGlzLmZvcm1EYXRhLmlkfWAgOiAnJyk7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvblRvb2x0aXAoKSB7XG4gICAgaWYgKHRoaXMuZm9ybURhdGFJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gJ1NlcnZpY2UgZGF0YSBpcyBpbnZhbGlkLiBQbGVhc2UgdXBkYXRlIGFuZCB0cnkgYWdhaW4uJ1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0NvbXBsZXRlIGFuZCBhdHRhY2ggY29uZmlnIGRlZmluaXRpb24sIG9yIHJlbW92ZSBiZWZvcmUgc2F2aW5nJztcbiAgICB9XG4gIH1cblxuICByZXNldEZvcm0oKSB7XG4gICAgdGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCA9ICcnO1xuICAgIHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnVHlwZUlkID0gJyc7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICB0aGlzLnN2Yy5jb25maWdFcnJvcnMgPSB7fTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS13cmFwcGVyXCJcbiAgICAgKGtleXVwLmVudGVyKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgIChrZXl1cC5lc2NhcGUpPVwicmV0dXJuVG9MaXN0UGFnZSgpXCJcbiAgICAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgIFtkYXRhXT1cImZvcm1EYXRhXCJcbiAgICAgICAgW3RpdGxlXT1cIihmb3JtRGF0YS5pZCA/ICdFZGl0IFNlcnZpY2UnIDogJ0NyZWF0ZSBTZXJ2aWNlJylcIlxuICAgICAgICBbbW9yZUFjdGlvbnNdPVwiZm9ybURhdGEubW9yZUFjdGlvbnNcIlxuICAgICAgICAoYWN0aW9uUmVxdWVzdGVkKT1cImhlYWRlckFjdGlvblJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgWyhmb3JtVmlldyldPVwiZm9ybVZpZXdcIlxuICAgICAgICBbc2F2ZURpc2FibGVkXT1cInN2Yy5zYXZlRGlzYWJsZWQgfHwgZm9ybURhdGFJbnZhbGlkXCJcbiAgICAgICAgW3NhdmVUb29sdGlwXT1cInNhdmVCdXR0b25Ub29sdGlwXCJcbiAgICA+PC9saWItZm9ybS1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImVkZ2Utcm91dGVyLWZvcm0tY29udGFpbmVyIHByb2plY3RhYmxlLWZvcm0tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9qZWN0YWJsZS1mb3JtLW1haW4tY29sdW1uIGZvcm0tZ3JvdXAtcm93XCIgW2hpZGRlbl09XCJmb3JtVmlldyAhPT0gJ3NpbXBsZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0aHJlZS1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyIFt0aXRsZV09XCInU2VydmljZSBOYW1lJ1wiIFtsYWJlbF09XCInUmVxdWlyZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSB0aGlzIFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBzdmMuZXJyb3JzWyduYW1lJ119XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICNuYW1lRmllbGRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IG9yIGNyZWF0ZSBTZXJ2aWNlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT3B0aW9uYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDk5OTk5OTk5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F0dHJpYnV0ZXMgYXJlIHRhZ3MgYXBwbGllZCB0byBhIHJlc291cmNlLiBBcHBseSB0aGUgc2FtZSB0YWcgdG8gb3RoZXIgU2VydmljZXMgdG8gZm9ybSBhIGdyb3VwIG9mIFNlcnZpY2VzLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi10YWctc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXT1cImZvcm1EYXRhLnJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic2VydmljZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FkZCBhdHRyaWJ1dGVzIHRvIGdyb3VwIFNlcnZpY2VzJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi10YWctc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBZGQgQ29uZmlndXJhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwiYXR0YWNoQ29uZmlnKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNhcHR1cmVDb25maWdFbnRlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidDb25maWd1cmF0aW9ucyBhcmUgdXNlZCB0byBkZWZpbmUgaG93IHRvIGludGVyY2VwdCBhbmQgaG9zdCBhIHNlcnZpY2UuIFppdGkgTmV0d29ya3MgY29tZSB3aXRoIGJ1aWx0LWluIGNvbmZpZ3VyYXRpb24gdHlwZXMgKGllLiBpbnRlcmNlcHQudjEgYW5kIGhvc3QudjEpJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZmllbGQtdGl0bGVcIj5TZWxlY3QgYSBDb25maWc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdmMuc2VsZWN0ZWRDb25maWdUeXBlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpZ1R5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIlNlbGVjdGVkQ29uZmlnVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBjb25maWd1cmF0aW9uIHR5cGUuLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdHlwZSBvZiBzdmMuY29uZmlnVHlwZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInR5cGUuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHlwZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdmMuc2VsZWN0ZWRDb25maWdJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY29uZmlnQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJTZWxlY3RlZENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiAhc3ZjLnNlbGVjdGVkQ29uZmlnVHlwZUlkIHx8IHN2Yy5zZWxlY3RlZENvbmZpZ1R5cGVJZCA9PT0gJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGNvbmZpZ3VyYXRpb24uLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWRkLW5ld1wiPkFkZCBhIE5ldyAgQ29uZmlnPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInByZXZpZXdcIiAqbmdJZj1cInN2Yy5zZWxlY3RlZENvbmZpZ0lkID09PSAncHJldmlldydcIj5WaWV3IENvbmZpZyBEYXRhPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBzdmMuZmlsdGVyZWRDb25maWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb25maWcuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93Q29uZmlnRGF0YSAmJiBzdmMuc2VsZWN0ZWRDb25maWdJZCAmJiBzdmMuc2VsZWN0ZWRDb25maWdJZCAhPT0gJycgJiYgc3ZjLnNlbGVjdGVkQ29uZmlnSWQgIT09ICdwcmV2aWV3J1wiIGNsYXNzPVwiYnV0dG9uLXJvdy1yaWdodFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1idXR0b25cIiAoY2xpY2spPVwic3ZjLmF0dGFjaENvbmZpZyhzdmMuc2VsZWN0ZWRDb25maWdJZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdmMuYXR0YWNoTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiIXNob3dDb25maWdEYXRhXCIgY2xhc3M9XCJmb3JtLWZpZWxkLWV4dGVuZGVkLWZpZWxkc1wiIFtuZ0NsYXNzXT1cInsnY2ZnLXByZXZpZXcnOiBzdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ3ByZXZpZXcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29uZmlnRGF0YVwiIGNsYXNzPVwiY29uZmlnLXRpdGxlLXJvd1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMTBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWZpZWxkLXRpdGxlXCI+Q29uZmlnIE5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXR0YWNoQ29uZmlnKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3ZjLnNlbGVjdGVkQ29uZmlnSWQgIT09ICdwcmV2aWV3J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e3N2Yy5hdHRhY2hMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q29uZmlnRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN2Yy5uZXdDb25maWdOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ05ldyBDb25maWcgTmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBzdmMuY29uZmlnRXJyb3JzWyduYW1lJ119XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy10aXRsZS1yb3dcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1maWVsZC10aXRsZVwiPkNvbmZpZ3VyYXRpb24gRGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyLXRvZ2dsZS1jb250YWluZXJcIiAqbmdJZj1cInN2Yy5zZWxlY3RlZENvbmZpZ0lkICE9PSAncHJldmlldydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLW9wdGlvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0b2dnbGUtb3B0aW9uLXNlbGVjdGVkJzogIXN2Yy5jb25maWdKc29uVmlld31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3ZjLnRvZ2dsZUpTT05WaWV3KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUk1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlci10b2dnbGVcIiAoY2xpY2spPVwic3ZjLnRvZ2dsZUpTT05WaWV3KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdG9nZ2xlLXN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RvZ2dsZS1sZWZ0JzogIXN2Yy5jb25maWdKc29uVmlldywgJ3RvZ2dsZS1yaWdodCc6IHN2Yy5jb25maWdKc29uVmlld31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdG9nZ2xlLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10b2dnbGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLW9wdGlvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0b2dnbGUtb3B0aW9uLXNlbGVjdGVkJzogc3ZjLmNvbmZpZ0pzb25WaWV3fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdmMudG9nZ2xlSlNPTlZpZXcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNvbmZpZy1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhjb25maWdEYXRhKV09XCJzdmMuY29uZmlnRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwic3ZjLnNlbGVjdGVkU2NoZW1hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dKc29uVmlld109XCJzdmMuY29uZmlnSnNvblZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNvbmZpZ0Vycm9ycyldPVwic3ZjLmNvbmZpZ0Vycm9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjb25maWdFZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItY29uZmlnLWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtdG9nZ2xlIFsodG9nZ2xlT24pXT1cInNob3dNb3JlXCIgc3R5bGU9XCJtYXJnaW46IDBweCAxMHB4XCI+PC9saWItZm9ybS1maWVsZC10b2dnbGU+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dNb3JlXCIgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1Rlcm1pbmF0b3IgU3RyYXRlZ3knXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ0VuY3J5cHRpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRdPVwiJ3JvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQaWNrIGEgc3RyYXRlZ3kgdG8gZGV0ZXJtaW5lIGhvdyB0byByYW5rIGF2YWlsYWJsZSB0ZXJtaW5hdG9ycyBmb3IgYSBzZXJ2aWNlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHQyXT1cIidFbmNyeXB0cyBwYWNrZXRzIHdoZW4gZW50ZXJpbmcgb3IgbGVhdmluZyB0aGUgbmV0d29yay4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS50ZXJtaW5hdG9yU3RyYXRlZ3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImF1dGhQb2xpY3lJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIFN0cmF0ZWd5Li4uLjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdHJhdCBvZiBzdHJhdGVnaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdHJhdC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdHJhdC5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWNvbnRhaW5lciB0b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyLWxhYmVsXCI+UmVxdWlyZSBFbmNyeXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRW5jcnlwdGlvblJlcXVpcmVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb246IGZvcm1EYXRhLmVuY3J5cHRpb25SZXF1aXJlZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLmVuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwib24tbGFiZWxcIj5ZRVM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cImZvcm1EYXRhLmVuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwib2ZmLWxhYmVsXCI+Tk88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXBwIERhdGEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1qc29uLXZpZXc+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0ZWQgQ29uZmlndXJhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hZGRlZENvbmZpZ05hbWVzID8gc3ZjLmFkZGVkQ29uZmlnTmFtZXMubGVuZ3RoIDogMFwiXG4gICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhpcyBzZXJ2aWNlIGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFkZGVkQ29uZmlnTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93UmVtb3ZlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidWaWV3IENvbmZpZyBEYXRhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVJlbW92ZWQpPVwic3ZjLnJlbW92ZUNvbmZpZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic3ZjLnByZXZpZXdDb25maWcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZSBQb2xpY2llcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoaXMgc2VydmljZSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VQb2xpY3lOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2FwaS1jYWxsLWNvbnRhaW5lcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IG9mIHRoZSBBUEkgVVJMIGFuZCBkYXRhIG1vZGVsIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoaXMgc2VydmljZSdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIiByZWFkb25seS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXJsLWNvcHkgaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJzdmMuYXBpRGF0YVwiIFtyZWFkT25seV09XCJ0cnVlXCIgW3Nob3dDb3B5XT1cInRydWVcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtblwiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdyYXcnXCI+XG4gICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJmb3JtRGF0YVwiIFsoanNvbkludmFsaWQpXT1cImZvcm1EYXRhSW52YWxpZFwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxsaWItbG9hZGluZy1pbmRpY2F0b3IgKm5nSWY9XCJpc0xvYWRpbmdcIiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvbGliLWxvYWRpbmctaW5kaWNhdG9yPiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9zZXJ2aWNlL3NlcnZpY2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS9zZXJ2aWNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFHVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRixPQUFPLEVBQUMsT0FBTyxFQUFrQixLQUFLLEVBQWUsU0FBUyxFQUF3QixNQUFNLFFBQVEsQ0FBQztBQUNyRyxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBQyx5QkFBeUIsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHaEQsTUFXYSxvQkFB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cUI7c0JBQTdCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQThCbUQsWUFBWTtzQkFBckUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBJbmplY3QsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Byb2plY3RhYmxlRm9ybX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm0uY2xhc3NcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGZvckVhY2gsIGRlbGF5LCB1bnNldCwga2V5cywgZGVmZXIsIGNsb25lRGVlcCwgaXNFcXVhbCwgc29tZSwgZmlsdGVyfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge1NFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UsIFNlcnZpY2VGb3JtU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlLWZvcm0uc2VydmljZSc7XG5pbXBvcnQge01hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtDb25maWdFZGl0b3JDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZXJ2aWNlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgIHVzZVZhbHVlOiB7fVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZXQgZm9ybURhdGEoZGF0YSkge1xuICAgIGlmICghZGF0YT8uY29uZmlncykge1xuICAgICAgZGF0YS5jb25maWdzID0gW107XG4gICAgfVxuICAgIHRoaXMuc3ZjLmZvcm1EYXRhID0gZGF0YTtcbiAgfVxuXG4gIGdldCBmb3JtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnN2Yy5mb3JtRGF0YTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNlcnZpY2VSb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBlbnJvbGxtZW50RXhwaXJhdGlvbjogYW55O1xuICBqd3Q6IGFueTtcbiAgdG9rZW46IGFueTtcbiAgc3RyYXRlZ2llcyA9IFtcbiAgICB7aWQ6ICdzbWFydHJvdXRpbmcnLCBsYWJlbDogJ1NtYXJ0IFJvdXRpbmcnfSxcbiAgICB7aWQ6ICd3ZWlnaHRlZCcsIGxhYmVsOiAnV2VpZ2h0ZWQnfSxcbiAgICB7aWQ6ICdyYW5kb20nLCBsYWJlbDogJ1JhbmRvbSd9LFxuICAgIHtpZDogJ2hhJywgbGFiZWw6ICdIaWdoIEF2YWlsYWJpbGl0eSd9LFxuICBdO1xuICBiaW5kaW5nVHlwZXMgPSBbXG4gICAge2lkOiAndWRwJywgbmFtZTogJ1VEUCd9LFxuICAgIHtpZDogJ3RyYW5zcG9ydCcsIG5hbWU6ICdUcmFuc3BvcnQnfSxcbiAgICB7aWQ6ICdlZGdlJywgbmFtZTogJ0VkZ2UnfSxcbiAgXTtcbiAgcHJvdG9jb2xzID0gW1xuICAgIHtpZDogJ3VkcCcsIG5hbWU6ICdVRFAnfSxcbiAgICB7aWQ6ICd0Y3AnLCBuYW1lOiAnVENQJ31cbiAgXTtcblxuICBzaG93TW9yZSA9IGZhbHNlO1xuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBmb3JtRGF0YUludmFsaWQgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIG92ZXJyaWRlIGVudGl0eVR5cGUgPSAnc2VydmljZXMnO1xuICBvdmVycmlkZSBlbnRpdHlDbGFzcyA9IFNlcnZpY2U7XG5cbiAgQFZpZXdDaGlsZChcImNvbmZpZ0VkaXRvclwiLCB7cmVhZDogQ29uZmlnRWRpdG9yQ29tcG9uZW50fSkgY29uZmlnRWRpdG9yITogQ29uZmlnRWRpdG9yQ29tcG9uZW50O1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgcHVibGljIHN2YzogU2VydmljZUZvcm1TZXJ2aWNlLFxuICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgb3ZlcnJpZGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgIEBJbmplY3QoU0VSVklDRV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSk7XG4gICAgdGhpcy5mb3JtRGF0YSA9IHt9O1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHJlc3VsdHM6YW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICB0aGlzLmdldFNlcnZpY2VSb2xlQXR0cmlidXRlcygpO1xuICAgIHRoaXMuc3ZjLnJlc2V0Rm9ybURhdGEoKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkQ29uZmlncygpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRUZXJtaW5hdG9ycygpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKTtcbiAgICB0aGlzLnN2Yy5lcnJvcnMgPSB7fTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldFNlcnZpY2VSb2xlQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdzZXJ2aWNlLXJvbGUtYXR0cmlidXRlcycpLnRoZW4oKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgIHRoaXMuc2VydmljZVJvbGVBdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5jbG9zZWQuZW1pdCh7fSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLm5hbWVGaWVsZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLnJlc2V0VGFncygpO1xuICAgIHRoaXMuc3ZjLmNvbmZpZ0VkaXRvciA9IHRoaXMuY29uZmlnRWRpdG9yO1xuICAgIHRoaXMuc3ZjLmdldENvbmZpZ1R5cGVzKCk7XG4gICAgdGhpcy5zdmMuZ2V0Q29uZmlncygpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zdmMudXBkYXRlZEFkZGVkQ29uZmlncygpO1xuICAgIH0pO1xuICAgIHRoaXMuc3ZjLmdldFJvdXRlcnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgY29uZmlnQ2hhbmdlZCgkZXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ2FkZC1uZXcnKSB7XG4gICAgICB0aGlzLnN2Yy5uZXdDb25maWdOYW1lID0gJyc7XG4gICAgfVxuICAgIHRoaXMuc3ZjLmNvbmZpZ0NoYW5nZWQoKTtcbiAgfVxuXG4gIGNvbmZpZ1R5cGVDaGFuZ2VkKCRldmVudCkge1xuICAgIHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPSAnJztcbiAgICB0aGlzLnN2Yy5uZXdDb25maWdOYW1lID0gJyc7XG4gICAgdGhpcy5zdmMuY29uZmlnVHlwZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCBzaG93Q29uZmlnRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ2FkZC1uZXcnIHx8IHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPT09ICdwcmV2aWV3JztcbiAgfVxuXG4gIGF0dGFjaENvbmZpZygpIHtcbiAgICB0aGlzLmNvbmZpZ0VkaXRvci5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICB0aGlzLnN2Yy5hdHRhY2hDb25maWcodGhpcy5zdmMuc2VsZWN0ZWRDb25maWdJZCk7XG4gIH1cblxuICBjYXB0dXJlQ29uZmlnRW50ZXJFdmVudChldmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuY29uZmlnRWRpdG9yLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgIHRoaXMuc3ZjLmF0dGFjaENvbmZpZyh0aGlzLnN2Yy5zZWxlY3RlZENvbmZpZ0lkKTtcbiAgfVxuXG4gIGhlYWRlckFjdGlvblJlcXVlc3RlZChhY3Rpb24pIHtcbiAgICBzd2l0Y2goYWN0aW9uLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKGAvc2VydmljZXNgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudD8pIHtcbiAgICB0aGlzLmZvcm1EYXRhLm5hbWUgPSB0aGlzLmZvcm1EYXRhLm5hbWUudHJpbSgpO1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnN2Yy52YWxpZGF0ZSgpO1xuICAgIGNvbnN0IGlzRXh0VmFsaWQgPSBhd2FpdCB0aGlzLmV4dFNlcnZpY2UudmFsaWRhdGVEYXRhKCk7XG4gICAgY29uc3QgaXNFZGl0ID0gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgaWYoIWlzVmFsaWQgfHwgIWlzRXh0VmFsaWQpIHtcbiAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgYERhdGEgSW52YWxpZGAsXG4gICAgICAgICAgYFNlcnZpY2UgZGF0YSBpcyBpbnZhbGlkLiBQbGVhc2UgdXBkYXRlIGFuZCB0cnkgYWdhaW4uYCxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBzZXJ2aWNlSWQgPSBhd2FpdCB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKCFpc0VtcHR5KHJlc3VsdD8uaWQpKSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdD8uaWQ7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIGlmIChzZXJ2aWNlSWQgJiYgIWlzRWRpdCkge1xuICAgICAgYXdhaXQgdGhpcy5zdmMuYWRkVGVybWluYXRvcnMoc2VydmljZUlkKVxuICAgIH1cbiAgICBpZiAoc2VydmljZUlkKSB7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFbmNyeXB0aW9uUmVxdWlyZWQoKSB7XG4gICAgdGhpcy5mb3JtRGF0YS5lbmNyeXB0aW9uUmVxdWlyZWQgPSAhdGhpcy5mb3JtRGF0YS5lbmNyeXB0aW9uUmVxdWlyZWQ7XG4gIH1cblxuICBnZXQgYXBpQ2FsbFVSTCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyICsgJy9lZGdlL21hbmFnZW1lbnQvdjEvc2VydmljZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IHNhdmVCdXR0b25Ub29sdGlwKCkge1xuICAgIGlmICh0aGlzLmZvcm1EYXRhSW52YWxpZCkge1xuICAgICAgcmV0dXJuICdTZXJ2aWNlIGRhdGEgaXMgaW52YWxpZC4gUGxlYXNlIHVwZGF0ZSBhbmQgdHJ5IGFnYWluLidcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdDb21wbGV0ZSBhbmQgYXR0YWNoIGNvbmZpZyBkZWZpbml0aW9uLCBvciByZW1vdmUgYmVmb3JlIHNhdmluZyc7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMuc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPSAnJztcbiAgICB0aGlzLnN2Yy5zZWxlY3RlZENvbmZpZ1R5cGVJZCA9ICcnO1xuICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgdGhpcy5zdmMuY29uZmlnRXJyb3JzID0ge307XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cInJldHVyblRvTGlzdFBhZ2UoKVwiXG4gICAgIHRhYmluZGV4PVwiMFwiXG4+XG4gICAgPGxpYi1mb3JtLWhlYWRlclxuICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgIFt0aXRsZV09XCIoZm9ybURhdGEuaWQgPyAnRWRpdCBTZXJ2aWNlJyA6ICdDcmVhdGUgU2VydmljZScpXCJcbiAgICAgICAgW21vcmVBY3Rpb25zXT1cImZvcm1EYXRhLm1vcmVBY3Rpb25zXCJcbiAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFsoZm9ybVZpZXcpXT1cImZvcm1WaWV3XCJcbiAgICAgICAgW3NhdmVEaXNhYmxlZF09XCJzdmMuc2F2ZURpc2FibGVkIHx8IGZvcm1EYXRhSW52YWxpZFwiXG4gICAgICAgIFtzYXZlVG9vbHRpcF09XCJzYXZlQnV0dG9uVG9vbHRpcFwiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJlZGdlLXJvdXRlci1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiIFtoaWRkZW5dPVwiZm9ybVZpZXcgIT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ1NlcnZpY2UgTmFtZSdcIiBbbGFiZWxdPVwiJ1JlcXVpcmVkJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogc3ZjLmVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBvciBjcmVhdGUgU2VydmljZSBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09wdGlvbmFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiA5OTk5OTk5OSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidBdHRyaWJ1dGVzIGFyZSB0YWdzIGFwcGxpZWQgdG8gYSByZXNvdXJjZS4gQXBwbHkgdGhlIHNhbWUgdGFnIHRvIG90aGVyIFNlcnZpY2VzIHRvIGZvcm0gYSBncm91cCBvZiBTZXJ2aWNlcy4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJmb3JtRGF0YS5yb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZVJvbGVBdHRyaWJ1dGVzXT1cInNlcnZpY2VSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZGQgYXR0cmlidXRlcyB0byBncm91cCBTZXJ2aWNlcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQWRkIENvbmZpZ3VyYXRpb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uUmVxdWVzdGVkKT1cImF0dGFjaENvbmZpZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjYXB0dXJlQ29uZmlnRW50ZXJFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQ29uZmlndXJhdGlvbnMgYXJlIHVzZWQgdG8gZGVmaW5lIGhvdyB0byBpbnRlcmNlcHQgYW5kIGhvc3QgYSBzZXJ2aWNlLiBaaXRpIE5ldHdvcmtzIGNvbWUgd2l0aCBidWlsdC1pbiBjb25maWd1cmF0aW9uIHR5cGVzIChpZS4gaW50ZXJjZXB0LnYxIGFuZCBob3N0LnYxKSdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctdGl0bGUtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWZpZWxkLXRpdGxlXCI+U2VsZWN0IGEgQ29uZmlnPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3ZjLnNlbGVjdGVkQ29uZmlnVHlwZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjb25maWdUeXBlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJTZWxlY3RlZENvbmZpZ1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgY29uZmlndXJhdGlvbiB0eXBlLi4uPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2Ygc3ZjLmNvbmZpZ1R5cGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0eXBlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHR5cGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3ZjLnNlbGVjdGVkQ29uZmlnSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpZ0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiU2VsZWN0ZWRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogIXN2Yy5zZWxlY3RlZENvbmZpZ1R5cGVJZCB8fCBzdmMuc2VsZWN0ZWRDb25maWdUeXBlSWQgPT09ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBjb25maWd1cmF0aW9uLi4uPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFkZC1uZXdcIj5BZGQgYSBOZXcgIENvbmZpZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJwcmV2aWV3XCIgKm5nSWY9XCJzdmMuc2VsZWN0ZWRDb25maWdJZCA9PT0gJ3ByZXZpZXcnXCI+VmlldyBDb25maWcgRGF0YTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb25maWcgb2Ygc3ZjLmZpbHRlcmVkQ29uZmlnc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29uZmlnLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd0NvbmZpZ0RhdGEgJiYgc3ZjLnNlbGVjdGVkQ29uZmlnSWQgJiYgc3ZjLnNlbGVjdGVkQ29uZmlnSWQgIT09ICcnICYmIHN2Yy5zZWxlY3RlZENvbmZpZ0lkICE9PSAncHJldmlldydcIiBjbGFzcz1cImJ1dHRvbi1yb3ctcmlnaHRcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cInN2Yy5hdHRhY2hDb25maWcoc3ZjLnNlbGVjdGVkQ29uZmlnSWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3ZjLmF0dGFjaExhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cIiFzaG93Q29uZmlnRGF0YVwiIGNsYXNzPVwiZm9ybS1maWVsZC1leHRlbmRlZC1maWVsZHNcIiBbbmdDbGFzc109XCJ7J2NmZy1wcmV2aWV3Jzogc3ZjLnNlbGVjdGVkQ29uZmlnSWQgPT09ICdwcmV2aWV3J31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NvbmZpZ0RhdGFcIiBjbGFzcz1cImNvbmZpZy10aXRsZS1yb3dcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1maWVsZC10aXRsZVwiPkNvbmZpZyBOYW1lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImF0dGFjaENvbmZpZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN2Yy5zZWxlY3RlZENvbmZpZ0lkICE9PSAncHJldmlldydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3tzdmMuYXR0YWNoTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NvbmZpZ0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdmMubmV3Q29uZmlnTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidOZXcgQ29uZmlnIE5hbWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogc3ZjLmNvbmZpZ0Vycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIwcHg7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctdGl0bGUtcm93XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZmllbGQtdGl0bGVcIj5Db25maWd1cmF0aW9uIERhdGE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlci10b2dnbGUtY29udGFpbmVyXCIgKm5nSWY9XCJzdmMuc2VsZWN0ZWRDb25maWdJZCAhPT0gJ3ByZXZpZXcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1vcHRpb24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndG9nZ2xlLW9wdGlvbi1zZWxlY3RlZCc6ICFzdmMuY29uZmlnSnNvblZpZXd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN2Yy50b2dnbGVKU09OVmlldygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXItdG9nZ2xlXCIgKGNsaWNrKT1cInN2Yy50b2dnbGVKU09OVmlldygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRvZ2dsZS1zd2l0Y2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0b2dnbGUtbGVmdCc6ICFzdmMuY29uZmlnSnNvblZpZXcsICd0b2dnbGUtcmlnaHQnOiBzdmMuY29uZmlnSnNvblZpZXd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRvZ2dsZS1pbmRpY2F0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdG9nZ2xlLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1vcHRpb24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndG9nZ2xlLW9wdGlvbi1zZWxlY3RlZCc6IHN2Yy5jb25maWdKc29uVmlld31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3ZjLnRvZ2dsZUpTT05WaWV3KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT05cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jb25maWctZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoY29uZmlnRGF0YSldPVwic3ZjLmNvbmZpZ0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cInN2Yy5zZWxlY3RlZFNjaGVtYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SnNvblZpZXddPVwic3ZjLmNvbmZpZ0pzb25WaWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhjb25maWdFcnJvcnMpXT1cInN2Yy5jb25maWdFcnJvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjY29uZmlnRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLWNvbmZpZy1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TW9yZVwiIGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidUZXJtaW5hdG9yIFN0cmF0ZWd5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGUyXT1cIidFbmNyeXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUGljayBhIHN0cmF0ZWd5IHRvIGRldGVybWluZSBob3cgdG8gcmFuayBhdmFpbGFibGUgdGVybWluYXRvcnMgZm9yIGEgc2VydmljZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0Ml09XCInRW5jcnlwdHMgcGFja2V0cyB3aGVuIGVudGVyaW5nIG9yIGxlYXZpbmcgdGhlIG5ldHdvcmsuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEudGVybWluYXRvclN0cmF0ZWd5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdXRoUG9saWN5SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgYSBTdHJhdGVneS4uLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyYXQgb2Ygc3RyYXRlZ2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3RyYXQuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RyYXQubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXIgdG9nZ2xlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWNvbnRhaW5lci1sYWJlbFwiPlJlcXVpcmUgRW5jcnlwdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVuY3J5cHRpb25SZXF1aXJlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9uOiBmb3JtRGF0YS5lbmNyeXB0aW9uUmVxdWlyZWQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cIiFmb3JtRGF0YS5lbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cIm9uLWxhYmVsXCI+WUVTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5lbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cIm9mZi1sYWJlbFwiPk5PPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ3VzdG9tIFRhZ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jdXN0b20tdGFncyBbKHRhZ3MpXT1cImZvcm1EYXRhLnRhZ3NcIj48L2xpYi1jdXN0b20tdGFncz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FwcCBEYXRhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3PjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0d28tZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdGVkIENvbmZpZ3VyYXRpb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYWRkZWRDb25maWdOYW1lcyA/IHN2Yy5hZGRlZENvbmZpZ05hbWVzLmxlbmd0aCA6IDBcIlxuICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZSBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgc2VydmljZSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cInN2Yy5hZGRlZENvbmZpZ05hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbGxvd1JlbW92ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInVmlldyBDb25maWcgRGF0YSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1SZW1vdmVkKT1cInN2Yy5yZW1vdmVDb25maWcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKT1cInN2Yy5wcmV2aWV3Q29uZmlnKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIFNlcnZpY2UgUG9saWNpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIHNlcnZpY2UgcG9saWNpZXMgdGhhdCB0aGlzIHNlcnZpY2UgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidhcGktY2FsbC1jb250YWluZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBvZiB0aGUgQVBJIFVSTCBhbmQgZGF0YSBtb2RlbCB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGlzIHNlcnZpY2UnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiIFt2YWx1ZV09XCJhcGlDYWxsVVJMXCIgcmVhZG9ubHkvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVybC1jb3B5IGljb24tY29weSBjb3B5XCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZChhcGlDYWxsVVJMKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwic3ZjLmFwaURhdGFcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIFtzaG93Q29weV09XCJ0cnVlXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIiAqbmdJZj1cImZvcm1WaWV3ID09PSAncmF3J1wiPlxuICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiZm9ybURhdGFcIiBbKGpzb25JbnZhbGlkKV09XCJmb3JtRGF0YUludmFsaWRcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=
|