@veloceapps/sdk 8.0.0-134 → 8.0.0-136
Sign up to get free protection for your applications and to get access to all the features.
- package/core/modules/configuration/services/configuration-state.service.d.ts +3 -1
- package/core/services/context.service.d.ts +1 -0
- package/core/services/flow-info.service.d.ts +1 -0
- package/core/services/flow-state.service.d.ts +1 -0
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +29 -13
- package/esm2020/core/services/context.service.mjs +12 -11
- package/esm2020/core/services/flow-info.service.mjs +4 -1
- package/esm2020/core/services/flow-state.service.mjs +16 -10
- package/esm2020/src/pages/product/product.component.mjs +2 -2
- package/esm2020/src/services/flow-router.service.mjs +3 -3
- package/esm2020/src/services/flow.service.mjs +7 -6
- package/fesm2015/veloceapps-sdk-core.mjs +61 -34
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +9 -8
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +56 -30
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +9 -8
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +1 -1
- package/src/services/flow.service.d.ts +1 -1
@@ -28,6 +28,7 @@ export class FlowStateService {
|
|
28
28
|
this.toastService = toastService;
|
29
29
|
this.customizationService = customizationService;
|
30
30
|
this.NOT_INITIALIZED = Symbol();
|
31
|
+
this.executedFunctions = {};
|
31
32
|
this._hasStatefulUnsavedChanges = false;
|
32
33
|
this.stateId$ = new BehaviorSubject(null);
|
33
34
|
this.processors = {};
|
@@ -385,27 +386,32 @@ export class FlowStateService {
|
|
385
386
|
return forkJoin(owners$).pipe(map(noop));
|
386
387
|
}
|
387
388
|
executeActionScript(request, executable) {
|
388
|
-
const
|
389
|
-
if (!script) {
|
389
|
+
const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];
|
390
|
+
if (!configurationProcessor?.script) {
|
390
391
|
const scope = this.getScopeByOwnerId(executable.ownerId);
|
391
392
|
const scopeText = scope ? ` in ${scope}` : '';
|
392
393
|
throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;
|
393
394
|
}
|
394
|
-
return this.executeProcessorScript(request,
|
395
|
+
return this.executeProcessorScript(request, configurationProcessor, executable.inputData);
|
395
396
|
}
|
396
397
|
executeSelectorScript(request, executable) {
|
397
|
-
const
|
398
|
-
if (!script) {
|
398
|
+
const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];
|
399
|
+
if (!configurationProcessor?.script) {
|
399
400
|
const scope = this.getScopeByOwnerId(executable.ownerId);
|
400
401
|
const scopeText = scope ? ` in ${scope}` : '';
|
401
402
|
throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;
|
402
403
|
}
|
403
|
-
return this.executeProcessorScript(request,
|
404
|
+
return this.executeProcessorScript(request, configurationProcessor, executable.inputData);
|
404
405
|
}
|
405
|
-
executeProcessorScript(request,
|
406
|
-
|
406
|
+
executeProcessorScript(request, configurationProcessor, inputData) {
|
407
|
+
let functionToExecute = this.executedFunctions[configurationProcessor.apiName];
|
408
|
+
if (!functionToExecute) {
|
409
|
+
functionToExecute = new Function(`${configurationProcessor.script}\nreturn transform;`)();
|
410
|
+
this.executedFunctions[configurationProcessor.apiName] = functionToExecute;
|
411
|
+
}
|
412
|
+
return functionToExecute({
|
407
413
|
request,
|
408
|
-
inputData
|
414
|
+
inputData,
|
409
415
|
});
|
410
416
|
}
|
411
417
|
generateRequestId(scope, selectorName, inputData) {
|
@@ -449,4 +455,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
449
455
|
type: Inject,
|
450
456
|
args: [FLOW_CUSTOMIZATION]
|
451
457
|
}] }]; } });
|
452
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx3QkFBd0IsRUFFeEIsMkJBQTJCLEVBQzNCLFVBQVUsRUFRVixTQUFTLEVBRVQsY0FBYyxFQUNkLElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9B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O1NBQ2QsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDNUMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsT0FBTztZQUNQLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7WUFDcEIsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixPQUFPO1lBQ1AsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztZQUNwQixPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLE9BQU87WUFDUCxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVO1NBQ3BELENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OzZHQXJrQlUsZ0JBQWdCLHVTQXNCTCxrQkFBa0I7aUhBdEI3QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBdUJOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb2Nlc3NvcnNBcGlTZXJ2aWNlLCBGbG93U3RhdGVBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYXJnZSxcbiAgQ29tcGlsZWRQcmljZVBsYW4sXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0LFxuICBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsXG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsXG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JUeXBlcyxcbiAgRW50aXR5VXRpbCxcbiAgRmxvdyxcbiAgRmxvd1N0YXRlLFxuICBGbG93U3RhdGVFeGVjdXRhYmxlRFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0LFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsXG4gIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2UsXG4gIGlzRGVmaW5lZCxcbiAgTWV0cmljUnVsZSxcbiAgVUlUZW1wbGF0ZVR5cGUsXG4gIFVVSUQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgYXNzaWduLCBjbG9uZURlZXAsIERpY3Rpb25hcnksIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBub29wLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc2hhcmVSZXBsYXksXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kdWxlcyc7XG5pbXBvcnQgeyBGbG93Q3VzdG9taXphdGlvbiwgRkxPV19DVVNUT01JWkFUSU9OIH0gZnJvbSAnLi4vdHlwZXMvZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dTdGF0ZVN1YnNjcmlwdGlvbk9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9mbG93LXN0YXRlLnR5cGVzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0luZm9TZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJy4vcXVvdGUtZHJhZnQuc2VydmljZSc7XG5cbnR5cGUgUHJvY2Vzc29yc01hcCA9IFBhcnRpYWw8e1xuICBbb3duZXJJZDogc3RyaW5nXToge1xuICAgIFthcGlOYW1lOiBzdHJpbmddOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yO1xuICB9O1xufT47XG5cbnR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPO1xuICBkYXRhJDogQmVoYXZpb3JTdWJqZWN0PHVua25vd24+O1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZVNlcnZpY2Uge1xuICBwdWJsaWMgY2hhcmdlcyQ6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDaGFyZ2U+PjtcbiAgcHVibGljIHByaWNlUGxhbnMkOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PjtcbiAgcHVibGljIGFjdGl2ZU1ldHJpY3MkOiBPYnNlcnZhYmxlPE1ldHJpY1J1bGVbXT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBOT1RfSU5JVElBTElaRUQgPSBTeW1ib2woKTtcblxuICBwcml2YXRlIF9oYXNTdGF0ZWZ1bFVuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGVJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHByb2Nlc3NvcnM6IFByb2Nlc3NvcnNNYXAgPSB7fTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBTdWJzY3JpcHRpb24+ID0ge307XG4gIHByaXZhdGUgY2xlYW51cCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvY2Vzc29yc0FwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZUFwaVNlcnZpY2U6IEZsb3dTdGF0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIC8qXG4gICAgICBJbiBzdGF0ZWxlc3MgbW9kZSB3YXRjaCBRdW90ZURyYWZ0IGNoYW5nZXMgYW5kIGNhbGwgZXhlY3V0ZVJlcXVlc3Qgc28gdGhhdFxuICAgICAgYWxsIHN1YnNjcmlwdGlvbnMgZ2V0IHRoZWlyIHVwZGF0ZXMgYWNjb3JkaW5nIHRvIHVwZGF0ZWQgUXVvdGVEcmFmdFxuICAgICovXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24udXBkYXRlZCQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuY2hhcmdlcyQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93JC5waXBlKFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoZmxvdyA9PiB7XG4gICAgICAgIGlmICghZmxvdy5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGVEcmFmdCA9PiBxdW90ZURyYWZ0LmNoYXJnZXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmUkPERpY3Rpb25hcnk8Q2hhcmdlPj4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdDSEFSR0VTJywgbnVsbCwge1xuICAgICAgICAgICAgY29sZDogdHJ1ZSxcbiAgICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiAocmVzcG9uc2Uuc3VjY2VzcyA/IHJlc3BvbnNlLnJlc3VsdCA6IHt9KSkpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuICAgIHRoaXMuY2hhcmdlcyQuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnByaWNlUGxhbnMkID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdyQucGlwZShcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc3dpdGNoTWFwKGZsb3cgPT4ge1xuICAgICAgICBpZiAoIWZsb3cucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQkLnBpcGUobWFwKHF1b3RlRHJhZnQgPT4gcXVvdGVEcmFmdC5wcmljZVBsYW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPj4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdQUklDRV9QTEFOUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiB7fSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgICB0aGlzLnByaWNlUGxhbnMkLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5hY3RpdmVNZXRyaWNzJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcChmbG93ID0+IHtcbiAgICAgICAgaWYgKCFmbG93LnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZURyYWZ0ID0+IHF1b3RlRHJhZnQuYWN0aXZlTWV0cmljcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZSQ8TWV0cmljUnVsZVtdPihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0FDVElWRV9NRVRSSUNTJywgbnVsbCwge1xuICAgICAgICAgICAgY29sZDogdHJ1ZSxcbiAgICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiAocmVzcG9uc2Uuc3VjY2VzcyA/IHJlc3BvbnNlLnJlc3VsdCA6IFtdKSkpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlTWV0cmljcyQuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdFByb2Nlc3NvcnMkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRTdGF0ZWZ1bCQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0U3RhdGVsZXNzJCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHsgZGF0YSQgfSkgPT4gZGF0YSQuY29tcGxldGUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmNhbmNlbCh0aGlzLnN0YXRlSWQkLnZhbHVlKS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3RhdGVJZCQubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb2Nlc3NvcnMgPSB7fTtcbiAgICB0aGlzLmNsZWFudXAkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsXG4gICAgICA/IHRoaXMuX2hhc1N0YXRlZnVsVW5zYXZlZENoYW5nZXNcbiAgICAgIDogdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZUlkJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5zdGF0ZUlkJCwgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0luaXRpYWxpemVkJF0pLnBpcGUoXG4gICAgICBtYXAodmFsdWVzID0+IHZhbHVlcy5zb21lKEJvb2xlYW4pKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zdGF0ZUlkJC52YWx1ZSkgfHwgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGUkKFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0LFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdFsnc2VsZWN0b3JzJ10+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCBleGVjKTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIC8vIEtlZXAgb25seSByZXF1ZXN0ZWQgcmVzdWx0c1xuICAgICAgICBjb25zdCBhY3R1YWxTZWxlY3RvcnMgPSBPYmplY3QuZW50cmllcyhyZXN1bHQuc2VsZWN0b3JzKS5yZWR1Y2UoXG4gICAgICAgICAgKHRydW5rOiBSZWNvcmQ8c3RyaW5nLCBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPiwgW3JlcXVlc3RJZCwgcmVzdWx0XSkgPT4ge1xuICAgICAgICAgICAgaWYgKGV4ZWMuc2VsZWN0b3JzPy5bcmVxdWVzdElkXSkge1xuICAgICAgICAgICAgICB0cnVua1tyZXF1ZXN0SWRdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydW5rO1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFNlbGVjdG9ycztcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2gkKHNjb3BlOiBVSVRlbXBsYXRlVHlwZSwgYWN0aW9uOiBzdHJpbmcsIGlucHV0RGF0YT86IHVua25vd24pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0ID0ge1xuICAgICAgYWN0aW9uczogW3sgbmFtZTogYWN0aW9uLCBpbnB1dERhdGEgfV0sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCBleGVjKTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKG1hcChub29wKSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0JDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE/OiB1bmtub3duLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5nZW5lcmF0ZVJlcXVlc3RJZChzY29wZSwgc2VsZWN0b3JOYW1lLCBpbnB1dERhdGEpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIHtcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBbcmVxdWVzdElkXToge1xuICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2Uuc2VsZWN0b3JzW3JlcXVlc3RJZF0gYXMgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlJDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5nZW5lcmF0ZVJlcXVlc3RJZChzY29wZSwgc2VsZWN0b3JOYW1lLCBpbnB1dERhdGEpO1xuXG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXSkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwge1xuICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICBbcmVxdWVzdElkXToge1xuICAgICAgICAgICAgbmFtZTogc2VsZWN0b3JOYW1lLFxuICAgICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0gPSB7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGRhdGEkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KHRoaXMuTk9UX0lOSVRJQUxJWkVEKSxcbiAgICAgIH07XG5cbiAgICAgIGlmICghb3B0aW9ucz8uY29sZCkge1xuICAgICAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0uZGF0YSQucGlwZShcbiAgICAgIGZpbHRlcihkYXRhID0+IGRhdGEgIT0gdGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgbWFwKGRhdGEgPT4gZGF0YSBhcyBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPiksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0uZGF0YSQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF07XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSQoKTogT2JzZXJ2YWJsZTx7IHF1b3RlSWQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnNhdmUodGhpcy5zdGF0ZUlkJC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3Q7XG4gICAgICBpZiAocXVvdGVEcmFmdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHsgcXVvdGVJZDogJycgfSk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0JCgpOiBPYnNlcnZhYmxlPHsgcXVvdGVJZDogc3RyaW5nIH0+IHtcbiAgICBpZiAodGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2Uuc3VibWl0KHRoaXMuc3RhdGVJZCQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Rm9yQWN0aXZlUHJpY2VMaXN0O1xuICAgICAgaWYgKHF1b3RlRHJhZnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVBcGlTZXJ2aWNlLnN1Ym1pdFF1b3RlKHF1b3RlRHJhZnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZih7IHF1b3RlSWQ6ICcnIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPd25lcklkQnlTY29wZShzY29wZTogVUlUZW1wbGF0ZVR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG93bmVySWQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXNbc2NvcGVdPy5pZDtcbiAgICBpZiAoIW93bmVySWQpIHtcbiAgICAgIHRocm93IGBPd25lcklkIGlzIG5vdCBmb3VuZCBmb3Igc2NvcGUgJHtzY29wZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBvd25lcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY29wZUJ5T3duZXJJZChpZDogc3RyaW5nKTogVUlUZW1wbGF0ZVR5cGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGUgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXMpKSB7XG4gICAgICBpZiAodGVtcGxhdGUuaWQgPT09IGlkKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZS50eXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY1RvUmVxdWVzdChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QpOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPIHtcbiAgICBjb25zdCBvd25lcklkID0gdGhpcy5nZXRPd25lcklkQnlTY29wZShzY29wZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uczogZXhlYy5hY3Rpb25zPy5tYXAoYWN0aW9uID0+ICh7IGFwaU5hbWU6IGFjdGlvbi5uYW1lLCBvd25lcklkLCBpbnB1dERhdGE6IGFjdGlvbi5pbnB1dERhdGEgPz8ge30gfSkpLFxuICAgICAgc2VsZWN0b3JzOlxuICAgICAgICBleGVjLnNlbGVjdG9ycyAmJlxuICAgICAgICBPYmplY3QuZW50cmllcyhleGVjLnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlRXhlY3V0YWJsZURUTz4sIFtrZXksIHNlbGVjdG9yXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgW2tleV06IHsgYXBpTmFtZTogc2VsZWN0b3IubmFtZSwgb3duZXJJZCwgaW5wdXREYXRhOiBzZWxlY3Rvci5pbnB1dERhdGEgPz8ge30gfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGVSZXF1ZXN0JChcbiAgICByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICAgIGZvcmNlU3Vic2NyaXB0aW9uczogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIGNvbnN0IGZ1bGxSZXF1ZXN0ID0gY2xvbmVEZWVwKHJlcXVlc3QpO1xuICAgIGlmIChmdWxsUmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgZm9yY2VTdWJzY3JpcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgZnVsbFJlcXVlc3Quc2VsZWN0b3JzID0gYXNzaWduKGZ1bGxSZXF1ZXN0LnNlbGVjdG9ycywgc3Vic2NyaXB0aW9uLnJlcXVlc3Quc2VsZWN0b3JzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBleGVjdXRpb24kID0gdGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gdGhpcy5leGVjdXRlU3RhdGVmdWwkKGZ1bGxSZXF1ZXN0KVxuICAgICAgOiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3MkKGZ1bGxSZXF1ZXN0KTtcblxuICAgIHJldHVybiBleGVjdXRpb24kLnBpcGUodGFwKHJlc3VsdCA9PiB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHJlc3VsdC5zZWxlY3RvcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhzZWxlY3RvcnMpLmZvckVhY2goKFtyZXF1ZXN0SWQsIHNlbGVjdG9yUmVzdWx0XSkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RvclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uJCA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJDtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24kKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbiQubmV4dChzZWxlY3RvclJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWZ1bCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gU3Vic2NyaXB0aW9uc1xuICAgIHRoaXMuc3Vic2NyaWJlJDxDb25maWd1cmF0aW9uQ29udGV4dD4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdDT05URVhUJywgbnVsbCwgeyBjb2xkOiB0cnVlIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocmVzcG9uc2UucmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBwcm9jZXNzb3JzTGlzdCA9IGZsYXR0ZW4oT2JqZWN0LnZhbHVlcyh0aGlzLnByb2Nlc3NvcnMpLm1hcChvd25lck1hcCA9PiBPYmplY3QudmFsdWVzKG93bmVyTWFwID8/IHt9KSkpO1xuICAgIGNvbnN0IHByb2Nlc3NvcnMgPSBwcm9jZXNzb3JzTGlzdC5sZW5ndGggPyBwcm9jZXNzb3JzTGlzdCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucylcbiAgICAgIC5tYXAoKHsgcmVxdWVzdCB9KSA9PiByZXF1ZXN0LnNlbGVjdG9ycylcbiAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKVxuICAgICAgLnJlZHVjZSgodHJ1bmssIHNlbGVjdG9ycykgPT4gKHsgLi4udHJ1bmssIC4uLnNlbGVjdG9ycyB9KSwge30pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlXG4gICAgICAuaW5pdCh7XG4gICAgICAgIHF1b3RlSWQ6IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLmhlYWRlcklkLFxuICAgICAgICBwYXJhbXM6IHRoaXMuZmxvd0luZm9TZXJ2aWNlLnBhcmFtcyA/PyB7fSxcbiAgICAgICAgYWN0aW9uc092ZXJyaWRlOiBwcm9jZXNzb3JzPy5maWx0ZXIocHJvY2Vzc29yID0+IHByb2Nlc3Nvci50eXBlID09PSBDb25maWd1cmF0aW9uUHJvY2Vzc29yVHlwZXMuQUNUSU9OKSxcbiAgICAgICAgc2VsZWN0b3JzT3ZlcnJpZGU6IHByb2Nlc3NvcnM/LmZpbHRlcihwcm9jZXNzb3IgPT4gcHJvY2Vzc29yLnR5cGUgPT09IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JUeXBlcy5TRUxFQ1RPUiksXG4gICAgICAgIHNlbGVjdG9yczogeyAuLi5zZWxlY3RvcnMsIC4uLnJlcXVlc3Quc2VsZWN0b3JzIH0sXG4gICAgICAgIGFjdGlvbnM6IHJlcXVlc3QuYWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IHN0YXRlSWQsIHNlbGVjdG9ycyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RvcnNSZXNwb25zZShzZWxlY3RvcnMpO1xuICAgICAgICAgIHRoaXMuc3RhdGVJZCQubmV4dChzdGF0ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVmdWwkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIGlmICghdGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgdGhyb3cgJ1N0YXRlZnVsIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmV4ZWN1dGUodGhpcy5zdGF0ZUlkJC52YWx1ZSwgcmVxdWVzdCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmIChyZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuX2hhc1N0YXRlZnVsVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcChyZXNwb25zZSA9PiB0aGlzLnN0YXRlSWQkLm5leHQocmVzcG9uc2Uuc3RhdGVJZCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWxlc3MkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgaGVhZGVySWQgfSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaW5pdChoZWFkZXJJZCwgdGhpcy5mbG93SW5mb1NlcnZpY2UucGFyYW1zID8/IHt9KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHRoaXMuZ2V0RGVmYXVsdEV4ZWN1dGlvblJlcXVlc3REVE8oKSkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2FsY3VsYXRlJCgpKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmZpbmFsaXplSW5pdCgpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGUkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZsb3dTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIWZsb3dTdGF0ZSkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgIERvbid0IGV4ZWN1dGUgcHJvY2VkdXJlcyB3aGVuOlxuICAgICAgICAqIEluaXRpYWxpemluZyBhIHN0YW5kYWxvbmUgcHJvZHVjdCBjb25maWd1cmF0aW9uIFVJLCBhcyBwcm9jZWR1cmUgaXMgZXhlY3V0ZSBpbiAvcHJpY2UgY2FsbFxuICAgICAgICAqIEluaXRpYWxpemluZyBhbiBlbXB0eSBhY2NvdW50IChhY2NvdW50IHdpdGggbm8gYXNzZXRzKVxuICAgICovXG4gICAgY29uc3QgaXNFbXB0eUFjY291bnRNb2RlID1cbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQgJiZcbiAgICAgICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Byb2R1Y3RzICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNBc3NldHMgJiZcbiAgICAgICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ/LmluaXRpYWxTdGF0ZS5sZW5ndGg7XG5cbiAgICBpZiAodGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc1N0YW5kYWxvbmUgfHwgaXNFbXB0eUFjY291bnRNb2RlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5jYWxjdWxhdGUkKGZsb3dTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3MkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5leGVjdXRlU3RhdGVsZXNzQWN0aW9ucyhyZXF1ZXN0KSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAvKlxuICAgICAgICAgIFNraXAgcHJpY2UgY2FsY3VsYXRpb24gaW4gY2FzZVxuICAgICAgICAgIDEuIE5vIGFjdGlvbnMgaW4gdGhlIHJlcXVlc3RcbiAgICAgICAgICAyLiBJbml0aWFsaXphdGlvbiBwcm9jZXNzIGV4ZWN1dGlvbiAoc3RhdGUgbm90IGluaXRpYWxpemVkIHlldClcbiAgICAgICAgKi9cbiAgICAgICAgaWYgKCFyZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCB8fCAhdGhpcy5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGUkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZXhlY3V0ZVN0YXRlbGVzc1NlbGVjdG9ycyhyZXF1ZXN0KSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlbGVzc0FjdGlvbnMocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0IHx8ICFyZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgcmVxdWVzdC5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgIGZsb3dTdGF0ZSA9IHRoaXMuZXhlY3V0ZUFjdGlvblNjcmlwdChmbG93U3RhdGUsIGFjdGlvbikgPz8gZmxvd1N0YXRlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVRdW90ZURyYWZ0KGZsb3dTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3NTZWxlY3RvcnMocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQpIHtcbiAgICAgIHRocm93ICdRdW90ZURyYWZ0IGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIHJldHVybiBFbnRpdHlVdGlsLmVudHJpZXMocmVxdWVzdC5zZWxlY3RvcnMgPz8ge30pLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCwgW2tleSwgc2VsZWN0b3JdKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogdGhpcy5leGVjdXRlU2VsZWN0b3JTY3JpcHQoZmxvd1N0YXRlLCBzZWxlY3RvciksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3RvcnNba2V5XSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBTdHJpbmcoZSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAgeyBzdGF0ZUlkOiAnJywgc2VsZWN0b3JzOiB7fSB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZsb3dTYWZlKCk6IEZsb3cge1xuICAgIGlmICghdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdykge1xuICAgICAgdGhyb3cgJ0Zsb3cgaXMgbm90IGRlZmluZWQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UHJvY2Vzc29ycyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgaGFzT3ZlcnJpZGVzID0gQm9vbGVhbih0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzKTtcbiAgICBjb25zdCBmbG93ID0gdGhpcy5nZXRGbG93U2FmZSgpO1xuXG4gICAgaWYgKGZsb3cucHJvcGVydGllcy5zdGF0ZWZ1bCAmJiAhaGFzT3ZlcnJpZGVzKSB7XG4gICAgICAvLyBTa2lwIGluaXRpYWxpemF0aW9uIGFzIGJhY2tlbmQgd2lsbCB0YWtlIHByb2Nlc3NvcnMgZnJvbSBTRlxuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3duZXJzJCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG93SW5mb1NlcnZpY2UudGVtcGxhdGVzKVxuICAgICAgLm1hcCh0ZW1wbGF0ZSA9PiB7XG4gICAgICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhbFByb2Nlc3NvcnMkID1cbiAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzPy4odGVtcGxhdGUubmFtZSkgPz8gb2YobnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsUHJvY2Vzc29ycyQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAocHJvY2Vzc29ycyA9PlxuICAgICAgICAgICAgcHJvY2Vzc29ycyA/IG9mKHByb2Nlc3NvcnMpIDogdGhpcy5wcm9jZXNzb3JzQXBpU2VydmljZS5mZXRjaENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzJCh0ZW1wbGF0ZS5pZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YXAocHJvY2Vzc29ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3JzTWFwID0gcHJvY2Vzc29ycy5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgQ29uZmlndXJhdGlvblByb2Nlc3Nvcj4sIHApID0+IHtcbiAgICAgICAgICAgICAgYWNjW3AuYXBpTmFtZV0gPSBwO1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NvcnNbdGVtcGxhdGUuaWRdID0gcHJvY2Vzc29yc01hcDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZCk7XG5cbiAgICBpZiAoIW93bmVycyQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ob3duZXJzJCkucGlwZShtYXAobm9vcCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQWN0aW9uU2NyaXB0KHJlcXVlc3Q6IEZsb3dTdGF0ZSwgZXhlY3V0YWJsZTogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IEZsb3dTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXT8uc2NyaXB0O1xuXG4gICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChleGVjdXRhYmxlLm93bmVySWQpO1xuICAgICAgY29uc3Qgc2NvcGVUZXh0ID0gc2NvcGUgPyBgIGluICR7c2NvcGV9YCA6ICcnO1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtleGVjdXRhYmxlLmFwaU5hbWV9JHtzY29wZVRleHR9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBzY3JpcHQsIGV4ZWN1dGFibGUuaW5wdXREYXRhKSBhcyBGbG93U3RhdGU7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTZWxlY3RvclNjcmlwdChyZXF1ZXN0OiBGbG93U3RhdGUsIGV4ZWN1dGFibGU6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiB1bmtub3duIHtcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLnByb2Nlc3NvcnNbZXhlY3V0YWJsZS5vd25lcklkXT8uW2V4ZWN1dGFibGUuYXBpTmFtZV0/LnNjcmlwdDtcblxuICAgIGlmICghc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgc2NyaXB0LCBleGVjdXRhYmxlLmlucHV0RGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBzY3JpcHQ6IHN0cmluZywgaW5wdXREYXRhOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihgJHtzY3JpcHR9XFxucmV0dXJuIHRyYW5zZm9ybTtgKSgpKHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbnB1dERhdGE6IGlucHV0RGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGU6IFVJVGVtcGxhdGVUeXBlLCBzZWxlY3Rvck5hbWU6IHN0cmluZywgaW5wdXREYXRhPzogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgaW5wdXREYXRhSGFzaCA9IFVVSUQuaGV4KEpTT04uc3RyaW5naWZ5KGlucHV0RGF0YSkgfHwgJycpLnNsaWNlKDAsIDgpO1xuICAgIHJldHVybiBgJHtzY29wZX0vJHtzZWxlY3Rvck5hbWV9LyR7aW5wdXREYXRhSGFzaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0RXhlY3V0aW9uUmVxdWVzdERUTygpOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPIHtcbiAgICBjb25zdCByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPID0ge1xuICAgICAgYWN0aW9uczogW10sXG4gICAgICBzZWxlY3RvcnM6IHt9LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhbmRhbG9uZSkge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgY29uc3Qgb3duZXJJZCA9IHRoaXMuZ2V0T3duZXJJZEJ5U2NvcGUoVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUpO1xuXG4gICAgcmVxdWVzdC5hY3Rpb25zPy5wdXNoKHtcbiAgICAgIGFwaU5hbWU6ICdVUERBVEVfUFJJQ0VfTElTVCcsXG4gICAgICBvd25lcklkLFxuICAgICAgaW5wdXREYXRhOiB7fSxcbiAgICB9KTtcbiAgICByZXF1ZXN0LmFjdGlvbnM/LnB1c2goe1xuICAgICAgYXBpTmFtZTogJ1VQREFURV9BU1NFVF9JRFMnLFxuICAgICAgb3duZXJJZCxcbiAgICAgIGlucHV0RGF0YToge30sXG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LmFjdGlvbnM/LnB1c2goe1xuICAgICAgYXBpTmFtZTogJ1VQREFURV9DT05URVhUX1BST1BFUlRJRVMnLFxuICAgICAgb3duZXJJZCxcbiAgICAgIGlucHV0RGF0YTogdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG59XG4iXX0=
|
458
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx3QkFBd0IsRUFFeEIsMkJBQTJCLEVBQzNCLFVBQVUsRUFRVixTQUFTLEVBRVQsY0FBYyxFQUNkLElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9B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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvY2Vzc29yc0FwaVNlcnZpY2UsIEZsb3dTdGF0ZUFwaVNlcnZpY2UsIFF1b3RlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ2hhcmdlLFxuICBDb21waWxlZFByaWNlUGxhbixcbiAgQ29uZmlndXJhdGlvbkNvbnRleHQsXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvcixcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLFxuICBFbnRpdHlVdGlsLFxuICBGbG93LFxuICBGbG93U3RhdGUsXG4gIEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QsXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCxcbiAgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZSxcbiAgaXNEZWZpbmVkLFxuICBNZXRyaWNSdWxlLFxuICBVSVRlbXBsYXRlVHlwZSxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBhc3NpZ24sIGNsb25lRGVlcCwgRGljdGlvbmFyeSwgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIGZvcmtKb2luLFxuICBtYXAsXG4gIG5vb3AsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzaGFyZVJlcGxheSxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzJztcbmltcG9ydCB7IEZMT1dfQ1VTVE9NSVpBVElPTiwgRmxvd0N1c3RvbWl6YXRpb24gfSBmcm9tICcuLi90eXBlcy9mbG93LWN1c3RvbWl6YXRpb24udHlwZXMnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL2Zsb3ctc3RhdGUudHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctaW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnLi9xdW90ZS1kcmFmdC5zZXJ2aWNlJztcblxudHlwZSBQcm9jZXNzb3JzTWFwID0gUGFydGlhbDx7XG4gIFtvd25lcklkOiBzdHJpbmddOiB7XG4gICAgW2FwaU5hbWU6IHN0cmluZ106IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3I7XG4gIH07XG59PjtcblxudHlwZSBTdWJzY3JpcHRpb24gPSB7XG4gIHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE87XG4gIGRhdGEkOiBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj47XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXRlU2VydmljZSB7XG4gIHB1YmxpYyBjaGFyZ2VzJDogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+O1xuICBwdWJsaWMgcHJpY2VQbGFucyQ6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDb21waWxlZFByaWNlUGxhbj4+O1xuICBwdWJsaWMgYWN0aXZlTWV0cmljcyQ6IE9ic2VydmFibGU8TWV0cmljUnVsZVtdPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IE5PVF9JTklUSUFMSVpFRCA9IFN5bWJvbCgpO1xuXG4gIHByaXZhdGUgZXhlY3V0ZWRGdW5jdGlvbnM6IERpY3Rpb25hcnk8KHBheWxvYWQ6IHsgcmVxdWVzdDogRmxvd1N0YXRlOyBpbnB1dERhdGE6IHVua25vd24gfSkgPT4gdW5rbm93bj4gPSB7fTtcbiAgcHJpdmF0ZSBfaGFzU3RhdGVmdWxVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBwcm9jZXNzb3JzOiBQcm9jZXNzb3JzTWFwID0ge307XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgU3Vic2NyaXB0aW9uPiA9IHt9O1xuICBwcml2YXRlIGNsZWFudXAkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHByb2Nlc3NvcnNBcGlTZXJ2aWNlOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVBcGlTZXJ2aWNlOiBGbG93U3RhdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICAvKlxuICAgICAgSW4gc3RhdGVsZXNzIG1vZGUgd2F0Y2ggUXVvdGVEcmFmdCBjaGFuZ2VzIGFuZCBjYWxsIGV4ZWN1dGVSZXF1ZXN0IHNvIHRoYXRcbiAgICAgIGFsbCBzdWJzY3JpcHRpb25zIGdldCB0aGVpciB1cGRhdGVzIGFjY29yZGluZyB0byB1cGRhdGVkIFF1b3RlRHJhZnRcbiAgICAqL1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dDb25maWd1cmF0aW9uLnVwZGF0ZWQkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmNoYXJnZXMkID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdyQucGlwZShcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc3dpdGNoTWFwKGZsb3cgPT4ge1xuICAgICAgICBpZiAoIWZsb3cucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQkLnBpcGUobWFwKHF1b3RlRHJhZnQgPT4gcXVvdGVEcmFmdC5jaGFyZ2VzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxEaWN0aW9uYXJ5PENoYXJnZT4+KFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FLCAnQ0hBUkdFUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiB7fSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgICB0aGlzLmNoYXJnZXMkLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5wcmljZVBsYW5zJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcChmbG93ID0+IHtcbiAgICAgICAgaWYgKCFmbG93LnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZURyYWZ0ID0+IHF1b3RlRHJhZnQucHJpY2VQbGFucykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZSQ8RGljdGlvbmFyeTxDb21waWxlZFByaWNlUGxhbj4+KFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FLCAnUFJJQ0VfUExBTlMnLCBudWxsLCB7XG4gICAgICAgICAgICBjb2xkOiB0cnVlLFxuICAgICAgICAgIH0pLnBpcGUobWFwKHJlc3BvbnNlID0+IChyZXNwb25zZS5zdWNjZXNzID8gcmVzcG9uc2UucmVzdWx0IDoge30pKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG4gICAgdGhpcy5wcmljZVBsYW5zJC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuYWN0aXZlTWV0cmljcyQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93JC5waXBlKFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoZmxvdyA9PiB7XG4gICAgICAgIGlmICghZmxvdy5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGVEcmFmdCA9PiBxdW90ZURyYWZ0LmFjdGl2ZU1ldHJpY3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmUkPE1ldHJpY1J1bGVbXT4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdBQ1RJVkVfTUVUUklDUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiBbXSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZU1ldHJpY3MkLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmluaXRQcm9jZXNzb3JzJCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0U3RhdGVmdWwkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFN0YXRlbGVzcyQoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhbnVwKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdWJzY3JpcHRpb25zKS5mb3JFYWNoKCh7IGRhdGEkIH0pID0+IGRhdGEkLmNvbXBsZXRlKCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5jYW5jZWwodGhpcy5zdGF0ZUlkJC52YWx1ZSkuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN0YXRlSWQkLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzb3JzID0ge307XG4gICAgdGhpcy5jbGVhbnVwJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Vuc2F2ZWRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bFxuICAgICAgPyB0aGlzLl9oYXNTdGF0ZWZ1bFVuc2F2ZWRDaGFuZ2VzXG4gICAgICA6IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVJZCQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgaXNJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RhdGVJZCQsIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNJbml0aWFsaXplZCRdKS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuc29tZShCb29sZWFuKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RhdGVJZCQudmFsdWUpIHx8IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNJbml0aWFsaXplZDtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlJChcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHRbJ3NlbGVjdG9ycyddPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwgZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAvLyBLZWVwIG9ubHkgcmVxdWVzdGVkIHJlc3VsdHNcbiAgICAgICAgY29uc3QgYWN0dWFsU2VsZWN0b3JzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0LnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZT4sIFtyZXF1ZXN0SWQsIHJlc3VsdF0pID0+IHtcbiAgICAgICAgICAgIGlmIChleGVjLnNlbGVjdG9ycz8uW3JlcXVlc3RJZF0pIHtcbiAgICAgICAgICAgICAgdHJ1bmtbcmVxdWVzdElkXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVuaztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9LFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBhY3R1YWxTZWxlY3RvcnM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc3BhdGNoJChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIGFjdGlvbjogc3RyaW5nLCBpbnB1dERhdGE/OiB1bmtub3duKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFjdGlvbnM6IFt7IG5hbWU6IGFjdGlvbiwgaW5wdXREYXRhIH1dLFxuICAgIH07XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwgZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShtYXAobm9vcCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdCQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhPzogdW5rbm93bixcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGUsIHNlbGVjdG9yTmFtZSwgaW5wdXREYXRhKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCB7XG4gICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICBuYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLnNlbGVjdG9yc1tyZXF1ZXN0SWRdIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZSQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGUsIHNlbGVjdG9yTmFtZSwgaW5wdXREYXRhKTtcblxuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0pIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdID0ge1xuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBkYXRhJDogbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPih0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICB9O1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LmNvbGQpIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdLmRhdGEkLnBpcGUoXG4gICAgICBmaWx0ZXIoZGF0YSA9PiBkYXRhICE9IHRoaXMuTk9UX0lOSVRJQUxJWkVEKSxcbiAgICAgIG1hcChkYXRhID0+IGRhdGEgYXMgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4pLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdLmRhdGEkLm9ic2VydmVkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUkKCk6IE9ic2VydmFibGU8eyBxdW90ZUlkOiBzdHJpbmcgfT4ge1xuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zYXZlKHRoaXMuc3RhdGVJZCQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Rm9yQWN0aXZlUHJpY2VMaXN0O1xuICAgICAgaWYgKHF1b3RlRHJhZnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVBcGlTZXJ2aWNlLnVwc2VydFF1b3RlKHF1b3RlRHJhZnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZih7IHF1b3RlSWQ6ICcnIH0pO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCQoKTogT2JzZXJ2YWJsZTx7IHF1b3RlSWQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnN1Ym1pdCh0aGlzLnN0YXRlSWQkLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdEZvckFjdGl2ZVByaWNlTGlzdDtcbiAgICAgIGlmIChxdW90ZURyYWZ0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1b3RlQXBpU2VydmljZS5zdWJtaXRRdW90ZShxdW90ZURyYWZ0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2YoeyBxdW90ZUlkOiAnJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3duZXJJZEJ5U2NvcGUoc2NvcGU6IFVJVGVtcGxhdGVUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBvd25lcklkID0gdGhpcy5mbG93SW5mb1NlcnZpY2UudGVtcGxhdGVzW3Njb3BlXT8uaWQ7XG4gICAgaWYgKCFvd25lcklkKSB7XG4gICAgICB0aHJvdyBgT3duZXJJZCBpcyBub3QgZm91bmQgZm9yIHNjb3BlICR7c2NvcGV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3duZXJJZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2NvcGVCeU93bmVySWQoaWQ6IHN0cmluZyk6IFVJVGVtcGxhdGVUeXBlIHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIE9iamVjdC52YWx1ZXModGhpcy5mbG93SW5mb1NlcnZpY2UudGVtcGxhdGVzKSkge1xuICAgICAgaWYgKHRlbXBsYXRlLmlkID09PSBpZCkge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGUudHlwZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIGV4ZWNUb1JlcXVlc3Qoc2NvcGU6IFVJVGVtcGxhdGVUeXBlLCBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0KTogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyB7XG4gICAgY29uc3Qgb3duZXJJZCA9IHRoaXMuZ2V0T3duZXJJZEJ5U2NvcGUoc2NvcGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbnM6IGV4ZWMuYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiAoeyBhcGlOYW1lOiBhY3Rpb24ubmFtZSwgb3duZXJJZCwgaW5wdXREYXRhOiBhY3Rpb24uaW5wdXREYXRhID8/IHt9IH0pKSxcbiAgICAgIHNlbGVjdG9yczpcbiAgICAgICAgZXhlYy5zZWxlY3RvcnMgJiZcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZXhlYy5zZWxlY3RvcnMpLnJlZHVjZShcbiAgICAgICAgICAodHJ1bms6IFJlY29yZDxzdHJpbmcsIEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8+LCBba2V5LCBzZWxlY3Rvcl0pID0+ICh7XG4gICAgICAgICAgICAuLi50cnVuayxcbiAgICAgICAgICAgIFtrZXldOiB7IGFwaU5hbWU6IHNlbGVjdG9yLm5hbWUsIG93bmVySWQsIGlucHV0RGF0YTogc2VsZWN0b3IuaW5wdXREYXRhID8/IHt9IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlUmVxdWVzdCQoXG4gICAgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyxcbiAgICBmb3JjZVN1YnNjcmlwdGlvbnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBmdWxsUmVxdWVzdCA9IGNsb25lRGVlcChyZXF1ZXN0KTtcbiAgICBpZiAoZnVsbFJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoIHx8IGZvcmNlU3Vic2NyaXB0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpKSB7XG4gICAgICAgIGZ1bGxSZXF1ZXN0LnNlbGVjdG9ycyA9IGFzc2lnbihmdWxsUmVxdWVzdC5zZWxlY3RvcnMsIHN1YnNjcmlwdGlvbi5yZXF1ZXN0LnNlbGVjdG9ycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0aW9uJCA9IHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsXG4gICAgICA/IHRoaXMuZXhlY3V0ZVN0YXRlZnVsJChmdWxsUmVxdWVzdClcbiAgICAgIDogdGhpcy5leGVjdXRlU3RhdGVsZXNzJChmdWxsUmVxdWVzdCk7XG5cbiAgICByZXR1cm4gZXhlY3V0aW9uJC5waXBlKHRhcChyZXN1bHQgPT4gdGhpcy5oYW5kbGVTZWxlY3RvcnNSZXNwb25zZShyZXN1bHQuc2VsZWN0b3JzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3RvcnNSZXNwb25zZShzZWxlY3RvcnM6IFJlY29yZDxzdHJpbmcsIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8dW5rbm93bj4+KTogdm9pZCB7XG4gICAgT2JqZWN0LmVudHJpZXMoc2VsZWN0b3JzKS5mb3JFYWNoKChbcmVxdWVzdElkLCBzZWxlY3RvclJlc3VsdF0pID0+IHtcbiAgICAgIGlmICghc2VsZWN0b3JSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5hZGQoeyBzZXZlcml0eTogVG9hc3RUeXBlLmVycm9yLCBzdW1tYXJ5OiBzZWxlY3RvclJlc3VsdC5lcnJvck1lc3NhZ2UgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiQgPSB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXT8uZGF0YSQ7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9uJCkge1xuICAgICAgICBzdWJzY3JpcHRpb24kLm5leHQoc2VsZWN0b3JSZXN1bHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3RhdGVmdWwkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIC8vIFN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLnN1YnNjcmliZSQ8Q29uZmlndXJhdGlvbkNvbnRleHQ+KFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FLCAnQ09OVEVYVCcsIG51bGwsIHsgY29sZDogdHJ1ZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHJlc3BvbnNlLnJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yc0xpc3QgPSBmbGF0dGVuKE9iamVjdC52YWx1ZXModGhpcy5wcm9jZXNzb3JzKS5tYXAob3duZXJNYXAgPT4gT2JqZWN0LnZhbHVlcyhvd25lck1hcCA/PyB7fSkpKTtcbiAgICBjb25zdCBwcm9jZXNzb3JzID0gcHJvY2Vzc29yc0xpc3QubGVuZ3RoID8gcHJvY2Vzc29yc0xpc3QgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0b3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpXG4gICAgICAubWFwKCh7IHJlcXVlc3QgfSkgPT4gcmVxdWVzdC5zZWxlY3RvcnMpXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZClcbiAgICAgIC5yZWR1Y2UoKHRydW5rLCBzZWxlY3RvcnMpID0+ICh7IC4uLnRydW5rLCAuLi5zZWxlY3RvcnMgfSksIHt9KTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5nZXREZWZhdWx0RXhlY3V0aW9uUmVxdWVzdERUTygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZVxuICAgICAgLmluaXQoe1xuICAgICAgICBxdW90ZUlkOiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5oZWFkZXJJZCxcbiAgICAgICAgcGFyYW1zOiB0aGlzLmZsb3dJbmZvU2VydmljZS5wYXJhbXMgPz8ge30sXG4gICAgICAgIGFjdGlvbnNPdmVycmlkZTogcHJvY2Vzc29ycz8uZmlsdGVyKHByb2Nlc3NvciA9PiBwcm9jZXNzb3IudHlwZSA9PT0gQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLkFDVElPTiksXG4gICAgICAgIHNlbGVjdG9yc092ZXJyaWRlOiBwcm9jZXNzb3JzPy5maWx0ZXIocHJvY2Vzc29yID0+IHByb2Nlc3Nvci50eXBlID09PSBDb25maWd1cmF0aW9uUHJvY2Vzc29yVHlwZXMuU0VMRUNUT1IpLFxuICAgICAgICBzZWxlY3RvcnM6IHsgLi4uc2VsZWN0b3JzLCAuLi5yZXF1ZXN0LnNlbGVjdG9ycyB9LFxuICAgICAgICBhY3Rpb25zOiByZXF1ZXN0LmFjdGlvbnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoeyBzdGF0ZUlkLCBzZWxlY3RvcnMgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0b3JzUmVzcG9uc2Uoc2VsZWN0b3JzKTtcbiAgICAgICAgICB0aGlzLnN0YXRlSWQkLm5leHQoc3RhdGVJZCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlZnVsJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgIHRocm93ICdTdGF0ZWZ1bCBzZXNzaW9uIGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5leGVjdXRlKHRoaXMuc3RhdGVJZCQudmFsdWUsIHJlcXVlc3QpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAocmVxdWVzdC5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLl9oYXNTdGF0ZWZ1bFVuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAocmVzcG9uc2UgPT4gdGhpcy5zdGF0ZUlkJC5uZXh0KHJlc3BvbnNlLnN0YXRlSWQpKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3RhdGVsZXNzJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGhlYWRlcklkIH0gPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmluaXQoaGVhZGVySWQsIHRoaXMuZmxvd0luZm9TZXJ2aWNlLnBhcmFtcyA/PyB7fSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JCh0aGlzLmdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCkpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5maW5hbGl6ZUluaXQoKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgaWYgKCFmbG93U3RhdGUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBEb24ndCBleGVjdXRlIHByb2NlZHVyZXMgd2hlbjpcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYSBzdGFuZGFsb25lIHByb2R1Y3QgY29uZmlndXJhdGlvbiBVSSwgYXMgcHJvY2VkdXJlIGlzIGV4ZWN1dGUgaW4gL3ByaWNlIGNhbGxcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYW4gZW1wdHkgYWNjb3VudCAoYWNjb3VudCB3aXRoIG5vIGFzc2V0cylcbiAgICAqL1xuICAgIGNvbnN0IGlzRW1wdHlBY2NvdW50TW9kZSA9XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNQcm9kdWN0cyAmJlxuICAgICAgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzQXNzZXRzICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5pbml0aWFsU3RhdGUubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNTdGFuZGFsb25lIHx8IGlzRW1wdHlBY2NvdW50TW9kZSkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uY2FsY3VsYXRlJChmbG93U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuZXhlY3V0ZVN0YXRlbGVzc0FjdGlvbnMocmVxdWVzdCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICBTa2lwIHByaWNlIGNhbGN1bGF0aW9uIGluIGNhc2VcbiAgICAgICAgICAxLiBObyBhY3Rpb25zIGluIHRoZSByZXF1ZXN0XG4gICAgICAgICAgMi4gSW5pdGlhbGl6YXRpb24gcHJvY2VzcyBleGVjdXRpb24gKHN0YXRlIG5vdCBpbml0aWFsaXplZCB5ZXQpXG4gICAgICAgICovXG4gICAgICAgIGlmICghcmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgIXRoaXMuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlJCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3NTZWxlY3RvcnMocmVxdWVzdCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3NBY3Rpb25zKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCB8fCAhcmVxdWVzdC5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIHJlcXVlc3QuYWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICBmbG93U3RhdGUgPSB0aGlzLmV4ZWN1dGVBY3Rpb25TY3JpcHQoZmxvd1N0YXRlLCBhY3Rpb24pID8/IGZsb3dTdGF0ZTtcbiAgICB9KTtcblxuICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UudXBkYXRlUXVvdGVEcmFmdChmbG93U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzU2VsZWN0b3JzKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQge1xuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSB7XG4gICAgICB0aHJvdyAnUXVvdGVEcmFmdCBpcyBub3QgaW5pdGlhbGl6ZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGZsb3dTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICByZXR1cm4gRW50aXR5VXRpbC5lbnRyaWVzKHJlcXVlc3Quc2VsZWN0b3JzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAocmVzdWx0OiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsIFtrZXksIHNlbGVjdG9yXSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3RvcnNba2V5XSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICByZXN1bHQ6IHRoaXMuZXhlY3V0ZVNlbGVjdG9yU2NyaXB0KGZsb3dTdGF0ZSwgc2VsZWN0b3IpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXN1bHQuc2VsZWN0b3JzW2tleV0gPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogU3RyaW5nKGUpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHsgc3RhdGVJZDogJycsIHNlbGVjdG9yczoge30gfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbG93U2FmZSgpOiBGbG93IHtcbiAgICBpZiAoIXRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cpIHtcbiAgICAgIHRocm93ICdGbG93IGlzIG5vdCBkZWZpbmVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByb2Nlc3NvcnMkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGhhc092ZXJyaWRlcyA9IEJvb2xlYW4odGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb25maWd1cmF0aW9uUHJvY2Vzc29ycyk7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMuZ2V0Rmxvd1NhZmUoKTtcblxuICAgIGlmIChmbG93LnByb3BlcnRpZXMuc3RhdGVmdWwgJiYgIWhhc092ZXJyaWRlcykge1xuICAgICAgLy8gU2tpcCBpbml0aWFsaXphdGlvbiBhcyBiYWNrZW5kIHdpbGwgdGFrZSBwcm9jZXNzb3JzIGZyb20gU0ZcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG93bmVycyQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlcylcbiAgICAgIC5tYXAodGVtcGxhdGUgPT4ge1xuICAgICAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxQcm9jZXNzb3JzJCA9XG4gICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb25maWd1cmF0aW9uUHJvY2Vzc29ycz8uKHRlbXBsYXRlLm5hbWUpID8/IG9mKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBsb2NhbFByb2Nlc3NvcnMkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHByb2Nlc3NvcnMgPT5cbiAgICAgICAgICAgIHByb2Nlc3NvcnMgPyBvZihwcm9jZXNzb3JzKSA6IHRoaXMucHJvY2Vzc29yc0FwaVNlcnZpY2UuZmV0Y2hDb25maWd1cmF0aW9uUHJvY2Vzc29ycyQodGVtcGxhdGUuaWQpLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKHByb2Nlc3NvcnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yc01hcCA9IHByb2Nlc3NvcnMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3I+LCBwKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1twLmFwaU5hbWVdID0gcDtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzb3JzW3RlbXBsYXRlLmlkXSA9IHByb2Nlc3NvcnNNYXA7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihpc0RlZmluZWQpO1xuXG4gICAgaWYgKCFvd25lcnMkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKG93bmVycyQpLnBpcGUobWFwKG5vb3ApKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZUFjdGlvblNjcmlwdChyZXF1ZXN0OiBGbG93U3RhdGUsIGV4ZWN1dGFibGU6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiBGbG93U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uUHJvY2Vzc29yID0gdGhpcy5wcm9jZXNzb3JzW2V4ZWN1dGFibGUub3duZXJJZF0/LltleGVjdXRhYmxlLmFwaU5hbWVdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uUHJvY2Vzc29yPy5zY3JpcHQpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChleGVjdXRhYmxlLm93bmVySWQpO1xuICAgICAgY29uc3Qgc2NvcGVUZXh0ID0gc2NvcGUgPyBgIGluICR7c2NvcGV9YCA6ICcnO1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtleGVjdXRhYmxlLmFwaU5hbWV9JHtzY29wZVRleHR9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBjb25maWd1cmF0aW9uUHJvY2Vzc29yLCBleGVjdXRhYmxlLmlucHV0RGF0YSkgYXMgRmxvd1N0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2VsZWN0b3JTY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBleGVjdXRhYmxlOiBGbG93U3RhdGVFeGVjdXRhYmxlRFRPKTogdW5rbm93biB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvblByb2Nlc3Nvcj8uc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgY29uZmlndXJhdGlvblByb2Nlc3NvciwgZXhlY3V0YWJsZS5pbnB1dERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlUHJvY2Vzc29yU2NyaXB0KFxuICAgIHJlcXVlc3Q6IEZsb3dTdGF0ZSxcbiAgICBjb25maWd1cmF0aW9uUHJvY2Vzc29yOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICAgIGlucHV0RGF0YTogdW5rbm93bixcbiAgKTogdW5rbm93biB7XG4gICAgbGV0IGZ1bmN0aW9uVG9FeGVjdXRlID0gdGhpcy5leGVjdXRlZEZ1bmN0aW9uc1tjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdO1xuICAgIGlmICghZnVuY3Rpb25Ub0V4ZWN1dGUpIHtcbiAgICAgIGZ1bmN0aW9uVG9FeGVjdXRlID0gbmV3IEZ1bmN0aW9uKGAke2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3Iuc2NyaXB0fVxcbnJldHVybiB0cmFuc2Zvcm07YCkoKTtcbiAgICAgIHRoaXMuZXhlY3V0ZWRGdW5jdGlvbnNbY29uZmlndXJhdGlvblByb2Nlc3Nvci5hcGlOYW1lXSA9IGZ1bmN0aW9uVG9FeGVjdXRlO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvblRvRXhlY3V0ZSh7XG4gICAgICByZXF1ZXN0LFxuICAgICAgaW5wdXREYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJlcXVlc3RJZChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIHNlbGVjdG9yTmFtZTogc3RyaW5nLCBpbnB1dERhdGE/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbnB1dERhdGFIYXNoID0gVVVJRC5oZXgoSlNPTi5zdHJpbmdpZnkoaW5wdXREYXRhKSB8fCAnJykuc2xpY2UoMCwgOCk7XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke3NlbGVjdG9yTmFtZX0vJHtpbnB1dERhdGFIYXNofWA7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8gPSB7XG4gICAgICBhY3Rpb25zOiBbXSxcbiAgICAgIHNlbGVjdG9yczoge30sXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGFuZGFsb25lKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG5cbiAgICBjb25zdCBvd25lcklkID0gdGhpcy5nZXRPd25lcklkQnlTY29wZShVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSk7XG5cbiAgICByZXF1ZXN0LmFjdGlvbnM/LnB1c2goe1xuICAgICAgYXBpTmFtZTogJ1VQREFURV9QUklDRV9MSVNUJyxcbiAgICAgIG93bmVySWQsXG4gICAgICBpbnB1dERhdGE6IHt9LFxuICAgIH0pO1xuICAgIHJlcXVlc3QuYWN0aW9ucz8ucHVzaCh7XG4gICAgICBhcGlOYW1lOiAnVVBEQVRFX0FTU0VUX0lEUycsXG4gICAgICBvd25lcklkLFxuICAgICAgaW5wdXREYXRhOiB7fSxcbiAgICB9KTtcblxuICAgIHJlcXVlc3QuYWN0aW9ucz8ucHVzaCh7XG4gICAgICBhcGlOYW1lOiAnVVBEQVRFX0NPTlRFWFRfUFJPUEVSVElFUycsXG4gICAgICBvd25lcklkLFxuICAgICAgaW5wdXREYXRhOiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cbn1cbiJdfQ==
|
@@ -34,7 +34,7 @@ export class ProductComponent {
|
|
34
34
|
}
|
35
35
|
init$() {
|
36
36
|
let quoteDraft$;
|
37
|
-
if (this.flowInfoService.isLegacy) {
|
37
|
+
if (this.flowInfoService.isLegacy || !this.flowInfoService.isStateful) {
|
38
38
|
quoteDraft$ = this.quoteDraftService.quoteDraft$;
|
39
39
|
}
|
40
40
|
else {
|
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
92
92
|
type: Inject,
|
93
93
|
args: [FLOW_CUSTOMIZATION]
|
94
94
|
}] }]; } });
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JGLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixjQUFjLEVBQ2Qsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCxvQkFBMEMsRUFDMUMseUJBQW9ELEVBQ3BELGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ00sb0JBQXdDO1FBUmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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dUIsQ0FBQyxNQUFNOzswQkFlNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdW90ZURyYWZ0LCBVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENNU1ByZXZpZXdDb25maWcgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBGTE9XX0NVU1RPTUlaQVRJT04sXG4gIEZsb3dDdXN0b21pemF0aW9uLFxuICBGbG93SW5mb1NlcnZpY2UsXG4gIEZsb3dTdGF0ZVNlcnZpY2UsXG4gIEludGVncmF0aW9uU3RhdGUsXG4gIFF1b3RlRHJhZnRTZXJ2aWNlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1mbG93LXByb2R1Y3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RDb21wb25lbnQge1xuICBwdWJsaWMgY29uZmlnOiBDTVNQcmV2aWV3Q29uZmlnO1xuICBwdWJsaWMgdWlEZWZpbml0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlOiBDb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGluaXQkOiAoKSA9PiB0aGlzLmluaXQkKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9taXplVUkkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgcHJvZHVjdElkIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dCA/PyB7fTtcbiAgICBpZiAoIXByb2R1Y3RJZCB8fCAhdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VWlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXRVaURlZmluaXRpb24ocHJvZHVjdElkKS5waXBlKFxuICAgICAgbWFwKHVpRGVmaW5pdGlvbkNvbnRhaW5lciA9PiB7XG4gICAgICAgIGlmICh1aURlZmluaXRpb25Db250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5vdmVycmlkZVVJRGVmaW5pdGlvbih1aURlZmluaXRpb25Db250YWluZXIpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcXVvdGVEcmFmdCQ6IE9ic2VydmFibGU8UXVvdGVEcmFmdCB8IHVuZGVmaW5lZD47XG4gICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICBxdW90ZURyYWZ0JCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1b3RlRHJhZnQkID0gb2YodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHF1b3RlRHJhZnQkLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKHF1b3RlID0+IHtcbiAgICAgICAgY29uc3QgY29udGV4dFByb3BlcnRpZXMgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzO1xuICAgICAgICBjb25zdCBwcm9kdWN0SWQgPSBjb250ZXh0UHJvcGVydGllcy5wcm9kdWN0SWQ7XG5cbiAgICAgICAgaWYgKCFwcm9kdWN0SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBzdGFydCBjb25maWd1cmF0aW9uIGZvciAncHJvZHVjdElkID09IG51bGwnYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1b3RlKSB7XG4gICAgICAgICAgY29uc3Qgb2ZmZXJpbmdJZCA9IGNvbnRleHRQcm9wZXJ0aWVzLm9mZmVyaW5nSWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXQoeyBwcm9kdWN0SWQsIG9mZmVyaW5nSWQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaW5lSXRlbUlkID0gdGhpcy5nZXRMaW5lSXRlbUlkKHF1b3RlLCBwcm9kdWN0SWQsIGNvbnRleHRQcm9wZXJ0aWVzLmxpbmVJdGVtSWQpO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGVJdGVtID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGxpbmVJdGVtSWQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50U3RhdGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zZXRDb25maWd1cmFibGVSYW1wKGN1cnJlbnRTdGF0ZUl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBvZmZlcmluZ0lkIH0gPSBjdXJyZW50U3RhdGVJdGVtID8/IHt9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0KHsgcHJvZHVjdElkLCBvZmZlcmluZ0lkIH0pO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXN0b21pemVVSSQoKSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB1aURlZmluaXRpb24gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8udWlEZWZpbml0aW9uQ29udGFpbmVyPy5zb3VyY2U7XG4gICAgICAgIGlmICh1aURlZmluaXRpb24pIHtcbiAgICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbiQubmV4dCh1aURlZmluaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZHVjdCBkb2VzIG5vdCBoYXZlIENvbmZpZ3VyYXRpb24gVUknKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdGlhbGl6YXRpb25Qcm9wcykge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXRpYWxpemF0aW9uUHJvcHMuYXR0cmlidXRlc01hcCA9XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuc3RhdGUuZ3VpZGVkU2VsbGluZztcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLmluaXQkKCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmVJdGVtSWQocXVvdGU6IFF1b3RlRHJhZnQsIHByb2R1Y3RJZDogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBzZWFyY2ggYnkgbGluZUl0ZW1JZCBmaXJzdFxuICAgIGxldCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkuaWQgPT09IGxpbmVJdGVtSWQpPy5pZDtcblxuICAgIGlmICghaWQgJiYgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc1N0YW5kYWxvbmUpIHtcbiAgICAgIGlkID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkucHJvZHVjdElkID09PSBwcm9kdWN0SWQpPy5pZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaWQ7XG4gIH1cbn1cbiIsIjx2bC1jbXMtcHJldmlldyBbdWlEZWZpbml0aW9uXT1cIiRhbnkodWlEZWZpbml0aW9uJCB8IGFzeW5jKVwiIFtjb25maWddPVwiY29uZmlnXCI+PC92bC1jbXMtcHJldmlldz5cbiJdfQ==
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JGLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixjQUFjLEVBQ2Qsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCxvQkFBMEMsRUFDMUMseUJBQW9ELEVBQ3BELGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ00sb0JBQXdDO1FBUmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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a0JBTjVCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OzBCQWU1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1b3RlRHJhZnQsIFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ01TUHJldmlld0NvbmZpZyB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgQ29udGV4dFNlcnZpY2UsXG4gIEZMT1dfQ1VTVE9NSVpBVElPTixcbiAgRmxvd0N1c3RvbWl6YXRpb24sXG4gIEZsb3dJbmZvU2VydmljZSxcbiAgRmxvd1N0YXRlU2VydmljZSxcbiAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcHJvZHVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25maWc6IENNU1ByZXZpZXdDb25maWc7XG4gIHB1YmxpYyB1aURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaW5pdCQ6ICgpID0+IHRoaXMuaW5pdCQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21pemVVSSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQgfSA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0ID8/IHt9O1xuICAgIGlmICghcHJvZHVjdElkIHx8ICF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRVaURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldFVpRGVmaW5pdGlvbihwcm9kdWN0SWQpLnBpcGUoXG4gICAgICBtYXAodWlEZWZpbml0aW9uQ29udGFpbmVyID0+IHtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbkNvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLm92ZXJyaWRlVUlEZWZpbml0aW9uKHVpRGVmaW5pdGlvbkNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBxdW90ZURyYWZ0JDogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgdW5kZWZpbmVkPjtcbiAgICBpZiAodGhpcy5mbG93SW5mb1NlcnZpY2UuaXNMZWdhY3kgfHwgIXRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzU3RhdGVmdWwpIHtcbiAgICAgIHF1b3RlRHJhZnQkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JDtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVvdGVEcmFmdCQgPSBvZih1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gcXVvdGVEcmFmdCQucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAocXVvdGUgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0UHJvcGVydGllcyA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLnByb3BlcnRpZXM7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGNvbnRleHRQcm9wZXJ0aWVzLnByb2R1Y3RJZDtcblxuICAgICAgICBpZiAoIXByb2R1Y3RJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHN0YXJ0IGNvbmZpZ3VyYXRpb24gZm9yICdwcm9kdWN0SWQgPT0gbnVsbCdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVvdGUpIHtcbiAgICAgICAgICBjb25zdCBvZmZlcmluZ0lkID0gY29udGV4dFByb3BlcnRpZXMub2ZmZXJpbmdJZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCh7IHByb2R1Y3RJZCwgb2ZmZXJpbmdJZCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpbmVJdGVtSWQgPSB0aGlzLmdldExpbmVJdGVtSWQocXVvdGUsIHByb2R1Y3RJZCwgY29udGV4dFByb3BlcnRpZXMubGluZUl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZUl0ZW0gPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gbGluZUl0ZW1JZCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZUl0ZW0pIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnNldENvbmZpZ3VyYWJsZVJhbXAoY3VycmVudFN0YXRlSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG9mZmVyaW5nSWQgfSA9IGN1cnJlbnRTdGF0ZUl0ZW0gPz8ge307XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXQoeyBwcm9kdWN0SWQsIG9mZmVyaW5nSWQgfSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmN1c3RvbWl6ZVVJJCgpKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb25Db250YWluZXI/LnNvdXJjZTtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbikge1xuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uJC5uZXh0KHVpRGVmaW5pdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9kdWN0IGRvZXMgbm90IGhhdmUgQ29uZmlndXJhdGlvbiBVSScpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0aWFsaXphdGlvblByb3BzKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdGlhbGl6YXRpb25Qcm9wcy5hdHRyaWJ1dGVzTWFwID1cbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5zdGF0ZS5ndWlkZWRTZWxsaW5nO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UuaW5pdCQoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGluZUl0ZW1JZChxdW90ZTogUXVvdGVEcmFmdCwgcHJvZHVjdElkOiBzdHJpbmcsIGxpbmVJdGVtSWQ/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIHNlYXJjaCBieSBsaW5lSXRlbUlkIGZpcnN0XG4gICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW1JZCk/LmlkO1xuXG4gICAgaWYgKCFpZCAmJiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzU3RhbmRhbG9uZSkge1xuICAgICAgaWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5wcm9kdWN0SWQgPT09IHByb2R1Y3RJZCk/LmlkO1xuICAgIH1cblxuICAgIHJldHVybiBpZDtcbiAgfVxufVxuIiwiPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwiJGFueSh1aURlZmluaXRpb24kIHwgYXN5bmMpXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3ZsLWNtcy1wcmV2aWV3PlxuIl19
|
@@ -127,13 +127,13 @@ export class FlowRouterService {
|
|
127
127
|
let updateContext$;
|
128
128
|
if (this.flowInfoService.isLegacy) {
|
129
129
|
updateContext$ = of(undefined).pipe(tap(() => {
|
130
|
-
this.contextService.update({ properties: { productId, lineItemId } });
|
130
|
+
this.contextService.update({ properties: { productId, lineItemId: lineItemId ?? '' } });
|
131
131
|
}));
|
132
132
|
}
|
133
133
|
else {
|
134
134
|
updateContext$ = this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'UPDATE_CONTEXT_PROPERTIES', {
|
135
135
|
productId,
|
136
|
-
lineItemId,
|
136
|
+
lineItemId: lineItemId ?? '',
|
137
137
|
});
|
138
138
|
}
|
139
139
|
updateContext$
|
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
184
184
|
type: Injectable,
|
185
185
|
args: [{ providedIn: 'root' }]
|
186
186
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ContextService }, { type: i2.IntegrationState }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }]; } });
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9zZXJ2aWNlcy9mbG93LXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFHZCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixlQUFlLEVBRWYsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBSXRELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUxsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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bXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgRXZlbnQsXG4gIE5hdmlnYXRpb25DYW5jZWwsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25FcnJvcixcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBQYXJhbXMsXG4gIFJvdXRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNhbGVzZm9yY2VJZFV0aWxzLCBVSVRlbXBsYXRlVHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0FjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIEZsb3dJbmZvU2VydmljZSwgRmxvd1N0YXRlU2VydmljZSwgSW50ZWdyYXRpb25TdGF0ZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSb3V0ZVdpdGhJZCB9IGZyb20gJy4uL3R5cGVzL3JvdXRlLnR5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGbG93Um91dGVyU2VydmljZSB7XG4gIHByaXZhdGUgcm91dGVDaGFuZ2UkOiBPYnNlcnZhYmxlPEV2ZW50PjtcbiAgcHJpdmF0ZSBsYXN0Q2hpbGRQYXJhbXMkOiBPYnNlcnZhYmxlPFBhcmFtcz47XG4gIHByaXZhdGUgbGFzdENoaWxkUm91dGUkOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+O1xuICBwcml2YXRlIHVybEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnJvdXRlQ2hhbmdlJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgdGhpcy5sYXN0Q2hpbGRQYXJhbXMkID0gdGhpcy53YXRjaExhc3RDaGlsZFBhcmFtcyQodGhpcy5yb3V0ZSkucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldExhc3RDaGlsZFBhcmFtcyh0aGlzLnJvdXRlLnNuYXBzaG90KSksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG4gICAgdGhpcy5sYXN0Q2hpbGRSb3V0ZSQgPSB0aGlzLndhdGNoTGFzdENoaWxkUm91dGUkKHRoaXMucm91dGUpLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcblxuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihcbiAgICAgICAgZSA9PlxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHxcbiAgICAgICAgICBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcixcbiAgICAgICksXG4gICAgICBtYXAoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG5cbiAgICB0aGlzLnJvdXRlQ2hhbmdlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cmxIaXN0b3J5LnB1c2godGhpcy5yb3V0ZXIudXJsKTtcblxuICAgICAgLy8gQ2xvc2UgR3VpZGVkIFNlbGxpbmcgd2hlbiB1c2VyIG5hdmlnYXRlcyB0byBhbm90aGVyIGZsb3cgcGFnZVxuICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLmRpc3BhdGNoKEZsb3dBY3Rpb24uQ2xvc2VHdWlkZWRTZWxsaW5nKHsga2VlcFN0YXRlOiB0cnVlIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGbG93Um9vdFJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGF0aCA9IFsuLi5yb3V0ZS5wYXRoRnJvbVJvb3RdO1xuXG4gICAgd2hpbGUgKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLnBvcCgpO1xuXG4gICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKChwYXJlbnQucm91dGVDb25maWcgYXMgUm91dGVXaXRoSWQpPy5pZCA9PT0gVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSkge1xuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGbG93Um9vdFBhdGgocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvb3RSb3V0ZSA9IHRoaXMuZ2V0Rmxvd1Jvb3RSb3V0ZShyb3V0ZSk7XG4gICAgaWYgKCFyb290Um91dGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoID0gcm9vdFJvdXRlLnBhdGhGcm9tUm9vdFxuICAgICAgLm1hcChyID0+IHIudXJsWzBdKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiAnLycgKyBwYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCByb3V0ZSQoKTogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90PiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoaWxkUm91dGUkO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMkKCk6IE9ic2VydmFibGU8UGFyYW1zPiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoaWxkUGFyYW1zJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1zKCk6IFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdENoaWxkUGFyYW1zKHRoaXMucm91dGUuc25hcHNob3QpO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGUocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TnRoQ2hpbGRSb3V0ZSA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUsIGluZGV4OiBudW1iZXIpOiBBY3RpdmF0ZWRSb3V0ZSA9PiB7XG4gICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TnRoQ2hpbGRSb3V0ZShyb3V0ZS5maXJzdENoaWxkLCBpbmRleCAtIDEpIDogcm91dGU7XG4gIH07XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlU25hcHNob3QgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdChyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlO1xuICB9O1xuXG4gIHB1YmxpYyB3YXRjaExhc3RDaGlsZFJvdXRlJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZUNoYW5nZSQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHJvdXRlLnNuYXBzaG90KSkpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRMYXN0Q2hpbGRQYXJhbXMgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQYXJhbXMgPT4ge1xuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXRMYXN0Q2hpbGRQYXJhbXMocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZS5wYXJhbXM7XG4gIH07XG5cbiAgcHVibGljIHdhdGNoTGFzdENoaWxkUGFyYW1zJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPFBhcmFtcz4gPT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlQ2hhbmdlJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldExhc3RDaGlsZFBhcmFtcyhyb3V0ZS5zbmFwc2hvdCkpKTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0Rmxvd1N1YnBhdGgkID0gKCk6IE9ic2VydmFibGU8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGUkLnBpcGUoXG4gICAgICBtYXAocm91dGUgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSByb3V0ZS51cmwuam9pbignLycpO1xuICAgICAgICBjb25zdCBmbG93Um9vdFVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlKTtcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKGZsb3dSb290VXJsLCAnJyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdwcm9kdWN0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhcnRSb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdjYXJ0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhdGFsb2dSb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdjYXRhbG9nJykpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Fzc2V0c1JvdXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U3VicGF0aCQoKS5waXBlKG1hcCh1cmwgPT4gdXJsLnN0YXJ0c1dpdGgoJ2Fzc2V0cycpKSk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVCYWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZVcmwgPSB0aGlzLnVybEhpc3RvcnlbdGhpcy51cmxIaXN0b3J5Lmxlbmd0aCAtIDJdO1xuXG4gICAgaWYgKHByZXZVcmwpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocHJldlVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG8ocGF0aDogc3RyaW5nLCBwcm9kdWN0SWQ/OiBzdHJpbmcsIGxpbmVJdGVtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocGF0aCA9PT0gJ3Nob3BwaW5nLWNhcnQnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKTtcbiAgICB9IGVsc2UgaWYgKHBhdGggPT09ICdjYXRhbG9nJykge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvQ2F0YWxvZygpO1xuICAgIH0gZWxzZSBpZiAocGF0aCA9PT0gJ2Fzc2V0cycpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0Fzc2V0cygpO1xuICAgIH0gZWxzZSBpZiAocGF0aCA9PT0gJ3Byb2R1Y3QnICYmIHByb2R1Y3RJZCkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkLCBsaW5lSXRlbUlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1Byb2R1Y3RDb25maWd1cmF0aW9uKHByb2R1Y3RJZDogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHVwZGF0ZUNvbnRleHQkO1xuICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5pc0xlZ2FjeSkge1xuICAgICAgdXBkYXRlQ29udGV4dCQgPSBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoeyBwcm9wZXJ0aWVzOiB7IHByb2R1Y3RJZCwgbGluZUl0ZW1JZCB9IH0pO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVwZGF0ZUNvbnRleHQkID0gdGhpcy5mbG93U3RhdGVTZXJ2aWNlLmRpc3BhdGNoJChVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ1VQREFURV9DT05URVhUX1BST1BFUlRJRVMnLCB7XG4gICAgICAgIHByb2R1Y3RJZCxcbiAgICAgICAgbGluZUl0ZW1JZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB1cGRhdGVDb250ZXh0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm91dGVTbmFwc2hvdCA9IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCh0aGlzLnJvdXRlLnNuYXBzaG90KTtcbiAgICAgICAgICBjb25zdCBmbG93Um91dGVVcmwgPSB0aGlzLmdldEZsb3dSb290UGF0aChyb3V0ZVNuYXBzaG90KTtcblxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmbG93Um91dGVVcmwsICdwcm9kdWN0J10sIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IC4uLnJvdXRlU25hcHNob3QucXVlcnlQYXJhbXMsIHByb2R1Y3RJZCB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gICAgY29uc3QgZmxvd1JvdXRlVXJsID0gdGhpcy5nZXRGbG93Um9vdFBhdGgocm91dGVTbmFwc2hvdCk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZmxvd1JvdXRlVXJsLCAnY2FydCddLCB7IHF1ZXJ5UGFyYW1zOiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9DYXRhbG9nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gICAgY29uc3QgZmxvd1JvdXRlVXJsID0gdGhpcy5nZXRGbG93Um9vdFBhdGgocm91dGVTbmFwc2hvdCk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZmxvd1JvdXRlVXJsLCAnY2F0YWxvZyddLCB7IHF1ZXJ5UGFyYW1zOiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9Bc3NldHMoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVTbmFwc2hvdCA9IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCh0aGlzLnJvdXRlLnNuYXBzaG90KTtcbiAgICBjb25zdCBmbG93Um91dGVVcmwgPSB0aGlzLmdldEZsb3dSb290UGF0aChyb3V0ZVNuYXBzaG90KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmbG93Um91dGVVcmwsICdhc3NldHMnXSwgeyBxdWVyeVBhcmFtczogcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXJyb3JQYWdlJChtZXNzYWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGZhbHNlPiB7XG4gICAgY29uc3Qgcm91dGVTbmFwc2hvdCA9IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCh0aGlzLnJvdXRlLnNuYXBzaG90KTtcbiAgICBjb25zdCBmbG93Um91dGVVcmwgPSB0aGlzLmdldEZsb3dSb290UGF0aChyb3V0ZVNuYXBzaG90KTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMucm91dGVyLm5hdmlnYXRlKFtmbG93Um91dGVVcmwsICc0MDQnXSwgeyBzdGF0ZTogeyBtZXNzYWdlIH0sIHJlcGxhY2VVcmw6IHRydWUgfSkpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gZmFsc2UpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3dpdGNoT2JqZWN0KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZSh0aGlzLnJvdXRlKTtcblxuICAgIGNvbnN0IG9iak5hbWUgPSBTYWxlc2ZvcmNlSWRVdGlscy5nZXRTZk9iamVjdE5hbWVCeUlkKGlkKTtcblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgcXVvdGVJZDogb2JqTmFtZSA9PT0gJ1F1b3RlJyA/IGlkIDogdW5kZWZpbmVkLFxuICAgICAgYWNjb3VudElkOiBvYmpOYW1lID09PSAnQWNjb3VudCcgPyBpZCA6IHVuZGVmaW5lZCxcbiAgICAgIG9yZGVySWQ6IG9iak5hbWUgPT09ICdPcmRlcicgPyBpZCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlbGF0aXZlVG86IHJvdXRlLCBxdWVyeVBhcmFtczogeyAuLi5yb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zLCAuLi5xdWVyeVBhcmFtcyB9IH0pO1xuICB9XG59XG4iXX0=
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9zZXJ2aWNlcy9mbG93LXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFHZCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixlQUFlLEVBRWYsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBSXRELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUxsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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dCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBFdmVudCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFBhcmFtcyxcbiAgUm91dGVyLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2FsZXNmb3JjZUlkVXRpbHMsIFVJVGVtcGxhdGVUeXBlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBGbG93QWN0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2Ntcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0luZm9TZXJ2aWNlLCBGbG93U3RhdGVTZXJ2aWNlLCBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWRUxPQ0VfRkxPV19ST09UX1JPVVRFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJvdXRlV2l0aElkIH0gZnJvbSAnLi4vdHlwZXMvcm91dGUudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZsb3dSb3V0ZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByb3V0ZUNoYW5nZSQ6IE9ic2VydmFibGU8RXZlbnQ+O1xuICBwcml2YXRlIGxhc3RDaGlsZFBhcmFtcyQ6IE9ic2VydmFibGU8UGFyYW1zPjtcbiAgcHJpdmF0ZSBsYXN0Q2hpbGRSb3V0ZSQ6IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGVTbmFwc2hvdD47XG4gIHByaXZhdGUgdXJsSGlzdG9yeTogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGludGVncmF0aW9uU3RhdGU6IEludGVncmF0aW9uU3RhdGUsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMucm91dGVDaGFuZ2UkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG5cbiAgICB0aGlzLmxhc3RDaGlsZFBhcmFtcyQgPSB0aGlzLndhdGNoTGFzdENoaWxkUGFyYW1zJCh0aGlzLnJvdXRlKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHRoaXMuZ2V0TGFzdENoaWxkUGFyYW1zKHRoaXMucm91dGUuc25hcHNob3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgICB0aGlzLmxhc3RDaGlsZFJvdXRlJCA9IHRoaXMud2F0Y2hMYXN0Q2hpbGRSb3V0ZSQodGhpcy5yb3V0ZSkucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCkpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICBlID0+XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCB8fFxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHxcbiAgICAgICAgICBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yLFxuICAgICAgKSxcbiAgICAgIG1hcChlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcblxuICAgIHRoaXMucm91dGVDaGFuZ2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVybEhpc3RvcnkucHVzaCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgICAvLyBDbG9zZSBHdWlkZWQgU2VsbGluZyB3aGVuIHVzZXIgbmF2aWdhdGVzIHRvIGFub3RoZXIgZmxvdyBwYWdlXG4gICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuZGlzcGF0Y2goRmxvd0FjdGlvbi5DbG9zZUd1aWRlZFNlbGxpbmcoeyBrZWVwU3RhdGU6IHRydWUgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZsb3dSb290Um91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXRoID0gWy4uLnJvdXRlLnBhdGhGcm9tUm9vdF07XG5cbiAgICB3aGlsZSAocGF0aC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGgucG9wKCk7XG5cbiAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHBhcmVudC5yb3V0ZUNvbmZpZyBhcyBSb3V0ZVdpdGhJZCk/LmlkID09PSBWRUxPQ0VfRkxPV19ST09UX1JPVVRFKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGdldEZsb3dSb290UGF0aChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9vdFJvdXRlID0gdGhpcy5nZXRGbG93Um9vdFJvdXRlKHJvdXRlKTtcbiAgICBpZiAoIXJvb3RSb3V0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSByb290Um91dGUucGF0aEZyb21Sb290XG4gICAgICAubWFwKHIgPT4gci51cmxbMF0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbignLycpO1xuXG4gICAgcmV0dXJuICcvJyArIHBhdGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJvdXRlJCgpOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hpbGRSb3V0ZSQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtcyQoKTogT2JzZXJ2YWJsZTxQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hpbGRQYXJhbXMkO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXN0Q2hpbGRQYXJhbXModGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdENoaWxkUm91dGUgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogQWN0aXZhdGVkUm91dGUgPT4ge1xuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZShyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlO1xuICB9O1xuXG4gIHB1YmxpYyBnZXROdGhDaGlsZFJvdXRlID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgaW5kZXg6IG51bWJlcik6IEFjdGl2YXRlZFJvdXRlID0+IHtcbiAgICBpZiAoaW5kZXggPD0gMCkge1xuICAgICAgcmV0dXJuIHJvdXRlO1xuICAgIH1cblxuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXROdGhDaGlsZFJvdXRlKHJvdXRlLmZpcnN0Q2hpbGQsIGluZGV4IC0gMSkgOiByb3V0ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPT4ge1xuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHJvdXRlLmZpcnN0Q2hpbGQpIDogcm91dGU7XG4gIH07XG5cbiAgcHVibGljIHdhdGNoTGFzdENoaWxkUm91dGUkID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGVTbmFwc2hvdD4gPT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlQ2hhbmdlJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3Qocm91dGUuc25hcHNob3QpKSk7XG4gIH07XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFBhcmFtcyA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFBhcmFtcyA9PiB7XG4gICAgcmV0dXJuIHJvdXRlLmZpcnN0Q2hpbGQgPyB0aGlzLmdldExhc3RDaGlsZFBhcmFtcyhyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlLnBhcmFtcztcbiAgfTtcblxuICBwdWJsaWMgd2F0Y2hMYXN0Q2hpbGRQYXJhbXMkID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8UGFyYW1zPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVDaGFuZ2UkLnBpcGUobWFwKCgpID0+IHRoaXMuZ2V0TGFzdENoaWxkUGFyYW1zKHJvdXRlLnNuYXBzaG90KSkpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRGbG93U3VicGF0aCQgPSAoKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZSQucGlwZShcbiAgICAgIG1hcChyb3V0ZSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IHJvdXRlLnVybC5qb2luKCcvJyk7XG4gICAgICAgIGNvbnN0IGZsb3dSb290VXJsID0gdGhpcy5nZXRGbG93Um9vdFBhdGgocm91dGUpO1xuICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoZmxvd1Jvb3RVcmwsICcnKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH07XG5cbiAgcHVibGljIGlzQ29uZmlndXJhdGlvblJvdXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U3VicGF0aCQoKS5waXBlKG1hcCh1cmwgPT4gdXJsLnN0YXJ0c1dpdGgoJ3Byb2R1Y3QnKSkpO1xuICB9XG5cbiAgcHVibGljIGlzQ2FydFJvdXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U3VicGF0aCQoKS5waXBlKG1hcCh1cmwgPT4gdXJsLnN0YXJ0c1dpdGgoJ2NhcnQnKSkpO1xuICB9XG5cbiAgcHVibGljIGlzQ2F0YWxvZ1JvdXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U3VicGF0aCQoKS5waXBlKG1hcCh1cmwgPT4gdXJsLnN0YXJ0c1dpdGgoJ2NhdGFsb2cnKSkpO1xuICB9XG5cbiAgcHVibGljIGlzQXNzZXRzUm91dGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEZsb3dTdWJwYXRoJCgpLnBpcGUobWFwKHVybCA9PiB1cmwuc3RhcnRzV2l0aCgnYXNzZXRzJykpKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZUJhY2soKTogdm9pZCB7XG4gICAgY29uc3QgcHJldlVybCA9IHRoaXMudXJsSGlzdG9yeVt0aGlzLnVybEhpc3RvcnkubGVuZ3RoIC0gMl07XG5cbiAgICBpZiAocHJldlVybCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChwcmV2VXJsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUbyhwYXRoOiBzdHJpbmcsIHByb2R1Y3RJZD86IHN0cmluZywgbGluZUl0ZW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChwYXRoID09PSAnc2hvcHBpbmctY2FydCcpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgIH0gZWxzZSBpZiAocGF0aCA9PT0gJ2NhdGFsb2cnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9DYXRhbG9nKCk7XG4gICAgfSBlbHNlIGlmIChwYXRoID09PSAnYXNzZXRzJykge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvQXNzZXRzKCk7XG4gICAgfSBlbHNlIGlmIChwYXRoID09PSAncHJvZHVjdCcgJiYgcHJvZHVjdElkKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9Qcm9kdWN0Q29uZmlndXJhdGlvbihwcm9kdWN0SWQsIGxpbmVJdGVtSWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkOiBzdHJpbmcsIGxpbmVJdGVtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgdXBkYXRlQ29udGV4dCQ7XG4gICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICB1cGRhdGVDb250ZXh0JCA9IG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgcHJvZHVjdElkLCBsaW5lSXRlbUlkOiBsaW5lSXRlbUlkID8/ICcnIH0gfSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlQ29udGV4dCQgPSB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZGlzcGF0Y2gkKFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FLCAnVVBEQVRFX0NPTlRFWFRfUFJPUEVSVElFUycsIHtcbiAgICAgICAgcHJvZHVjdElkLFxuICAgICAgICBsaW5lSXRlbUlkOiBsaW5lSXRlbUlkID8/ICcnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZUNvbnRleHQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgICAgICAgIGNvbnN0IGZsb3dSb3V0ZVVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlU25hcHNob3QpO1xuXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zsb3dSb3V0ZVVybCwgJ3Byb2R1Y3QnXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgLi4ucm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcywgcHJvZHVjdElkIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVTbmFwc2hvdCA9IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCh0aGlzLnJvdXRlLnNuYXBzaG90KTtcbiAgICBjb25zdCBmbG93Um91dGVVcmwgPSB0aGlzLmdldEZsb3dSb290UGF0aChyb3V0ZVNuYXBzaG90KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmbG93Um91dGVVcmwsICdjYXJ0J10sIHsgcXVlcnlQYXJhbXM6IHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXMgfSk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0NhdGFsb2coKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVTbmFwc2hvdCA9IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdCh0aGlzLnJvdXRlLnNuYXBzaG90KTtcbiAgICBjb25zdCBmbG93Um91dGVVcmwgPSB0aGlzLmdldEZsb3dSb290UGF0aChyb3V0ZVNuYXBzaG90KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmbG93Um91dGVVcmwsICdjYXRhbG9nJ10sIHsgcXVlcnlQYXJhbXM6IHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXMgfSk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Fzc2V0cygpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgIGNvbnN0IGZsb3dSb3V0ZVVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlU25hcHNob3QpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zsb3dSb3V0ZVVybCwgJ2Fzc2V0cyddLCB7IHF1ZXJ5UGFyYW1zOiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dFcnJvclBhZ2UkKG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8ZmFsc2U+IHtcbiAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgIGNvbnN0IGZsb3dSb3V0ZVVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlU25hcHNob3QpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zsb3dSb3V0ZVVybCwgJzQwNCddLCB7IHN0YXRlOiB7IG1lc3NhZ2UgfSwgcmVwbGFjZVVybDogdHJ1ZSB9KSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzd2l0Y2hPYmplY3QoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgY29uc3Qgb2JqTmFtZSA9IFNhbGVzZm9yY2VJZFV0aWxzLmdldFNmT2JqZWN0TmFtZUJ5SWQoaWQpO1xuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICBxdW90ZUlkOiBvYmpOYW1lID09PSAnUXVvdGUnID8gaWQgOiB1bmRlZmluZWQsXG4gICAgICBhY2NvdW50SWQ6IG9iak5hbWUgPT09ICdBY2NvdW50JyA/IGlkIDogdW5kZWZpbmVkLFxuICAgICAgb3JkZXJJZDogb2JqTmFtZSA9PT0gJ09yZGVyJyA/IGlkIDogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcmVsYXRpdmVUbzogcm91dGUsIHF1ZXJ5UGFyYW1zOiB7IC4uLnJvdXRlU25hcHNob3QucXVlcnlQYXJhbXMsIC4uLnF1ZXJ5UGFyYW1zIH0gfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -82,22 +82,23 @@ export class FlowService {
|
|
82
82
|
return this.legacyApplyConfiguration();
|
83
83
|
}
|
84
84
|
else {
|
85
|
-
return this.configurationStateService
|
86
|
-
.saveConfiguration('', true)
|
87
|
-
.pipe(switchMap(() => this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'UPDATE_ASSET_IDS')));
|
85
|
+
return this.configurationStateService.saveConfiguration('', true).pipe(switchMap(() => this.configurationStateService.cancelConfiguration()), switchMap(() => this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'UPDATE_ASSET_IDS')));
|
88
86
|
}
|
89
87
|
}), tap(() => {
|
90
88
|
this.configurationService.hasUnsavedChanges = false;
|
91
89
|
this.flowRouterService.navigateToShoppingCart();
|
92
90
|
}), takeUntil(this.cleanup$))
|
93
91
|
.subscribe();
|
94
|
-
this.
|
92
|
+
this.updateFlowParams();
|
95
93
|
}
|
96
|
-
|
94
|
+
updateFlowParams() {
|
97
95
|
this.flowRouterService
|
98
96
|
.getFlowSubpath$()
|
99
97
|
.pipe(map(path => path.split('/')?.[0]), takeUntil(this.cleanup$))
|
100
98
|
.subscribe(flowPath => this.integrationState.patchState({ flowPath }));
|
99
|
+
this.flowRouterService.route$
|
100
|
+
.pipe(map(path => path.queryParams['productId']), takeUntil(this.cleanup$))
|
101
|
+
.subscribe(productId => this.integrationState.patchState({ productId }));
|
101
102
|
}
|
102
103
|
legacyApplyConfiguration() {
|
103
104
|
const quoteDraft = this.quoteDraftService.quoteDraft;
|
@@ -129,4 +130,4 @@ FlowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
|
|
129
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService, decorators: [{
|
130
131
|
type: Injectable
|
131
132
|
}], ctorParameters: function () { return [{ type: i1.IntegrationState }, { type: i2.FlowRouterService }, { type: i3.QuoteDraftService }, { type: i3.ConfigurationService }, { type: i3.ConfigurationStateService }, { type: i4.FlowDialogService }, { type: i3.FlowConfigurationService }, { type: i3.FlowInfoService }, { type: i3.FlowStateService }]; } });
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3NlcnZpY2VzL2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRzFELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLHlCQUFvRCxFQUNwRCxpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGVBQWdDLEVBQ2hDLGdCQUFrQztRQVJsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsc0JB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QUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzt3R0EvSlUsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5lSXRlbSwgVUlUZW1wbGF0ZVR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEZsb3dBY3Rpb24sIEludGVncmF0aW9uU3RhdGUgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLFxuICBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gIEZsb3dJbmZvU2VydmljZSxcbiAgRmxvd1N0YXRlU2VydmljZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXJvdXRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjbGVhbnVwJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgZmxvd1JvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlU2VydmljZTogQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dEaWFsb2dTZXJ2aWNlOiBGbG93RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uU2VydmljZTogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJDx7IGxpbmVJdGVtSWQ/OiBzdHJpbmc7IHByb2R1Y3RJZD86IHN0cmluZyB9PihGbG93QWN0aW9uLkZMT1dfQ09ORklHVVJFX1BST0RVQ1QpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHBheWxvYWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9XG4gICAgICAgICAgICBwYXlsb2FkLnByb2R1Y3RJZCA/P1xuICAgICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5pZCA9PT0gcGF5bG9hZC5saW5lSXRlbUlkKT8ucHJvZHVjdElkO1xuXG4gICAgICAgICAgaWYgKHByb2R1Y3RJZCkge1xuICAgICAgICAgICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5uYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkLCBwYXlsb2FkLmxpbmVJdGVtSWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJQYXJhbWV0ZXIgJ3Byb2R1Y3RJZCcgaXMgbmVlZGVkIHRvIHN0YXJ0IGNvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJDx7IGlkOiBzdHJpbmcgfT4oRmxvd0FjdGlvbi5GTE9XX1NXSVRDSF9PQkpFQ1QpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHBheWxvYWQgPT4ge1xuICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2Uuc3dpdGNoT2JqZWN0KHBheWxvYWQuaWQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfQkFDSylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLmNhbmNlbENvbmZpZ3VyYXRpb24oKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmZsb3dSb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlQmFjaygpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE8pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHBheWxvYWQgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLmNhbmNlbENvbmZpZ3VyYXRpb24oKS5waXBlKG1hcCgoKSA9PiBwYXlsb2FkKSkpLFxuICAgICAgICB0YXAocGF5bG9hZCA9PiB7XG4gICAgICAgICAgaWYgKHBheWxvYWQucGF0aCA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuZGlzcGF0Y2goRmxvd0FjdGlvbi5Db25maWd1cmVQcm9kdWN0QWN0aW9uKHBheWxvYWQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5uYXZpZ2F0ZVRvKHBheWxvYWQucGF0aCwgcGF5bG9hZC5wcm9kdWN0SWQsIHBheWxvYWQubGluZUl0ZW1JZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLk9QRU5fRElBTE9HKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChwYXlsb2FkID0+IHRoaXMuZmxvd0RpYWxvZ1NlcnZpY2Uuc2hvd0RpYWxvZyhwYXlsb2FkLmRpYWxvZykucGlwZSh0YWtlKDEpKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZGlhbG9nUmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnBhdGNoU3RhdGUoeyBkaWFsb2dSZXN1bHQgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZVxuICAgICAgLmxpc3RlbiQoRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0cpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb0NhdGFsb2coKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZVxuICAgICAgLmxpc3RlbiQoRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWdhY3lBcHBseUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU2VydmljZVxuICAgICAgICAgICAgICAuc2F2ZUNvbmZpZ3VyYXRpb24oJycsIHRydWUpXG4gICAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZGlzcGF0Y2gkKFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FLCAnVVBEQVRFX0FTU0VUX0lEUycpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5uYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUZsb3dQYXRoKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZsb3dQYXRoKCk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2VcbiAgICAgIC5nZXRGbG93U3VicGF0aCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChwYXRoID0+IHBhdGguc3BsaXQoJy8nKT8uWzBdKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbG93UGF0aCA9PiB0aGlzLmludGVncmF0aW9uU3RhdGUucGF0Y2hTdGF0ZSh7IGZsb3dQYXRoIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgbGVnYWN5QXBwbHlDb25maWd1cmF0aW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFNuYXBzaG90KCk7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQgfHwgIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc05ld0xpbmVJdGVtID0gcXVvdGVEcmFmdC5jdXJyZW50U3RhdGUuZXZlcnkobGkgPT4gbGkuaWQgIT09IGxpbmVJdGVtLmlkKTtcbiAgICBjb25zdCBhc3NldElkID0gbGluZUl0ZW0uYXNzZXRJZCB8fCBsaW5lSXRlbS5vcGVuT3JkZXJMaW5lSXRlbUlkO1xuXG4gICAgbGV0IHVwZGF0ZWRTdGF0ZTogTGluZUl0ZW1bXTtcbiAgICBpZiAoaXNOZXdMaW5lSXRlbSkge1xuICAgICAgdXBkYXRlZFN0YXRlID0gWy4uLnF1b3RlRHJhZnQuY3VycmVudFN0YXRlLCBsaW5lSXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHF1b3RlRHJhZnQuY3VycmVudFN0YXRlLm1hcChsaSA9PiAobGkuaWQgPT09IGxpbmVJdGVtLmlkID8gbGluZUl0ZW0gOiBsaSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHsgLi4ucXVvdGVEcmFmdCwgY3VycmVudFN0YXRlOiB1cGRhdGVkU3RhdGUgfSkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmIChhc3NldElkKSB7XG4gICAgICAgICAgY29uc3QgbW9kaWZpZWRBc3NldHMgPSB0aGlzLmludGVncmF0aW9uU3RhdGUuc3RhdGUubW9kaWZpZWRBc3NldHMgPz8ge307XG4gICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgbW9kaWZpZWRBc3NldHM6IHsgLi4ubW9kaWZpZWRBc3NldHMsIFthc3NldElkXTogdHJ1ZSB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3NlcnZpY2VzL2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRzFELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLHlCQUFvRCxFQUNwRCxpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGVBQWdDLEVBQ2hDLGdCQUFrQztRQVJsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsc0JB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Q0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2pHLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7b0JBQy9CLGNBQWMsRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFO2lCQUN2RCxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzt3R0F2S1UsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5lSXRlbSwgVUlUZW1wbGF0ZVR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEZsb3dBY3Rpb24sIEludGVncmF0aW9uU3RhdGUgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLFxuICBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gIEZsb3dJbmZvU2VydmljZSxcbiAgRmxvd1N0YXRlU2VydmljZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXJvdXRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjbGVhbnVwJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgZmxvd1JvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlU2VydmljZTogQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dEaWFsb2dTZXJ2aWNlOiBGbG93RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uU2VydmljZTogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJDx7IGxpbmVJdGVtSWQ/OiBzdHJpbmc7IHByb2R1Y3RJZD86IHN0cmluZyB9PihGbG93QWN0aW9uLkZMT1dfQ09ORklHVVJFX1BST0RVQ1QpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHBheWxvYWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9XG4gICAgICAgICAgICBwYXlsb2FkLnByb2R1Y3RJZCA/P1xuICAgICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5pZCA9PT0gcGF5bG9hZC5saW5lSXRlbUlkKT8ucHJvZHVjdElkO1xuXG4gICAgICAgICAgaWYgKHByb2R1Y3RJZCkge1xuICAgICAgICAgICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5uYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkLCBwYXlsb2FkLmxpbmVJdGVtSWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJQYXJhbWV0ZXIgJ3Byb2R1Y3RJZCcgaXMgbmVlZGVkIHRvIHN0YXJ0IGNvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJDx7IGlkOiBzdHJpbmcgfT4oRmxvd0FjdGlvbi5GTE9XX1NXSVRDSF9PQkpFQ1QpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHBheWxvYWQgPT4ge1xuICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2Uuc3dpdGNoT2JqZWN0KHBheWxvYWQuaWQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfQkFDSylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLmNhbmNlbENvbmZpZ3VyYXRpb24oKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmZsb3dSb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlQmFjaygpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE8pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHBheWxvYWQgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlLmNhbmNlbENvbmZpZ3VyYXRpb24oKS5waXBlKG1hcCgoKSA9PiBwYXlsb2FkKSkpLFxuICAgICAgICB0YXAocGF5bG9hZCA9PiB7XG4gICAgICAgICAgaWYgKHBheWxvYWQucGF0aCA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuZGlzcGF0Y2goRmxvd0FjdGlvbi5Db25maWd1cmVQcm9kdWN0QWN0aW9uKHBheWxvYWQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5uYXZpZ2F0ZVRvKHBheWxvYWQucGF0aCwgcGF5bG9hZC5wcm9kdWN0SWQsIHBheWxvYWQubGluZUl0ZW1JZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLk9QRU5fRElBTE9HKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChwYXlsb2FkID0+IHRoaXMuZmxvd0RpYWxvZ1NlcnZpY2Uuc2hvd0RpYWxvZyhwYXlsb2FkLmRpYWxvZykucGlwZSh0YWtlKDEpKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZGlhbG9nUmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnBhdGNoU3RhdGUoeyBkaWFsb2dSZXN1bHQgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZVxuICAgICAgLmxpc3RlbiQoRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0cpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb0NhdGFsb2coKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZVxuICAgICAgLmxpc3RlbiQoRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX1NIT1BQSU5HX0NBUlQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWdhY3lBcHBseUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU2VydmljZS5zYXZlQ29uZmlndXJhdGlvbignJywgdHJ1ZSkucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlndXJhdGlvblN0YXRlU2VydmljZS5jYW5jZWxDb25maWd1cmF0aW9uKCkpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93U3RhdGVTZXJ2aWNlLmRpc3BhdGNoJChVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ1VQREFURV9BU1NFVF9JRFMnKSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xlYW51cCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy51cGRhdGVGbG93UGFyYW1zKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZsb3dQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5mbG93Um91dGVyU2VydmljZVxuICAgICAgLmdldEZsb3dTdWJwYXRoJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHBhdGggPT4gcGF0aC5zcGxpdCgnLycpPy5bMF0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGZsb3dQYXRoID0+IHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5wYXRjaFN0YXRlKHsgZmxvd1BhdGggfSkpO1xuXG4gICAgdGhpcy5mbG93Um91dGVyU2VydmljZS5yb3V0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocGF0aCA9PiBwYXRoLnF1ZXJ5UGFyYW1zWydwcm9kdWN0SWQnXSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocHJvZHVjdElkID0+IHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5wYXRjaFN0YXRlKHsgcHJvZHVjdElkIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgbGVnYWN5QXBwbHlDb25maWd1cmF0aW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFNuYXBzaG90KCk7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQgfHwgIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc05ld0xpbmVJdGVtID0gcXVvdGVEcmFmdC5jdXJyZW50U3RhdGUuZXZlcnkobGkgPT4gbGkuaWQgIT09IGxpbmVJdGVtLmlkKTtcbiAgICBjb25zdCBhc3NldElkID0gbGluZUl0ZW0uYXNzZXRJZCB8fCBsaW5lSXRlbS5vcGVuT3JkZXJMaW5lSXRlbUlkO1xuXG4gICAgbGV0IHVwZGF0ZWRTdGF0ZTogTGluZUl0ZW1bXTtcbiAgICBpZiAoaXNOZXdMaW5lSXRlbSkge1xuICAgICAgdXBkYXRlZFN0YXRlID0gWy4uLnF1b3RlRHJhZnQuY3VycmVudFN0YXRlLCBsaW5lSXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHF1b3RlRHJhZnQuY3VycmVudFN0YXRlLm1hcChsaSA9PiAobGkuaWQgPT09IGxpbmVJdGVtLmlkID8gbGluZUl0ZW0gOiBsaSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHsgLi4ucXVvdGVEcmFmdCwgY3VycmVudFN0YXRlOiB1cGRhdGVkU3RhdGUgfSkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmIChhc3NldElkKSB7XG4gICAgICAgICAgY29uc3QgbW9kaWZpZWRBc3NldHMgPSB0aGlzLmludGVncmF0aW9uU3RhdGUuc3RhdGUubW9kaWZpZWRBc3NldHMgPz8ge307XG4gICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgbW9kaWZpZWRBc3NldHM6IHsgLi4ubW9kaWZpZWRBc3NldHMsIFthc3NldElkXTogdHJ1ZSB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
|