@messaia/cdk 14.0.0-rc30 → 14.0.0-rc31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/form-validators/core/validator.static.mjs +1 -1
- package/esm2020/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +4 -2
- package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +7 -5
- package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +4 -4
- package/esm2020/lib/form-validators/services/rx-form-group.mjs +8 -8
- package/esm2020/lib/form-validators/util/app-util.mjs +47 -28
- package/esm2020/lib/form-validators/util/config-provider.mjs +7 -5
- package/esm2020/lib/form-validators/util/form-provider.mjs +14 -11
- package/fesm2015/messaia-cdk.mjs +316 -286
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +314 -286
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/form-validators/services/rx-form-group.d.ts +1 -1
- package/lib/form-validators/util/app-util.d.ts +40 -2
- package/package.json +1 -1
|
@@ -72,4 +72,4 @@ export const AnnotationTypes = {
|
|
|
72
72
|
iban: 'iban',
|
|
73
73
|
updateOn: 'updateOn'
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnN0YXRpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9jb3JlL3ZhbGlkYXRvci5zdGF0aWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUE4QjtJQUN4RCxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsV0FBVztJQUN0QixTQUFTLEVBQUUsV0FBVztJQUN0QixTQUFTLEVBQUUsV0FBVztJQUN0QixTQUFTLEVBQUUsV0FBVztJQUN0QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsT0FBTztJQUNkLFlBQVksRUFBRSxjQUFjO0lBQzVCLEtBQUssRUFBRSxPQUFPO0lBQ2QsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsR0FBRyxFQUFFLEtBQUs7SUFDVixTQUFTLEVBQUUsV0FBVztJQUN0QixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsV0FBVztJQUN0QixVQUFVLEVBQUUsWUFBWTtJQUN4QixRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFLFlBQVk7SUFDeEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLElBQUksRUFBRSxNQUFNO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsR0FBRyxFQUFFLEtBQUs7SUFDVixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsRUFBRSxFQUFFLElBQUk7SUFDUixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEtBQUs7SUFDVixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixZQUFZLEVBQUUsY0FBYztJQUM1QixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osUUFBUSxFQUFFLFVBQVU7Q0FDckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBbm5vdGF0aW9uVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gIG51bWVyaWM6ICdudW1lcmljJyxcbiAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXG4gIG1pbkxlbmd0aDogJ21pbkxlbmd0aCcsXG4gIG1heExlbmd0aDogJ21heExlbmd0aCcsXG4gIG1pbk51bWJlcjogJ21pbk51bWJlcicsXG4gIG1heE51bWJlcjogJ21heE51bWJlcicsXG4gIHBhdHRlcm46ICdwYXR0ZXJuJyxcbiAgcGFzc3dvcmQ6ICdwYXNzd29yZCcsXG4gIGNvbXBhcmU6ICdjb21wYXJlJyxcbiAgbWluRGF0ZTogJ21pbkRhdGUnLFxuICBtYXhEYXRlOiAnbWF4RGF0ZScsXG4gIGFscGhhOiAnYWxwaGEnLFxuICBhbHBoYU51bWVyaWM6ICdhbHBoYU51bWVyaWMnLFxuICBlbWFpbDogJ2VtYWlsJyxcbiAgaGV4Q29sb3I6ICdoZXhDb2xvcicsXG4gIGxvd2VyQ2FzZTogJ2xvd2VyQ2FzZScsXG4gIHVybDogJ3VybCcsXG4gIHVwcGVyQ2FzZTogJ3VwcGVyQ2FzZScsXG4gIG5lc3RlZDogJ25lc3RlZCcsXG4gIHByb3BBcnJheTogJ3Byb3BBcnJheScsXG4gIHByb3BPYmplY3Q6ICdwcm9wT2JqZWN0JyxcbiAgY29udGFpbnM6ICdjb250YWlucycsXG4gIHJhbmdlOiAncmFuZ2UnLFxuICBjdXN0b206ICdjdXN0b20nLFxuICBkaWdpdDogXCJkaWdpdFwiLFxuICBjcmVkaXRDYXJkOiBcImNyZWRpdENhcmRcIixcbiAgdGltZTogXCJ0aW1lXCIsXG4gIGpzb246IFwianNvblwiLFxuICBncmVhdGVyVGhhbjogXCJncmVhdGVyVGhhblwiLFxuICBncmVhdGVyVGhhbkVxdWFsVG86IFwiZ3JlYXRlclRoYW5FcXVhbFRvXCIsXG4gIGxlc3NUaGFuOiBcImxlc3NUaGFuXCIsXG4gIGxlc3NUaGFuRXF1YWxUbzogXCJsZXNzVGhhbkVxdWFsVG9cIixcbiAgY2hvaWNlOiBcImNob2ljZVwiLFxuICBkaWZmZXJlbnQ6IFwiZGlmZmVyZW50XCIsXG4gIGV2ZW46IFwiZXZlblwiLFxuICBvZGQ6IFwib2RkXCIsXG4gIGZhY3RvcjogXCJmYWN0b3JcIixcbiAgbGVhcFllYXI6IFwibGVhcFllYXJcIixcbiAgYWxsT2Y6IFwiYWxsT2ZcIixcbiAgb25lT2Y6IFwib25lT2ZcIixcbiAgbm9uZU9mOiBcIm5vbmVPZlwiLFxuICBtYWM6IFwibWFjXCIsXG4gIGFzY2lpOiBcImFzY2lpXCIsXG4gIGRhdGFVcmk6IFwiZGF0YVVyaVwiLFxuICBwb3J0OiBcInBvcnRcIixcbiAgbGF0TG9uZzogXCJsYXRMb25nXCIsXG4gIGV4dGVuc2lvbjogXCJleHRlbnNpb25cIixcbiAgZmlsZVNpemU6IFwiZmlsZVNpemVcIixcbiAgZW5kc1dpdGg6IFwiZW5kc1dpdGhcIixcbiAgc3RhcnRzV2l0aDogXCJzdGFydHNXaXRoXCIsXG4gIHByaW1lTnVtYmVyOiBcInByaW1lTnVtYmVyXCIsXG4gIGxhdGl0dWRlOiBcImxhdGl0dWRlXCIsXG4gIGxvbmdpdHVkZTogXCJsb25naXR1ZGVcIixcbiAgY29tcG9zZTogXCJjb21wb3NlXCIsXG4gIHJ1bGU6IFwicnVsZVwiLFxuICBmaWxlOiBcImZpbGVcIixcbiAgaW1hZ2U6IFwiaW1hZ2VcIixcbiAgdW5pcXVlOiBcInVuaXF1ZVwiLFxuICBub3RFbXB0eTogXCJub3RFbXB0eVwiLFxuICBpcDogXCJpcFwiLFxuICBjdXNpcDogXCJjdXNpcFwiLFxuICBncmlkOiBcImdyaWRcIixcbiAgZGF0ZTogJ2RhdGUnLFxuICBhbmQ6ICdhbmQnLFxuICBvcjogJ29yJyxcbiAgbm90OiAnbm90JyxcbiAgbWluVGltZTogJ21pblRpbWUnLFxuICBtYXhUaW1lOiAnbWF4VGltZScsXG4gIHJlcXVpcmVkVHJ1ZTogJ3JlcXVpcmVkVHJ1ZScsXG4gIG1hc2s6ICdtYXNrJyxcbiAgaWJhbjogJ2liYW4nLFxuICB1cGRhdGVPbjogJ3VwZGF0ZU9uJ1xufVxuIl19
|
|
@@ -11,14 +11,16 @@ export function baseAsyncValidator(configModel, validatorName) {
|
|
|
11
11
|
}
|
|
12
12
|
return of(null);
|
|
13
13
|
}
|
|
14
|
-
else
|
|
14
|
+
else {
|
|
15
15
|
return of(resolveConfig(configModel, validatorName, control)(configModel));
|
|
16
|
+
}
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
function resolveConfig(configModel, validatorName, control) {
|
|
20
|
+
console.log('configModel', configModel);
|
|
19
21
|
return config => {
|
|
20
22
|
let configClone = { ...configModel, ...config, ...{ expressionProcessed: true } };
|
|
21
23
|
return APP_VALIDATORS[validatorName](configClone)(control);
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5hc3luYy52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvcmVhY3RpdmUtZm9ybS12YWxpZGF0b3JzL2FzeW5jL2Jhc2UuYXN5bmMudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQWdCLEVBQUUsYUFBcUI7SUFDdEUsT0FBTyxDQUFDLE9BQXdCLEVBQXNDLEVBQUU7UUFDcEUsV0FBVyxHQUFHLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFO1lBQzdCLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQ2hELE9BQXlCLFdBQVcsQ0FBQyxlQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZIO1lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7YUFDSTtZQUNELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDOUU7SUFDTCxDQUFDLENBQUE7QUFDTCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsV0FBZ0IsRUFBRSxhQUFxQixFQUFFLE9BQXdCO0lBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sTUFBTSxDQUFDLEVBQUU7UUFDWixJQUFJLFdBQVcsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2xGLE9BQU8sY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlELENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4gfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFQUF9WQUxJREFUT1JTIH0gZnJvbSAnLi4vLi4vY29uc3QvYXBwLXZhbGlkYXRvcnMuY29uc3QnO1xyXG5pbXBvcnQgeyBGb3JtUHJvdmlkZXIgfSBmcm9tICcuLi8uLi91dGlsL2Zvcm0tcHJvdmlkZXInO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJhc2VBc3luY1ZhbGlkYXRvcihjb25maWdNb2RlbDogYW55LCB2YWxpZGF0b3JOYW1lOiBzdHJpbmcpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiA9PiB7XHJcbiAgICAgICAgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbCB8fCB7fTtcclxuICAgICAgICBpZiAoY29uZmlnTW9kZWwudmFsaWRhdG9yQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIGlmIChGb3JtUHJvdmlkZXIuUHJvY2Vzc1J1bGUoY29udHJvbCwgY29uZmlnTW9kZWwpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKDxPYnNlcnZhYmxlPGFueT4+Y29uZmlnTW9kZWwudmFsaWRhdG9yQ29uZmlnKS5waXBlKG1hcChyZXNvbHZlQ29uZmlnKGNvbmZpZ01vZGVsLCB2YWxpZGF0b3JOYW1lLCBjb250cm9sKSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YocmVzb2x2ZUNvbmZpZyhjb25maWdNb2RlbCwgdmFsaWRhdG9yTmFtZSwgY29udHJvbCkoY29uZmlnTW9kZWwpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVDb25maWcoY29uZmlnTW9kZWw6IGFueSwgdmFsaWRhdG9yTmFtZTogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGNvbnNvbGUubG9nKCdjb25maWdNb2RlbCcsIGNvbmZpZ01vZGVsKTtcclxuICAgIHJldHVybiBjb25maWcgPT4ge1xyXG4gICAgICAgIGxldCBjb25maWdDbG9uZSA9IHsgLi4uY29uZmlnTW9kZWwsIC4uLmNvbmZpZywgLi4ueyBleHByZXNzaW9uUHJvY2Vzc2VkOiB0cnVlIH0gfTtcclxuICAgICAgICByZXR1cm4gQVBQX1ZBTElEQVRPUlNbdmFsaWRhdG9yTmFtZV0oY29uZmlnQ2xvbmUpKGNvbnRyb2wpXHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ObjectMaker } from "../util/object-maker";
|
|
2
|
-
import { FormProvider } from '../util/form-provider';
|
|
3
1
|
import { ApplicationUtil } from '../util/app-util';
|
|
4
2
|
import { getConfigObject } from "../util/config-provider";
|
|
3
|
+
import { FormProvider } from '../util/form-provider';
|
|
4
|
+
import { ObjectMaker } from "../util/object-maker";
|
|
5
5
|
export function customValidator(configModel) {
|
|
6
6
|
return (control) => {
|
|
7
7
|
let config = getConfigObject(configModel, control);
|
|
@@ -11,13 +11,15 @@ export function customValidator(configModel) {
|
|
|
11
11
|
let result = null;
|
|
12
12
|
for (let rule of config.customRules) {
|
|
13
13
|
result = rule(formGroupValue, parentObject, config.additionalValue);
|
|
14
|
-
if (result)
|
|
14
|
+
if (result) {
|
|
15
15
|
break;
|
|
16
|
+
}
|
|
16
17
|
}
|
|
17
|
-
if (result)
|
|
18
|
+
if (result) {
|
|
18
19
|
return result;
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
return ObjectMaker.null();
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvY3VzdG9tLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxXQUF5QjtJQUN4RCxPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtRQUMzRCxJQUFJLE1BQU0sR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDOUMsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3pFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsQixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BFLElBQUksTUFBTSxFQUFFO29CQUNYLE1BQU07aUJBQ047YUFDRDtZQUVELElBQUksTUFBTSxFQUFFO2dCQUNYLE9BQU8sTUFBTSxDQUFDO2FBQ2Q7U0FDRDtRQUVELE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQTtBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IEN1c3RvbUNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL2N1c3RvbS1jb25maWdcIjtcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gJy4uL3V0aWwvYXBwLXV0aWwnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWwvY29uZmlnLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBGb3JtUHJvdmlkZXIgfSBmcm9tICcuLi91dGlsL2Zvcm0tcHJvdmlkZXInO1xuaW1wb3J0IHsgT2JqZWN0TWFrZXIgfSBmcm9tIFwiLi4vdXRpbC9vYmplY3QtbWFrZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbVZhbGlkYXRvcihjb25maWdNb2RlbDogQ3VzdG9tQ29uZmlnKTogVmFsaWRhdG9yRm4ge1xuXHRyZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuXHRcdGxldCBjb25maWcgPSBnZXRDb25maWdPYmplY3QoY29uZmlnTW9kZWwsIGNvbnRyb2wpO1xuXHRcdGlmIChGb3JtUHJvdmlkZXIuUHJvY2Vzc1J1bGUoY29udHJvbCwgY29uZmlnKSkge1xuXHRcdFx0Y29uc3QgZm9ybUdyb3VwVmFsdWUgPSBBcHBsaWNhdGlvblV0aWwuZ2V0UGFyZW50T2JqZWN0VmFsdWUoY29udHJvbCk7XG5cdFx0XHRjb25zdCBwYXJlbnRPYmplY3QgPSAoY29udHJvbC5wYXJlbnQpID8gY29udHJvbC5wYXJlbnQudmFsdWUgOiB1bmRlZmluZWQ7XG5cdFx0XHRsZXQgcmVzdWx0ID0gbnVsbDtcblx0XHRcdGZvciAobGV0IHJ1bGUgb2YgY29uZmlnLmN1c3RvbVJ1bGVzKSB7XG5cdFx0XHRcdHJlc3VsdCA9IHJ1bGUoZm9ybUdyb3VwVmFsdWUsIHBhcmVudE9iamVjdCwgY29uZmlnLmFkZGl0aW9uYWxWYWx1ZSk7XG5cdFx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE9iamVjdE1ha2VyLm51bGwoKTtcblx0fVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { RegexValidator } from "../util/regex-validator";
|
|
2
|
-
import { ObjectMaker } from "../util/object-maker";
|
|
3
1
|
import { AnnotationTypes } from "../core/validator.static";
|
|
4
|
-
import { FormProvider } from '../util/form-provider';
|
|
5
2
|
import { getConfigObject } from "../util/config-provider";
|
|
3
|
+
import { FormProvider } from '../util/form-provider';
|
|
4
|
+
import { ObjectMaker } from "../util/object-maker";
|
|
5
|
+
import { RegexValidator } from "../util/regex-validator";
|
|
6
6
|
export function requiredValidator(configModel) {
|
|
7
7
|
return (control) => {
|
|
8
8
|
let config = getConfigObject(configModel, control);
|
|
@@ -14,4 +14,4 @@ export function requiredValidator(configModel) {
|
|
|
14
14
|
return ObjectMaker.null();
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9yZXF1aXJlZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsV0FBMkI7SUFDNUQsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7UUFDM0QsSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQy9EO1NBQ0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDLENBQUE7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xuaW1wb3J0IHsgUmVxdWlyZWRDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9yZXF1aXJlZC1jb25maWdcIjtcbmltcG9ydCB7IGdldENvbmZpZ09iamVjdCB9IGZyb20gXCIuLi91dGlsL2NvbmZpZy1wcm92aWRlclwiO1xuaW1wb3J0IHsgRm9ybVByb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9mb3JtLXByb3ZpZGVyJztcbmltcG9ydCB7IE9iamVjdE1ha2VyIH0gZnJvbSBcIi4uL3V0aWwvb2JqZWN0LW1ha2VyXCI7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gXCIuLi91dGlsL3JlZ2V4LXZhbGlkYXRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWRWYWxpZGF0b3IoY29uZmlnTW9kZWw6IFJlcXVpcmVkQ29uZmlnKTogVmFsaWRhdG9yRm4ge1xuXHRyZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuXHRcdGxldCBjb25maWcgPSBnZXRDb25maWdPYmplY3QoY29uZmlnTW9kZWwsIGNvbnRyb2wpO1xuXHRcdGlmIChGb3JtUHJvdmlkZXIuUHJvY2Vzc1J1bGUoY29udHJvbCwgY29uZmlnKSkge1xuXHRcdFx0aWYgKCFSZWdleFZhbGlkYXRvci5pc05vdEJsYW5rKGNvbnRyb2wudmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiBPYmplY3RNYWtlci50b0pzb24oQW5ub3RhdGlvblR5cGVzLnJlcXVpcmVkLCBjb25maWcsIFtdKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { RegexValidator } from '../util/regex-validator';
|
|
1
|
+
import { FormArray, FormControl, FormGroup } from "@angular/forms";
|
|
2
|
+
import { defaultContainer } from '../core/defaultContainer';
|
|
3
|
+
import { FormDataProvider } from "../domain/form-data";
|
|
5
4
|
import { ApplicationUtil } from '../util/app-util';
|
|
5
|
+
import { RegexValidator } from '../util/regex-validator';
|
|
6
|
+
import { getNestedOptions, isResetControl } from '../util/reset-form';
|
|
7
|
+
import { clone } from './entity.service';
|
|
8
|
+
import { RxFormControl } from "./form-control";
|
|
6
9
|
import { RxFormArray } from './rx-form-array';
|
|
7
|
-
import { FormDataProvider } from "../domain/form-data";
|
|
8
|
-
import { isResetControl, getNestedOptions } from '../util/reset-form';
|
|
9
|
-
import { defaultContainer } from '../core/defaultContainer';
|
|
10
10
|
export class RxFormGroup extends FormGroup {
|
|
11
11
|
constructor(model, entityObject, controls, validatorOrOpts, asyncValidator) {
|
|
12
12
|
super(controls, validatorOrOpts, asyncValidator);
|
|
@@ -296,4 +296,4 @@ export class RxFormGroup extends FormGroup {
|
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUzRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFPdEMsWUFBb0IsS0FBVSxFQUFVLFlBQW9DLEVBQUUsUUFFN0UsRUFBRSxlQUFxQixFQUFFLGNBQTZEO1FBQ25GLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSGpDLFVBQUssR0FBTCxLQUFLLENBQUs7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFIcEUsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFDdkMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDckMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUt0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVB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QkFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2lCQUM3RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksV0FBVyxFQUFFO2dCQUN4RCxJQUFrQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBRSxDQUFDLFVBQVUsRUFBRTtvQkFDdEQsSUFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFFLENBQUMsUUFBUSxDQUFDO29CQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakMsS0FBSyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUU7d0JBQzlCLElBQWtCLFNBQVUsQ0FBQyxVQUFVLEVBQUU7NEJBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztnQ0FDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFlLFNBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTt5QkFDM0U7cUJBRUo7b0JBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzFDO3FCQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMxQztTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4gfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFJ4Rm9ybUNvbnRyb2wgfSBmcm9tIFwiLi9mb3JtLWNvbnRyb2xcIjtcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gJy4uL3V0aWwvYXBwLXV0aWwnO1xuaW1wb3J0IHsgUnhGb3JtQXJyYXkgfSBmcm9tICcuL3J4LWZvcm0tYXJyYXknO1xuaW1wb3J0IHsgRm9ybURhdGFQcm92aWRlciB9IGZyb20gXCIuLi9kb21haW4vZm9ybS1kYXRhXCI7XG5pbXBvcnQgeyBSZXNldEZvcm1UeXBlIH0gZnJvbSBcIi4uL2VudW1zL3Jlc2V0LXR5cGVcIjtcbmltcG9ydCB7IGlzUmVzZXRDb250cm9sLCBnZXROZXN0ZWRPcHRpb25zIH0gZnJvbSAnLi4vdXRpbC9yZXNldC1mb3JtJ1xuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gJy4uL2NvcmUvZGVmYXVsdENvbnRhaW5lcidcbmltcG9ydCB7IEZvcm1EYXRhQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9pbnRlcmZhY2UvZm9ybS1kYXRhLWNvbmZpZ1wiO1xuZXhwb3J0IGNsYXNzIFJ4Rm9ybUdyb3VwIGV4dGVuZHMgRm9ybUdyb3VwIHtcbiAgICBwcml2YXRlIGJhc2VPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgICBwcml2YXRlIGZvcm1EYXRhUHJvdmlkZXI6IEZvcm1EYXRhUHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfc3VibWl0dGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX21vZGlmaWVkOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgcHJpdmF0ZSBfaXNNb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGNoYW5naW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RlbDogYW55LCBwcml2YXRlIGVudGl0eU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY29udHJvbHM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0sIHZhbGlkYXRvck9yT3B0cz86IGFueSwgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbCkge1xuICAgICAgICBzdXBlcihjb250cm9scywgdmFsaWRhdG9yT3JPcHRzLCBhc3luY1ZhbGlkYXRvcik7XG4gICAgICAgIHRoaXMuYmFzZU9iamVjdCA9IHt9XG4gICAgICAgIGZvciAodmFyIGNvbHVtbiBpbiB0aGlzLmVudGl0eU9iamVjdClcbiAgICAgICAgICAgIHRoaXMuYmFzZU9iamVjdFtjb2x1bW5dID0gdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uXVxuICAgICAgICB0aGlzLmZvcm1EYXRhUHJvdmlkZXIgPSBuZXcgRm9ybURhdGFQcm92aWRlcigpO1xuICAgIH1cblxuICAgIGJpbmRQcmltYXJ5S2V5KG1vZGVsSW5zdGFuY2U6IGFueSwgak9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICBsZXQgaW5zdGFuY2VDb250YWluZXIgPSBkZWZhdWx0Q29udGFpbmVyLmdldChtb2RlbEluc3RhbmNlLmNvbnN0cnVjdG9yKTsgICAgXG4gICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lcilcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHByaW1hcnlLZXlQcm9wID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcy5maWx0ZXIoeCA9PiB4LmlzUHJpbWFyeUtleSlbMF07XG4gICAgICAgICAgICBpZiAocHJpbWFyeUtleVByb3AgJiYgdGhpcy5tb2RlbEluc3RhbmNlW3ByaW1hcnlLZXlQcm9wLm5hbWVdKVxuICAgICAgICAgICAgICAgIGpPYmplY3RbcHJpbWFyeUtleVByb3AubmFtZV0gPSB0aGlzLm1vZGVsSW5zdGFuY2VbcHJpbWFyeUtleVByb3AubmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbW9kaWZpZWRWYWx1ZSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgbGV0IGpPYmplY3QgPSB7fTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX21vZGlmaWVkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRQcmltYXJ5S2V5KHRoaXMubW9kZWxJbnN0YW5jZSwgak9iamVjdClcbiAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbk5hbWUgaW4gdGhpcy5fbW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5tb2RpZmllZFZhbHVlO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm1BcnJheSA9IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gYXMgRm9ybUFycmF5O1xuICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbW9kaWZpZWRbY29sdW1uTmFtZV0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZFZhbHVlID0gKDxSeEZvcm1Hcm91cD5mb3JtQXJyYXkuY29udHJvbHNbaV0pLm1vZGlmaWVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhtb2RpZmllZFZhbHVlKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0ucHVzaChtb2RpZmllZFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqT2JqZWN0W2NvbHVtbk5hbWVdLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpPYmplY3RbY29sdW1uTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSB0aGlzLl9tb2RpZmllZFtjb2x1bW5OYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBqT2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RpZmllZDtcbiAgICB9XG5cbiAgICBnZXQgaXNNb2RpZmllZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9kaWZpZWQ7XG4gICAgfVxuXG4gICAgcGF0Y2goY29udHJvbE5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICBsZXQgY29udHJvbCA9IDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzTW9kaWZpZWQoY29udHJvbE5hbWUsIGNvbnRyb2wpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZXN0ZWRGb3Jtc01vZGlmaWNhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBPYmplY3Qua2V5cyh0aGlzLl9tb2RpZmllZCkubGVuZ3RoID4gMDtcbiAgICAgICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKVxuICAgICAgICAgICAgdGhpcy5uZXN0ZWRBcnJheUlzTW9kaWZpZWQoKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmICg8UnhGb3JtR3JvdXA+dGhpcy5wYXJlbnQpLnBhdGNoKVxuICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLnBhcmVudCkucGF0Y2goKTtcbiAgICB9XG5cbiAgICBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgaXNEaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLm1vZGVsSW5zdGFuY2VbbmFtZV07XG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgaXNEaXJ0eSA9IEFwcGxpY2F0aW9uVXRpbC5ub3RFcXVhbFRvKHRoaXMuYmFzZU9iamVjdFtuYW1lXSwgY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgIGlzRGlydHkgPSAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbbmFtZV0pLmlzRGlydHkoKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmb3JtR3JvdXAgb2YgKDxGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tuYW1lXSkuY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNEaXJ0eSA9ICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5pc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRGlydHkpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRGlydHk7XG4gICAgfTtcblxuICAgIHJlc2V0Rm9ybShvcHRpb25zPzoge1xuICAgICAgICByZXNldFR5cGU/OiBSZXNldEZvcm1UeXBlLFxuICAgICAgICB3aXRoPzogc3RyaW5nW10sXG4gICAgICAgIHZhbHVlPzogeyBba2V5OiBzdHJpbmddOmFueX1cbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5jb250cm9scykge1xuICAgICAgICAgICAgaWYgKGlzUmVzZXRDb250cm9sKG5hbWUsIHRoaXMuY29udHJvbHNbbmFtZV0sIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tuYW1lXSkucmVzZXRGb3JtKGdldE5lc3RlZE9wdGlvbnMobmFtZSxvcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbbmFtZV0pLnJlc2V0Rm9ybShvcHRpb25zICYmIG9wdGlvbnMudmFsdWUgPyBvcHRpb25zLnZhbHVlW25hbWVdIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnZhbHVlICYmIFJlZ2V4VmFsaWRhdG9yLmlzTm90Qmxhbmsob3B0aW9ucy52YWx1ZVtuYW1lXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW25hbWVdLnJlc2V0KG9wdGlvbnMudmFsdWVbbmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW25hbWVdLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tbWl0KCkge1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tuYW1lXSkuY29tbWl0KCk7XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW25hbWVdKS5jb21taXQoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbbmFtZV0pLmNvbW1pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGF0Y2hNb2RlbFZhbHVlKHZhbHVlOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9LCBvcHRpb25zPzoge1xuICAgICAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5jb250cm9scykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXAgJiYgdmFsdWVbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tuYW1lXSkucGF0Y2hNb2RlbFZhbHVlKHZhbHVlW25hbWVdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIEFycmF5LmlzQXJyYXkodmFsdWVbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGZvcm1Hcm91cCBvZiAoPEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW25hbWVdKS5jb250cm9scykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW25hbWVdW2luZGV4XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPmZvcm1Hcm91cCkucGF0Y2hNb2RlbFZhbHVlKHZhbHVlW25hbWVdW2luZGV4XSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbbmFtZV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbbmFtZV0ucGF0Y2hWYWx1ZSh2YWx1ZVtuYW1lXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGdldEVycm9yU3VtbWFyeShvbmx5TWVzc2FnZTogYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBsZXQgak9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmdldEVycm9yU3VtbWFyeShmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVycm9yKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmb3JtR3JvdXAgb2YgKDxGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yID0gKDxSeEZvcm1Hcm91cD5mb3JtR3JvdXApLmdldEVycm9yU3VtbWFyeShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghak9iamVjdFtjb2x1bW5OYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yID0gdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbmx5TWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHZhbGlkYXRpb25OYW1lIGluIGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSBlcnJvclt2YWxpZGF0aW9uTmFtZV0ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIGpPYmplY3Q7XG4gICAgfVxuXG4gICAgdmFsdWVDaGFuZ2VkU3luYygpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChjb2x1bW5OYW1lID0+IHtcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSAmJiAhKHRoaXMuZW50aXR5T2JqZWN0W2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgfHwgdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Db250cm9sKSAmJiAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuZ2V0Q29udHJvbFZhbHVlICYmIEFwcGxpY2F0aW9uVXRpbC5ub3RFcXVhbFRvKCg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5nZXRDb250cm9sVmFsdWUoKSwgdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uTmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXS5zZXRWYWx1ZSh0aGlzLmVudGl0eU9iamVjdFtjb2x1bW5OYW1lXSwgeyB1cGRhdGVDaGFuZ2VkOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSB8fCB0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mICg8Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS52YWx1ZUNoYW5nZWRTeW5jKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xuICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkudmFsdWVDaGFuZ2VkU3luYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJlZnJlc2hEaXNhYmxlKCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKCEodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSB8fCB0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtQXJyYXkpICYmICEodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCB0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkpIHtcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLnJlZnJlc2hEaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICB9XG5cbiAgICBiaW5kRXJyb3JNZXNzYWdlcygpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChjb2x1bW5OYW1lID0+IHtcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5iaW5kRXJyb3IoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkpIHtcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmJpbmRFcnJvck1lc3NhZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0IHN1Ym1pdHRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdHRlZDtcbiAgICB9XG5cbiAgICBzZXQgc3VibWl0dGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHZhbHVlO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybUFycmF5ID0gdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mIGZvcm1BcnJheS5jb250cm9scylcbiAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD5mb3JtR3JvdXApLnN1Ym1pdHRlZCA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5zdWJtaXR0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5iaW5kRXJyb3IoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXQgbW9kZWxJbnN0YW5jZVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gY2xvbmUodGhpcy5lbnRpdHlPYmplY3QpO1xuICAgIH1cblxuICAgIGdldCBtb2RlbEluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlPYmplY3Q7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRyb2xzRXJyb3IoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVycm9yU3VtbWFyeSh0cnVlKTtcbiAgICB9XG5cbiAgICB0b0Zvcm1EYXRhKG9wdGlvbnM/OiBGb3JtRGF0YUNvbmZpZyk6IEZvcm1EYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybURhdGFQcm92aWRlci5jb252ZXJ0VG9Gb3JtRGF0YSh0aGlzLnZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NNb2RpZmllZChjb250cm9sTmFtZTpzdHJpbmcsY29udHJvbDogYW55KSB7XG4gICAgICAgIGlmIChjb250cm9sLmlzTW9kaWZpZWQpXG4gICAgICAgICAgICB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0gPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fbW9kaWZpZWRbY29udHJvbE5hbWVdO1xuICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gT2JqZWN0LmtleXModGhpcy5fbW9kaWZpZWQpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuZXN0ZWRBcnJheUlzTW9kaWZpZWQoKSB7XG4gICAgICAgIGZvciAodmFyIGNvbnRyb2xOYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KVxuICAgICAgICAgICAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSAoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5pc01vZGlmaWVkO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTW9kaWZpZWQpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRCYWNrRW5kRXJyb3JzKGVycm9yczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5zZXRCYWNrRW5kRXJyb3JzKGVycm9yc1tjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLnNldEJhY2tFbmRFcnJvcnMoZXJyb3JzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICBjbGVhckJhY2tFbmRFcnJvcnMoZXJyb3JzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICBsZXQgY2xlYXJFcnJvcnMgPSBlcnJvcnMgPyBPYmplY3Qua2V5cyhlcnJvcnMpIDogT2JqZWN0LmtleXModGhpcy5jb250cm9scyk7XG4gICAgICAgIGNsZWFyRXJyb3JzLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPyAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5jbGVhckJhY2tFbmRFcnJvcnMoZXJyb3JzW2NvbnRyb2xOYW1lXSkgOiAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5jbGVhckJhY2tFbmRFcnJvcnMoKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID8gKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5jbGVhckJhY2tFbmRFcnJvcnMoZXJyb3JzW2NvbnRyb2xOYW1lXSkgOiAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5jbGVhckJhY2tFbmRFcnJvcnMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgbmVzdGVkRm9ybXNNb2RpZmljYXRpb24oKSB7XG4gICAgICAgIGZvciAodmFyIGNvbnRyb2xOYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSBcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NNb2RpZmllZChjb250cm9sTmFtZSwgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgIGlmICgoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5pc01vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtR3JvdXBzID0gKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY29udHJvbHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmb3JtR3JvdXAgb2YgZm9ybUdyb3Vwcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5pc01vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5wdXNoKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5tb2RpZmllZFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFRdEMsWUFBb0IsS0FBVSxFQUFVLFlBQW9DLEVBQUUsUUFFN0UsRUFBRSxlQUFxQixFQUFFLGNBQTZEO1FBQ25GLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSGpDLFVBQUssR0FBTCxLQUFLLENBQUs7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFKcEUsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFDdkMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDckMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU10QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUNwQixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjLENBQUMsYUFBa0IsRUFBRSxPQUErQjtRQUM5RCxJQUFJLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEUsSUFBSSxpQkFBaUIsRUFBRTtZQUNuQixJQUFJLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDekQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RTtJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNoRCxLQUFLLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxXQUFXO29CQUNoRCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsYUFBYSxDQUFDO3FCQUM1RSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxFQUFFO29CQUNyRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBYyxDQUFDO29CQUN2RCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3hELElBQUksYUFBYSxHQUFpQixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDLGFBQWEsQ0FBQTt3QkFDdEUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDOzRCQUNyQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO3FCQUM5QztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQzt3QkFDL0IsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2xDOztvQkFDRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4RDtZQUNELE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFvQjtRQUN0QixJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksT0FBTyxHQUFrQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDakIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFrQixJQUFJLENBQUMsTUFBTyxDQUFDLEtBQUs7WUFDakMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksT0FBTyxHQUFZLEtBQUssQ0FBQztRQUM3QixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDekIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLFNBQVMsQ0FBQyxFQUFFO2dCQUN6RixPQUFPLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQzdFO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxXQUFXO2dCQUNqRCxPQUFPLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ3RELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxTQUFTLEVBQUU7Z0JBQy9DLEtBQUssSUFBSSxTQUFTLElBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsUUFBUSxFQUFFO29CQUM3RCxPQUFPLEdBQWlCLFNBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDaEQ7YUFDSjtZQUNELElBQUksT0FBTztnQkFDUCxNQUFNO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQUEsQ0FBQztJQUVGLFNBQVMsQ0FBQyxPQUlUO1FBQ0csS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksU0FBUztvQkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQzdFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxTQUFTLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDNUc7cUJBQU07b0JBQ0gsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7d0JBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ25DO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0YsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxTQUFTO2dCQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBRS9DO2lCQUFNO2dCQUNhLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDakQ7U0FDSjtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FFZixFQUFFLE9BR0Y7UUFDRyxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7cUJBQ3hFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtvQkFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNkLEtBQUssSUFBSSxTQUFTLElBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsUUFBUSxFQUFFO3dCQUM3RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7NEJBQ0osU0FBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQzFFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO3FCQUNyQjtpQkFDSjtxQkFDRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO29CQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDaEU7U0FDSjtJQUNMLENBQUM7SUFHRCxlQUFlLENBQUMsV0FBb0I7UUFDaEMsSUFBSSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsRUFBRTtnQkFDaEQsSUFBSSxLQUFLLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDbkM7aUJBQ0ksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsRUFBRTtnQkFDckQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLEtBQUssSUFBSSxTQUFTLElBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsUUFBUSxFQUFFO29CQUNuRSxJQUFJLEtBQUssR0FBaUIsU0FBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQzs0QkFDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDbkM7b0JBQ0QsS0FBSyxFQUFFLENBQUM7aUJBQ1g7YUFDSjtpQkFBTTtnQkFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDN0MsSUFBSSxXQUFXO3dCQUNYLEtBQUssSUFBSSxjQUFjLElBQUksS0FBSzs0QkFDNUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUM7O3dCQUV4RCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUNuQzthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksYUFBYSxDQUFDLElBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO2dCQUM5ZixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDOUY7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLEVBQUU7Z0JBQzdHLEtBQUssSUFBSSxTQUFTLElBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsUUFBUSxFQUFFO29CQUNyRCxTQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDL0M7YUFDSjtpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxXQUFXLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQy9EO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFdBQVcsQ0FBQyxFQUFFO2dCQUNoTSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3hEO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFdBQVcsQ0FBQyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzdEO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFFTixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLEVBQUU7Z0JBQ2hNLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDMUQ7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksV0FBVyxDQUFDLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNoRTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsRUFBRTtnQkFDaEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQWMsQ0FBQztnQkFDdkQsS0FBSyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUTtvQkFDdEIsU0FBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDbEQ7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLFNBQVMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQzlEOztnQkFDbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBd0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sZUFBZSxDQUFDLFdBQW1CLEVBQUUsT0FBWTtRQUNyRCxJQUFJLE9BQU8sQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzs7WUFFNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLEtBQUssSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksV0FBVztnQkFDakQsSUFBSSxDQUFDLFdBQVcsR0FBaUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQyxVQUFVLENBQUM7WUFDNUUsSUFBSSxJQUFJLENBQUMsV0FBVztnQkFDaEIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQThCO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLFNBQVM7b0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7O29CQUUvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBK0I7UUFDOUMsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RSxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLFNBQVM7b0JBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFBOztvQkFFM0osTUFBTSxDQUFDLENBQUMsQ0FBaUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO2FBQ3BLO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLEtBQUssSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksV0FBVztnQkFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2lCQUM3RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksV0FBVyxFQUFFO2dCQUN4RCxJQUFrQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBRSxDQUFDLFVBQVUsRUFBRTtvQkFDdEQsSUFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFFLENBQUMsUUFBUSxDQUFDO29CQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakMsS0FBSyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUU7d0JBQzlCLElBQWtCLFNBQVUsQ0FBQyxVQUFVLEVBQUU7NEJBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztnQ0FDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFlLFNBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTt5QkFDM0U7cUJBRUo7b0JBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzFDO3FCQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMxQztTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGRlZmF1bHRDb250YWluZXIgfSBmcm9tICcuLi9jb3JlL2RlZmF1bHRDb250YWluZXInO1xuaW1wb3J0IHsgRm9ybURhdGFQcm92aWRlciB9IGZyb20gXCIuLi9kb21haW4vZm9ybS1kYXRhXCI7XG5pbXBvcnQgeyBSZXNldEZvcm1UeXBlIH0gZnJvbSBcIi4uL2VudW1zL3Jlc2V0LXR5cGVcIjtcbmltcG9ydCB7IEZvcm1EYXRhQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9pbnRlcmZhY2UvZm9ybS1kYXRhLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQXBwbGljYXRpb25VdGlsIH0gZnJvbSAnLi4vdXRpbC9hcHAtdXRpbCc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yJztcbmltcG9ydCB7IGdldE5lc3RlZE9wdGlvbnMsIGlzUmVzZXRDb250cm9sIH0gZnJvbSAnLi4vdXRpbC9yZXNldC1mb3JtJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBSeEZvcm1Db250cm9sIH0gZnJvbSBcIi4vZm9ybS1jb250cm9sXCI7XG5pbXBvcnQgeyBSeEZvcm1BcnJheSB9IGZyb20gJy4vcngtZm9ybS1hcnJheSc7XG5cbmV4cG9ydCBjbGFzcyBSeEZvcm1Hcm91cCBleHRlbmRzIEZvcm1Hcm91cCB7XG4gICAgcHJpdmF0ZSBiYXNlT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICAgcHJpdmF0ZSBmb3JtRGF0YVByb3ZpZGVyOiBGb3JtRGF0YVByb3ZpZGVyO1xuICAgIHByaXZhdGUgX3N1Ym1pdHRlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9tb2RpZmllZDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHByaXZhdGUgX2lzTW9kaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjaGFuZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RlbDogYW55LCBwcml2YXRlIGVudGl0eU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY29udHJvbHM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0sIHZhbGlkYXRvck9yT3B0cz86IGFueSwgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbCkge1xuICAgICAgICBzdXBlcihjb250cm9scywgdmFsaWRhdG9yT3JPcHRzLCBhc3luY1ZhbGlkYXRvcik7XG4gICAgICAgIHRoaXMuYmFzZU9iamVjdCA9IHt9XG4gICAgICAgIGZvciAodmFyIGNvbHVtbiBpbiB0aGlzLmVudGl0eU9iamVjdClcbiAgICAgICAgICAgIHRoaXMuYmFzZU9iamVjdFtjb2x1bW5dID0gdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uXVxuICAgICAgICB0aGlzLmZvcm1EYXRhUHJvdmlkZXIgPSBuZXcgRm9ybURhdGFQcm92aWRlcigpO1xuICAgIH1cblxuICAgIGJpbmRQcmltYXJ5S2V5KG1vZGVsSW5zdGFuY2U6IGFueSwgak9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICBsZXQgaW5zdGFuY2VDb250YWluZXIgPSBkZWZhdWx0Q29udGFpbmVyLmdldChtb2RlbEluc3RhbmNlLmNvbnN0cnVjdG9yKTtcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBsZXQgcHJpbWFyeUtleVByb3AgPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzLmZpbHRlcih4ID0+IHguaXNQcmltYXJ5S2V5KVswXTtcbiAgICAgICAgICAgIGlmIChwcmltYXJ5S2V5UHJvcCAmJiB0aGlzLm1vZGVsSW5zdGFuY2VbcHJpbWFyeUtleVByb3AubmFtZV0pXG4gICAgICAgICAgICAgICAgak9iamVjdFtwcmltYXJ5S2V5UHJvcC5uYW1lXSA9IHRoaXMubW9kZWxJbnN0YW5jZVtwcmltYXJ5S2V5UHJvcC5uYW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBtb2RpZmllZFZhbHVlKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBsZXQgak9iamVjdCA9IHt9O1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fbW9kaWZpZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFByaW1hcnlLZXkodGhpcy5tb2RlbEluc3RhbmNlLCBqT2JqZWN0KVxuICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uTmFtZSBpbiB0aGlzLl9tb2RpZmllZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLm1vZGlmaWVkVmFsdWU7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9ybUFycmF5ID0gdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tb2RpZmllZFtjb2x1bW5OYW1lXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkVmFsdWUgPSAoPFJ4Rm9ybUdyb3VwPmZvcm1BcnJheS5jb250cm9sc1tpXSkubW9kaWZpZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG1vZGlmaWVkVmFsdWUpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXS5wdXNoKG1vZGlmaWVkVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGpPYmplY3RbY29sdW1uTmFtZV0ubGVuZ3RoID09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgak9iamVjdFtjb2x1bW5OYW1lXTtcbiAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IHRoaXMuX21vZGlmaWVkW2NvbHVtbk5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGpPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGlmaWVkO1xuICAgIH1cblxuICAgIGdldCBpc01vZGlmaWVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RpZmllZDtcbiAgICB9XG5cbiAgICBwYXRjaChjb250cm9sTmFtZT86IHN0cmluZykge1xuICAgICAgICBpZiAoY29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgIGxldCBjb250cm9sID0gPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV07XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NNb2RpZmllZChjb250cm9sTmFtZSwgY29udHJvbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5lc3RlZEZvcm1zTW9kaWZpY2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNNb2RpZmllZCA9IE9iamVjdC5rZXlzKHRoaXMuX21vZGlmaWVkKS5sZW5ndGggPiAwO1xuICAgICAgICBpZiAoIXRoaXMuX2lzTW9kaWZpZWQpXG4gICAgICAgICAgICB0aGlzLm5lc3RlZEFycmF5SXNNb2RpZmllZCgpO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgKDxSeEZvcm1Hcm91cD50aGlzLnBhcmVudCkucGF0Y2gpXG4gICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMucGFyZW50KS5wYXRjaCgpO1xuICAgIH1cblxuICAgIGlzRGlydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBpc0RpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHRoaXMubW9kZWxJbnN0YW5jZVtuYW1lXTtcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgICAgICAgICAgICBpc0RpcnR5ID0gQXBwbGljYXRpb25VdGlsLm5vdEVxdWFsVG8odGhpcy5iYXNlT2JqZWN0W25hbWVdLCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgaXNEaXJ0eSA9ICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tuYW1lXSkuaXNEaXJ0eSgpO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGZvcm1Hcm91cCBvZiAoPEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW25hbWVdKS5jb250cm9scykge1xuICAgICAgICAgICAgICAgICAgICBpc0RpcnR5ID0gKDxSeEZvcm1Hcm91cD5mb3JtR3JvdXApLmlzRGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEaXJ0eSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNEaXJ0eTtcbiAgICB9O1xuXG4gICAgcmVzZXRGb3JtKG9wdGlvbnM/OiB7XG4gICAgICAgIHJlc2V0VHlwZT86IFJlc2V0Rm9ybVR5cGUsXG4gICAgICAgIHdpdGg/OiBzdHJpbmdbXSxcbiAgICAgICAgdmFsdWU/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc2V0Q29udHJvbChuYW1lLCB0aGlzLmNvbnRyb2xzW25hbWVdLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbbmFtZV0pLnJlc2V0Rm9ybShnZXROZXN0ZWRPcHRpb25zKG5hbWUsIG9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tuYW1lXSkucmVzZXRGb3JtKG9wdGlvbnMgJiYgb3B0aW9ucy52YWx1ZSA/IG9wdGlvbnMudmFsdWVbbmFtZV0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudmFsdWUgJiYgUmVnZXhWYWxpZGF0b3IuaXNOb3RCbGFuayhvcHRpb25zLnZhbHVlW25hbWVdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbbmFtZV0ucmVzZXQob3B0aW9ucy52YWx1ZVtuYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbbmFtZV0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21taXQoKSB7XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5jb250cm9scykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW25hbWVdKS5jb21taXQoKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbbmFtZV0pLmNvbW1pdCgpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW25hbWVdKS5jb21taXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhdGNoTW9kZWxWYWx1ZSh2YWx1ZToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfSwgb3B0aW9ucz86IHtcbiAgICAgICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgICAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwICYmIHZhbHVlW25hbWVdKVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbbmFtZV0pLnBhdGNoTW9kZWxWYWx1ZSh2YWx1ZVtuYW1lXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSAmJiBBcnJheS5pc0FycmF5KHZhbHVlW25hbWVdKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBmb3JtR3JvdXAgb2YgKDxGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tuYW1lXSkuY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtuYW1lXVtpbmRleF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD5mb3JtR3JvdXApLnBhdGNoTW9kZWxWYWx1ZSh2YWx1ZVtuYW1lXVtpbmRleF0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW25hbWVdICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW25hbWVdLnBhdGNoVmFsdWUodmFsdWVbbmFtZV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZXRFcnJvclN1bW1hcnkob25seU1lc3NhZ2U6IGJvb2xlYW4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgbGV0IGpPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChjb2x1bW5OYW1lID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5nZXRFcnJvclN1bW1hcnkoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcikubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mICg8Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciA9ICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5nZXRFcnJvclN1bW1hcnkoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZXJyb3IpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWpPYmplY3RbY29sdW1uTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXS5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0uZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciA9IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0uZXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICBpZiAob25seU1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0aW9uTmFtZSBpbiBlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gZXJyb3JbdmFsaWRhdGlvbk5hbWVdLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBqT2JqZWN0O1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlZFN5bmMoKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5IHx8IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1BcnJheSkgJiYgISh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkgJiYgISh0aGlzLmVudGl0eU9iamVjdFtjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1Db250cm9sIHx8IHRoaXMuZW50aXR5T2JqZWN0W2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtQ29udHJvbCkgJiYgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmdldENvbnRyb2xWYWx1ZSAmJiBBcHBsaWNhdGlvblV0aWwubm90RXF1YWxUbygoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuZ2V0Q29udHJvbFZhbHVlKCksIHRoaXMuZW50aXR5T2JqZWN0W2NvbHVtbk5hbWVdKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0uc2V0VmFsdWUodGhpcy5lbnRpdHlPYmplY3RbY29sdW1uTmFtZV0sIHsgdXBkYXRlQ2hhbmdlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGZvcm1Hcm91cCBvZiAoPEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5jb250cm9scykge1xuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPmZvcm1Hcm91cCkudmFsdWVDaGFuZ2VkU3luYygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkpIHtcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLnZhbHVlQ2hhbmdlZFN5bmMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZWZyZXNoRGlzYWJsZSgpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChjb2x1bW5OYW1lID0+IHtcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5yZWZyZXNoRGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgfVxuXG4gICAgYmluZEVycm9yTWVzc2FnZXMoKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5IHx8IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1BcnJheSkgJiYgISh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkpIHtcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuYmluZEVycm9yKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5iaW5kRXJyb3JNZXNzYWdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldCBzdWJtaXR0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXR0ZWQ7XG4gICAgfVxuXG4gICAgc2V0IHN1Ym1pdHRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zdWJtaXR0ZWQgPSB2YWx1ZTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChjb2x1bW5OYW1lID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1BcnJheSA9IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gYXMgRm9ybUFycmF5O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGZvcm1Hcm91cCBvZiBmb3JtQXJyYXkuY29udHJvbHMpXG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5zdWJtaXR0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuc3VibWl0dGVkID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuYmluZEVycm9yKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsSW5zdGFuY2VWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMuZW50aXR5T2JqZWN0KTtcbiAgICB9XG5cbiAgICBnZXQgbW9kZWxJbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5T2JqZWN0O1xuICAgIH1cblxuICAgIGdldCBjb250cm9sc0Vycm9yKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFcnJvclN1bW1hcnkodHJ1ZSk7XG4gICAgfVxuXG4gICAgdG9Gb3JtRGF0YShvcHRpb25zPzogRm9ybURhdGFDb25maWcpOiBGb3JtRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1EYXRhUHJvdmlkZXIuY29udmVydFRvRm9ybURhdGEodGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzTW9kaWZpZWQoY29udHJvbE5hbWU6IHN0cmluZywgY29udHJvbDogYW55KSB7XG4gICAgICAgIGlmIChjb250cm9sLmlzTW9kaWZpZWQpXG4gICAgICAgICAgICB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0gPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fbW9kaWZpZWRbY29udHJvbE5hbWVdO1xuICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gT2JqZWN0LmtleXModGhpcy5fbW9kaWZpZWQpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuZXN0ZWRBcnJheUlzTW9kaWZpZWQoKSB7XG4gICAgICAgIGZvciAodmFyIGNvbnRyb2xOYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KVxuICAgICAgICAgICAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSAoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5pc01vZGlmaWVkO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTW9kaWZpZWQpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRCYWNrRW5kRXJyb3JzKGVycm9yczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5zZXRCYWNrRW5kRXJyb3JzKGVycm9yc1tjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLnNldEJhY2tFbmRFcnJvcnMoZXJyb3JzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY2xlYXJCYWNrRW5kRXJyb3JzKGVycm9ycz86IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgbGV0IGNsZWFyRXJyb3JzID0gZXJyb3JzID8gT2JqZWN0LmtleXMoZXJyb3JzKSA6IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xuICAgICAgICBjbGVhckVycm9ycy5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID8gKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY2xlYXJCYWNrRW5kRXJyb3JzKGVycm9yc1tjb250cm9sTmFtZV0pIDogKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY2xlYXJCYWNrRW5kRXJyb3JzKClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA/ICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY2xlYXJCYWNrRW5kRXJyb3JzKGVycm9yc1tjb250cm9sTmFtZV0pIDogKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY2xlYXJCYWNrRW5kRXJyb3JzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcml2YXRlIG5lc3RlZEZvcm1zTW9kaWZpY2F0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBjb250cm9sTmFtZSBpbiB0aGlzLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NNb2RpZmllZChjb250cm9sTmFtZSwgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICAgIGlmICgoPFJ4Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5pc01vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtR3JvdXBzID0gKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY29udHJvbHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmb3JtR3JvdXAgb2YgZm9ybUdyb3Vwcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5pc01vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5wdXNoKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5tb2RpZmllZFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,35 +1,40 @@
|
|
|
1
1
|
import { FormArray } from "@angular/forms";
|
|
2
|
-
import { RxFormArray } from "../services/rx-form-array";
|
|
3
2
|
import { NumericValueType } from '../enums';
|
|
3
|
+
import { RxFormArray } from "../services/rx-form-array";
|
|
4
4
|
import { ReactiveFormConfig } from "./reactive-form-config";
|
|
5
5
|
const MODEL_INSTANCE_VALUE = "modelInstanceValue";
|
|
6
6
|
export class ApplicationUtil {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the value of the parent control object
|
|
9
|
+
* @param control
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
7
12
|
static getParentObjectValue(control) {
|
|
8
|
-
|
|
9
|
-
let parent = this.parentObjectValue(control.parent);
|
|
10
|
-
return parent.value;
|
|
11
|
-
}
|
|
12
|
-
return {};
|
|
13
|
+
return control.parent ? this.parentObjectValue(control.parent)?.value : {};
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Gets the value of the prant model instance
|
|
17
|
+
* @param control
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
14
20
|
static getParentModelInstanceValue(control) {
|
|
15
|
-
|
|
16
|
-
let parent = this.parentObjectValue(control.parent);
|
|
17
|
-
return parent[MODEL_INSTANCE_VALUE];
|
|
18
|
-
}
|
|
19
|
-
return {};
|
|
21
|
+
return control.parent ? this.parentObjectValue(control.parent)[MODEL_INSTANCE_VALUE] : {};
|
|
20
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets the root control of the specified control
|
|
25
|
+
* @param control
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
21
28
|
static getRootFormGroup(control) {
|
|
22
|
-
|
|
23
|
-
return this.getRootFormGroup(control.parent);
|
|
24
|
-
}
|
|
25
|
-
return control;
|
|
29
|
+
return control.parent ? this.getRootFormGroup(control.parent) : control;
|
|
26
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets parent control
|
|
33
|
+
* @param control
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
27
36
|
static getParentControl(control) {
|
|
28
|
-
|
|
29
|
-
let parent = this.parentObjectValue(control.parent);
|
|
30
|
-
return parent;
|
|
31
|
-
}
|
|
32
|
-
return control;
|
|
37
|
+
return control.parent ? this.parentObjectValue(control.parent) : control;
|
|
33
38
|
}
|
|
34
39
|
static getFormControlName(control) {
|
|
35
40
|
let controlName = '';
|
|
@@ -74,12 +79,13 @@ export class ApplicationUtil {
|
|
|
74
79
|
}
|
|
75
80
|
return (control.parent) ? control.parent.get([fieldName]) : undefined;
|
|
76
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Gets parent controil recursively
|
|
84
|
+
* @param control
|
|
85
|
+
* @returns
|
|
86
|
+
*/
|
|
77
87
|
static parentObjectValue(control) {
|
|
78
|
-
|
|
79
|
-
return control;
|
|
80
|
-
else
|
|
81
|
-
control = this.parentObjectValue(control.parent);
|
|
82
|
-
return control;
|
|
88
|
+
return control?.parent ? this.parentObjectValue(control.parent) : control;
|
|
83
89
|
}
|
|
84
90
|
static isNumeric(value) {
|
|
85
91
|
return (value - parseFloat(value) + 1) >= 0;
|
|
@@ -126,16 +132,29 @@ export class ApplicationUtil {
|
|
|
126
132
|
static lowerCaseWithTrim(value) {
|
|
127
133
|
return typeof value === "string" ? value.toLowerCase().trim() : String(value).toLowerCase().trim();
|
|
128
134
|
}
|
|
129
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Check if a value is an object
|
|
137
|
+
* @param value
|
|
138
|
+
* @returns
|
|
139
|
+
*/
|
|
130
140
|
static isObject(value) {
|
|
131
141
|
return Object.prototype.toString.call(value) === '[object Object]';
|
|
132
142
|
}
|
|
133
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Check if a value is an object
|
|
145
|
+
* @param value
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
134
148
|
static isArray(value) {
|
|
135
149
|
return Array.isArray(value);
|
|
136
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Clones the specified object value
|
|
153
|
+
* @param value
|
|
154
|
+
* @returns
|
|
155
|
+
*/
|
|
137
156
|
static cloneValue(value) {
|
|
138
157
|
return ApplicationUtil.isObject(value) ? ApplicationUtil.isArray(value) ? [...value] : { ...value } : value;
|
|
139
158
|
}
|
|
140
159
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvdXRpbC9hcHAtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsTUFBTSxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztBQUNsRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBd0I7UUFDaEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDbkQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLE9BQXdCO1FBQ3ZELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ25ELE9BQU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBdUI7UUFDN0MsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FB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SyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUcsQ0FBQztDQUdKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1BcnJheSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgUnhGb3JtQXJyYXkgfSBmcm9tIFwiLi4vc2VydmljZXMvcngtZm9ybS1hcnJheVwiO1xuaW1wb3J0IHtOdW1lcmljVmFsdWVUeXBlIH0gZnJvbSAnLi4vZW51bXMnXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1Db25maWcgfSBmcm9tIFwiLi9yZWFjdGl2ZS1mb3JtLWNvbmZpZ1wiO1xuY29uc3QgTU9ERUxfSU5TVEFOQ0VfVkFMVUUgPSBcIm1vZGVsSW5zdGFuY2VWYWx1ZVwiO1xuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uVXRpbHtcbiAgICBzdGF0aWMgZ2V0UGFyZW50T2JqZWN0VmFsdWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA6eyBba2V5OnN0cmluZ106YW55fSB7XG4gICAgICAgIGlmIChjb250cm9sLnBhcmVudCkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50T2JqZWN0VmFsdWUoY29udHJvbC5wYXJlbnQpXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0UGFyZW50TW9kZWxJbnN0YW5jZVZhbHVlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wucGFyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFtNT0RFTF9JTlNUQU5DRV9WQUxVRV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRSb290Rm9ybUdyb3VwKGNvbnRyb2w6QWJzdHJhY3RDb250cm9sKTpGb3JtR3JvdXB7XG4gICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdEZvcm1Hcm91cChjb250cm9sLnBhcmVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gPEZvcm1Hcm91cD5jb250cm9sO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldFBhcmVudENvbnRyb2woY29udHJvbDpBYnN0cmFjdENvbnRyb2wpe1xuICAgICAgICBpZiAoY29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wucGFyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udHJvbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0Rm9ybUNvbnRyb2xOYW1lKGNvbnRyb2w6QWJzdHJhY3RDb250cm9sKXtcbiAgICAgICAgbGV0IGNvbnRyb2xOYW1lOnN0cmluZyA9ICcnO1xuICAgICAgICBpZihjb250cm9sLnBhcmVudCl7XG4gICAgICAgICAgZm9yKHZhciBmb3JtQ29udHJvbE5hbWUgaW4gY29udHJvbC5wYXJlbnQuY29udHJvbHMpe1xuICAgICAgICAgICAgaWYoY29udHJvbC5wYXJlbnQuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXSA9PSBjb250cm9sKXtcbiAgICAgICAgICAgICAgY29udHJvbE5hbWUgPSBmb3JtQ29udHJvbE5hbWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRyb2xOYW1lO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQYXJlbnRGb3JtQXJyYXkoY29udHJvbDpBYnN0cmFjdENvbnRyb2wpe1xuICAgICAgICBpZiAoY29udHJvbC5wYXJlbnQgJiYgIShjb250cm9sLnBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSB8fCBjb250cm9sLnBhcmVudCBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Rm9ybUFycmF5KGNvbnRyb2wucGFyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udHJvbC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgc3RhdGljIHRvTG93ZXIodmFsdWUpe1xuICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRDb250cm9sKGZpZWxkTmFtZTpzdHJpbmcsZm9ybUdyb3VwOkZvcm1Hcm91cCl7XG4gICAgICBsZXQgc3BsaXRUZXh0ID0gZmllbGROYW1lLnNwbGl0KCcuJyk7XG4gICAgICBpZihzcGxpdFRleHQubGVuZ3RoID4gMSl7XG4gICAgICAgIHZhciBmb3JtQ29udHJvbDphbnkgPSBmb3JtR3JvdXA7XG4gICAgICAgIHNwbGl0VGV4dC5mb3JFYWNoKChuYW1lLGluZGV4KT0+eyBmb3JtQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2xzW25hbWVdfSlcbiAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sO1xuICAgICAgfWVsc2VcbiAgICAgIHJldHVybiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGROYW1lXTtcblxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRGb3JtQ29udHJvbChmaWVsZE5hbWU6c3RyaW5nLGNvbnRyb2w6QWJzdHJhY3RDb250cm9sKXtcbiAgICAgICAgbGV0IHNwbGl0VGV4dCA9IGZpZWxkTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGlmKHNwbGl0VGV4dC5sZW5ndGggPiAxICYmIGNvbnRyb2wucGFyZW50KXtcbiAgICAgICAgICB2YXIgZm9ybUNvbnRyb2w6YW55ID0gdGhpcy5nZXRQYXJlbnRDb250cm9sKGNvbnRyb2wpO1xuICAgICAgICAgIHNwbGl0VGV4dC5mb3JFYWNoKChuYW1lLGluZGV4KT0+eyBmb3JtQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2xzW25hbWVdfSlcbiAgICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gICAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGNvbnRyb2wucGFyZW50KSA/IGNvbnRyb2wucGFyZW50LmdldChbZmllbGROYW1lXSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcGFyZW50T2JqZWN0VmFsdWUoY29udHJvbDogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogRm9ybUdyb3VwIHwgRm9ybUFycmF5IHtcbiAgICAgICAgaWYgKCFjb250cm9sLnBhcmVudClcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb250cm9sID0gdGhpcy5wYXJlbnRPYmplY3RWYWx1ZShjb250cm9sLnBhcmVudClcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xcbiAgICB9XG5cbiAgICBcblxuICAgIHN0YXRpYyBpc051bWVyaWModmFsdWU6YW55KXtcbiAgICAgICByZXR1cm4gKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkgKyAxKSA+PSAwO1xuICB9XG5cbiAgc3RhdGljIG5vdEVxdWFsVG8ocHJpbWFyeVZhbHVlOiBhbnksIHNlY29uZGFyeVZhbHVlOiBhbnkpIHtcbiAgICBsZXQgZmlyc3RWYWx1ZSA9IChwcmltYXJ5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwcmltYXJ5VmFsdWUgPT09IG51bGwpID8gXCJcIiA6IHByaW1hcnlWYWx1ZTtcbiAgICBsZXQgc2Vjb25kVmFsdWUgPSAoc2Vjb25kYXJ5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzZWNvbmRhcnlWYWx1ZSA9PT0gbnVsbCkgPyBcIlwiIDogc2Vjb25kYXJ5VmFsdWU7XG4gICAgaWYoZmlyc3RWYWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgc2Vjb25kVmFsdWUgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gK2ZpcnN0VmFsdWUgIT0gK3NlY29uZFZhbHVlO1xuICAgIHJldHVybiAoZmlyc3RWYWx1ZSAhPSBzZWNvbmRWYWx1ZSlcbiAgfVxuXG4gICAgc3RhdGljIG51bWVyaWNWYWxpZGF0aW9uKGFsbG93RGVjaW1hbDpib29sZWFuLCBhY2NlcHRWYWx1ZTpOdW1lcmljVmFsdWVUeXBlKSB7XG4gICAgICBsZXQgZGVjaW1hbFN5bWJvbDpzdHJpbmc7XG4gICAgICBpZihSZWFjdGl2ZUZvcm1Db25maWcgJiYgUmVhY3RpdmVGb3JtQ29uZmlnLm51bWJlcil7XG4gICAgICAgIGRlY2ltYWxTeW1ib2wgPSAoUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24gJiYgUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24uYWxsb3dEZWNpbWFsU3ltYm9sKSA/IFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uLmFsbG93RGVjaW1hbFN5bWJvbCA6ICBSZWFjdGl2ZUZvcm1Db25maWcubnVtYmVyLmRlY2ltYWxTeW1ib2w7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgZGVjaW1hbFN5bWJvbCA9IFwiLlwiO1xuICAgICAgfVxuICAgICAgICBcbiAgICAgICAgYWNjZXB0VmFsdWUgPSAoYWNjZXB0VmFsdWUgPT0gdW5kZWZpbmVkKSA/IE51bWVyaWNWYWx1ZVR5cGUuUG9zaXRpdmVOdW1iZXIgOiBhY2NlcHRWYWx1ZTtcbiAgICAgICAgbGV0IHJlZ2V4ID0gL15bMC05XSskLztcbiAgICAgICAgc3dpdGNoKGFjY2VwdFZhbHVlKXtcbiAgICAgICAgICAgIGNhc2UgTnVtZXJpY1ZhbHVlVHlwZS5Qb3NpdGl2ZU51bWJlcjpcbiAgICAgICAgICAgICAgcmVnZXggPSAoIWFsbG93RGVjaW1hbCkgPyAvXlswLTldKyQvIDogKGRlY2ltYWxTeW1ib2wgPT0gXCIuXCIgIHx8IGRlY2ltYWxTeW1ib2wgPT0gdW5kZWZpbmVkKSA/IC9eWzAtOVxcLl0rJC8gOiAvXlswLTlcXCxdKyQvO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICBOdW1lcmljVmFsdWVUeXBlLk5lZ2F0aXZlTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJlZ2V4ID0gKCFhbGxvd0RlY2ltYWwpID8gL15bLV1bMC05XSskLyA6IChkZWNpbWFsU3ltYm9sID09IFwiLlwiIHx8IGRlY2ltYWxTeW1ib2wgPT0gdW5kZWZpbmVkKT8gIC9eWy1dWzAtOVxcLl0rJC8gOiAvXlstXVswLTlcXCxdKyQvO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE51bWVyaWNWYWx1ZVR5cGUuQm90aCA6XG4gICAgICAgICAgICAgICAgcmVnZXggPSAoIWFsbG93RGVjaW1hbCkgPyAvXlstfCtdP1swLTldKyQvIDogKGRlY2ltYWxTeW1ib2wgPT0gXCIuXCIgfHwgZGVjaW1hbFN5bWJvbCA9PSB1bmRlZmluZWQpID8gIC9eWy18K10/WzAtOVxcLl0rJC8gOiAvXlstfCtdP1swLTlcXCxdKyQvO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIHJldHVybiByZWdleDtcbiAgICB9XG5cbiAgICBzdGF0aWMgY29uZmlndXJlQ29udHJvbChjb250cm9sOmFueSxjb25maWc6YW55LHR5cGU6c3RyaW5nKXtcbiAgICAgICAgICBpZighY29udHJvbC52YWxpZGF0b3JDb25maWcpe1xuICAgICAgICAgICAgbGV0IGpPYmplY3Q9IHt9O1xuICAgICAgICAgICAgak9iamVjdFt0eXBlXSA9IGNvbmZpZztcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29udHJvbCx7dmFsaWRhdG9yQ29uZmlnOmpPYmplY3R9KVxuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgY29udHJvbC52YWxpZGF0b3JDb25maWdbdHlwZV0gPSBjb25maWc7XG4gICAgfVxuXG4gICAgc3RhdGljIGxvd2VyQ2FzZVdpdGhUcmltKHZhbHVlOnN0cmluZykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkgOiBTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiBhIHZhbHVlIGlzIGFuIG9iamVjdCAqL1xuICAgIHN0YXRpYyBpc09iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJztcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBvYmplY3QgKi9cbiAgICBzdGF0aWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2xvbmVWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uVXRpbC5pc09iamVjdCh2YWx1ZSkgPyBBcHBsaWNhdGlvblV0aWwuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogey4uLnZhbHVlfSA6IHZhbHVlO1xuICAgIH1cblxuICAgXG59XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvdXRpbC9hcHAtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsTUFBTSxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztBQUVsRCxNQUFNLE9BQU8sZUFBZTtJQUMzQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQXdCO1FBQzFELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxPQUF3QjtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3RELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQVksT0FBTyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3ZELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzFFLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBd0I7UUFDeEQsSUFBSSxXQUFXLEdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLElBQUksZUFBZSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNwRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLE9BQU8sRUFBRTtvQkFDeEQsV0FBVyxHQUFHLGVBQWUsQ0FBQztvQkFDOUIsTUFBTTtpQkFDTjthQUNEO1NBQ0Q7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQXdCO1FBQ3hELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sWUFBWSxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sWUFBWSxXQUFXLENBQUMsRUFBRTtZQUN0RyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3BELE9BQU8sTUFBTSxDQUFDO1NBQ2Q7UUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSztRQUMxQixJQUFJLEtBQUs7WUFDUixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQWlCLEVBQUUsU0FBb0I7UUFDL0QsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLElBQUksV0FBVyxHQUFRLFNBQVMsQ0FBQztZQUNqQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNoRixPQUFPLFdBQVcsQ0FBQztTQUNuQjs7WUFDQSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBaUIsRUFBRSxPQUF3QjtRQUN2RSxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUMzQyxJQUFJLFdBQVcsR0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEYsT0FBTyxXQUFXLENBQUM7U0FDbkI7UUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUE4QjtRQUM5RCxPQUFPLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzRSxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFpQixFQUFFLGNBQW1CO1FBQzlELElBQUksVUFBVSxHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzNGLElBQUksV0FBVyxHQUFHLENBQUMsY0FBYyxLQUFLLFNBQVMsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ2xHLElBQUksVUFBVSxZQUFZLElBQUksSUFBSSxXQUFXLFlBQVksSUFBSTtZQUM1RCxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFxQixFQUFFLFdBQTZCO1FBQ25GLElBQUksYUFBcUIsQ0FBQztRQUMxQixJQUFJLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUNwRCxhQUFhLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztTQUMvSzthQUFNO1lBQ04sYUFBYSxHQUFHLEdBQUcsQ0FBQztTQUNwQjtRQUVELFdBQVcsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDekYsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLFFBQVEsV0FBVyxFQUFFO1lBQ3BCLEtBQUssZ0JBQWdCLENBQUMsY0FBYztnQkFDbkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxHQUFHLElBQUksYUFBYSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDMUgsTUFBTTtZQUNQLEtBQUssZ0JBQWdCLENBQUMsY0FBYztnQkFDbkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxHQUFHLElBQUksYUFBYSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDbkksTUFBTTtZQUNQLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDekIsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLEdBQUcsSUFBSSxhQUFhLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDNUksTUFBTTtTQUNQO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQVksRUFBRSxNQUFXLEVBQUUsSUFBWTtRQUNyRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUM3QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQ3BEOztZQUNBLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBYTtRQUM1QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQVU7UUFDaEMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssaUJBQWlCLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVO1FBQ2xDLE9BQU8sZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBOdW1lcmljVmFsdWVUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgUnhGb3JtQXJyYXkgfSBmcm9tIFwiLi4vc2VydmljZXMvcngtZm9ybS1hcnJheVwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3JtQ29uZmlnIH0gZnJvbSBcIi4vcmVhY3RpdmUtZm9ybS1jb25maWdcIjtcblxuY29uc3QgTU9ERUxfSU5TVEFOQ0VfVkFMVUUgPSBcIm1vZGVsSW5zdGFuY2VWYWx1ZVwiO1xuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25VdGlsIHtcblx0LyoqXG5cdCAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgY29udHJvbCBvYmplY3Rcblx0ICogQHBhcmFtIGNvbnRyb2wgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRQYXJlbnRPYmplY3RWYWx1ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcblx0XHRyZXR1cm4gY29udHJvbC5wYXJlbnQgPyB0aGlzLnBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wucGFyZW50KT8udmFsdWUgOiB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgcHJhbnQgbW9kZWwgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGNvbnRyb2wgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRQYXJlbnRNb2RlbEluc3RhbmNlVmFsdWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG5cdFx0cmV0dXJuIGNvbnRyb2wucGFyZW50ID8gdGhpcy5wYXJlbnRPYmplY3RWYWx1ZShjb250cm9sLnBhcmVudClbTU9ERUxfSU5TVEFOQ0VfVkFMVUVdIDoge307XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcm9vdCBjb250cm9sIG9mIHRoZSBzcGVjaWZpZWQgY29udHJvbFxuXHQgKiBAcGFyYW0gY29udHJvbCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFJvb3RGb3JtR3JvdXAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogRm9ybUdyb3VwIHtcblx0XHRyZXR1cm4gY29udHJvbC5wYXJlbnQgPyB0aGlzLmdldFJvb3RGb3JtR3JvdXAoY29udHJvbC5wYXJlbnQpIDogPEZvcm1Hcm91cD5jb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgcGFyZW50IGNvbnRyb2xcblx0ICogQHBhcmFtIGNvbnRyb2wgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgZ2V0UGFyZW50Q29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcblx0XHRyZXR1cm4gY29udHJvbC5wYXJlbnQgPyB0aGlzLnBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wucGFyZW50KSA6IGNvbnRyb2w7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGdldEZvcm1Db250cm9sTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcblx0XHRsZXQgY29udHJvbE5hbWU6IHN0cmluZyA9ICcnO1xuXHRcdGlmIChjb250cm9sLnBhcmVudCkge1xuXHRcdFx0Zm9yICh2YXIgZm9ybUNvbnRyb2xOYW1lIGluIGNvbnRyb2wucGFyZW50LmNvbnRyb2xzKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLnBhcmVudC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdID09IGNvbnRyb2wpIHtcblx0XHRcdFx0XHRjb250cm9sTmFtZSA9IGZvcm1Db250cm9sTmFtZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbE5hbWU7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGdldFBhcmVudEZvcm1BcnJheShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcblx0XHRpZiAoY29udHJvbC5wYXJlbnQgJiYgIShjb250cm9sLnBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSB8fCBjb250cm9sLnBhcmVudCBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSkge1xuXHRcdFx0bGV0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Rm9ybUFycmF5KGNvbnRyb2wucGFyZW50KVxuXHRcdFx0cmV0dXJuIHBhcmVudDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRyb2wucGFyZW50O1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyB0b0xvd2VyKHZhbHVlKSB7XG5cdFx0aWYgKHZhbHVlKVxuXHRcdFx0cmV0dXJuIFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXRDb250cm9sKGZpZWxkTmFtZTogc3RyaW5nLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xuXHRcdGxldCBzcGxpdFRleHQgPSBmaWVsZE5hbWUuc3BsaXQoJy4nKTtcblx0XHRpZiAoc3BsaXRUZXh0Lmxlbmd0aCA+IDEpIHtcblx0XHRcdHZhciBmb3JtQ29udHJvbDogYW55ID0gZm9ybUdyb3VwO1xuXHRcdFx0c3BsaXRUZXh0LmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiB7IGZvcm1Db250cm9sID0gZm9ybUNvbnRyb2wuY29udHJvbHNbbmFtZV0gfSlcblx0XHRcdHJldHVybiBmb3JtQ29udHJvbDtcblx0XHR9IGVsc2Vcblx0XHRcdHJldHVybiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGROYW1lXTtcblxuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXRGb3JtQ29udHJvbChmaWVsZE5hbWU6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG5cdFx0bGV0IHNwbGl0VGV4dCA9IGZpZWxkTmFtZS5zcGxpdCgnLicpO1xuXHRcdGlmIChzcGxpdFRleHQubGVuZ3RoID4gMSAmJiBjb250cm9sLnBhcmVudCkge1xuXHRcdFx0dmFyIGZvcm1Db250cm9sOiBhbnkgPSB0aGlzLmdldFBhcmVudENvbnRyb2woY29udHJvbCk7XG5cdFx0XHRzcGxpdFRleHQuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHsgZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbC5jb250cm9sc1tuYW1lXSB9KVxuXHRcdFx0cmV0dXJuIGZvcm1Db250cm9sO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wucGFyZW50KSA/IGNvbnRyb2wucGFyZW50LmdldChbZmllbGROYW1lXSkgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBwYXJlbnQgY29udHJvaWwgcmVjdXJzaXZlbHlcblx0ICogQHBhcmFtIGNvbnRyb2wgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgcGFyZW50T2JqZWN0VmFsdWUoY29udHJvbDogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogRm9ybUdyb3VwIHwgRm9ybUFycmF5IHtcblx0XHRyZXR1cm4gY29udHJvbD8ucGFyZW50ID8gdGhpcy5wYXJlbnRPYmplY3RWYWx1ZShjb250cm9sLnBhcmVudCkgOiBjb250cm9sO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBpc051bWVyaWModmFsdWU6IGFueSkge1xuXHRcdHJldHVybiAodmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSArIDEpID49IDA7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIG5vdEVxdWFsVG8ocHJpbWFyeVZhbHVlOiBhbnksIHNlY29uZGFyeVZhbHVlOiBhbnkpIHtcblx0XHRsZXQgZmlyc3RWYWx1ZSA9IChwcmltYXJ5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwcmltYXJ5VmFsdWUgPT09IG51bGwpID8gXCJcIiA6IHByaW1hcnlWYWx1ZTtcblx0XHRsZXQgc2Vjb25kVmFsdWUgPSAoc2Vjb25kYXJ5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzZWNvbmRhcnlWYWx1ZSA9PT0gbnVsbCkgPyBcIlwiIDogc2Vjb25kYXJ5VmFsdWU7XG5cdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIHNlY29uZFZhbHVlIGluc3RhbmNlb2YgRGF0ZSlcblx0XHRcdHJldHVybiArZmlyc3RWYWx1ZSAhPSArc2Vjb25kVmFsdWU7XG5cdFx0cmV0dXJuIChmaXJzdFZhbHVlICE9IHNlY29uZFZhbHVlKVxuXHR9XG5cblx0cHVibGljIHN0YXRpYyBudW1lcmljVmFsaWRhdGlvbihhbGxvd0RlY2ltYWw6IGJvb2xlYW4sIGFjY2VwdFZhbHVlOiBOdW1lcmljVmFsdWVUeXBlKSB7XG5cdFx0bGV0IGRlY2ltYWxTeW1ib2w6IHN0cmluZztcblx0XHRpZiAoUmVhY3RpdmVGb3JtQ29uZmlnICYmIFJlYWN0aXZlRm9ybUNvbmZpZy5udW1iZXIpIHtcblx0XHRcdGRlY2ltYWxTeW1ib2wgPSAoUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24gJiYgUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24uYWxsb3dEZWNpbWFsU3ltYm9sKSA/IFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uLmFsbG93RGVjaW1hbFN5bWJvbCA6IFJlYWN0aXZlRm9ybUNvbmZpZy5udW1iZXIuZGVjaW1hbFN5bWJvbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVjaW1hbFN5bWJvbCA9IFwiLlwiO1xuXHRcdH1cblxuXHRcdGFjY2VwdFZhbHVlID0gKGFjY2VwdFZhbHVlID09IHVuZGVmaW5lZCkgPyBOdW1lcmljVmFsdWVUeXBlLlBvc2l0aXZlTnVtYmVyIDogYWNjZXB0VmFsdWU7XG5cdFx0bGV0IHJlZ2V4ID0gL15bMC05XSskLztcblx0XHRzd2l0Y2ggKGFjY2VwdFZhbHVlKSB7XG5cdFx0XHRjYXNlIE51bWVyaWNWYWx1ZVR5cGUuUG9zaXRpdmVOdW1iZXI6XG5cdFx0XHRcdHJlZ2V4ID0gKCFhbGxvd0RlY2ltYWwpID8gL15bMC05XSskLyA6IChkZWNpbWFsU3ltYm9sID09IFwiLlwiIHx8IGRlY2ltYWxTeW1ib2wgPT0gdW5kZWZpbmVkKSA/IC9eWzAtOVxcLl0rJC8gOiAvXlswLTlcXCxdKyQvO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTnVtZXJpY1ZhbHVlVHlwZS5OZWdhdGl2ZU51bWJlcjpcblx0XHRcdFx0cmVnZXggPSAoIWFsbG93RGVjaW1hbCkgPyAvXlstXVswLTldKyQvIDogKGRlY2ltYWxTeW1ib2wgPT0gXCIuXCIgfHwgZGVjaW1hbFN5bWJvbCA9PSB1bmRlZmluZWQpID8gL15bLV1bMC05XFwuXSskLyA6IC9eWy1dWzAtOVxcLF0rJC87XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBOdW1lcmljVmFsdWVUeXBlLkJvdGg6XG5cdFx0XHRcdHJlZ2V4ID0gKCFhbGxvd0RlY2ltYWwpID8gL15bLXwrXT9bMC05XSskLyA6IChkZWNpbWFsU3ltYm9sID09IFwiLlwiIHx8IGRlY2ltYWxTeW1ib2wgPT0gdW5kZWZpbmVkKSA/IC9eWy18K10/WzAtOVxcLl0rJC8gOiAvXlstfCtdP1swLTlcXCxdKyQvO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHJlZ2V4O1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBjb25maWd1cmVDb250cm9sKGNvbnRyb2w6IGFueSwgY29uZmlnOiBhbnksIHR5cGU6IHN0cmluZykge1xuXHRcdGlmICghY29udHJvbC52YWxpZGF0b3JDb25maWcpIHtcblx0XHRcdGxldCBqT2JqZWN0ID0ge307XG5cdFx0XHRqT2JqZWN0W3R5cGVdID0gY29uZmlnO1xuXHRcdFx0T2JqZWN0LmFzc2lnbihjb250cm9sLCB7IHZhbGlkYXRvckNvbmZpZzogak9iamVjdCB9KVxuXHRcdH0gZWxzZVxuXHRcdFx0Y29udHJvbC52YWxpZGF0b3JDb25maWdbdHlwZV0gPSBjb25maWc7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGxvd2VyQ2FzZVdpdGhUcmltKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkgOiBTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gb2JqZWN0XG5cdCAqIEBwYXJhbSB2YWx1ZSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBvYmplY3Rcblx0ICogQHBhcmFtIHZhbHVlIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb25lcyB0aGUgc3BlY2lmaWVkIG9iamVjdCB2YWx1ZVxuXHQgKiBAcGFyYW0gdmFsdWUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjbG9uZVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBBcHBsaWNhdGlvblV0aWwuaXNPYmplY3QodmFsdWUpID8gQXBwbGljYXRpb25VdGlsLmlzQXJyYXkodmFsdWUpID8gWy4uLnZhbHVlXSA6IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FormProvider } from "./form-provider";
|
|
2
|
-
import { clone } from "../services/entity.service";
|
|
3
1
|
import { CONFIG_REQUIRED_FIELDS } from "../const/config-required-fields.const";
|
|
2
|
+
import { clone } from "../services/entity.service";
|
|
3
|
+
import { FormProvider } from "./form-provider";
|
|
4
4
|
export function getConfigObject(config, control, configName = '') {
|
|
5
5
|
return (config != undefined && config != true) ? configProvider(control, config, configName) : {};
|
|
6
6
|
}
|
|
@@ -17,8 +17,9 @@ function configProvider(control, config, configName) {
|
|
|
17
17
|
});
|
|
18
18
|
return currentConfig;
|
|
19
19
|
}
|
|
20
|
-
else
|
|
20
|
+
else {
|
|
21
21
|
return config;
|
|
22
|
+
}
|
|
22
23
|
}
|
|
23
24
|
return checkRequiredProps(config, configName);
|
|
24
25
|
}
|
|
@@ -26,10 +27,11 @@ function checkRequiredProps(config, configName) {
|
|
|
26
27
|
let props = CONFIG_REQUIRED_FIELDS[configName];
|
|
27
28
|
if (configName) {
|
|
28
29
|
props.forEach(prop => {
|
|
29
|
-
if (config[prop] === undefined)
|
|
30
|
+
if (config[prop] === undefined) {
|
|
30
31
|
throw new Error(`Pass the property of '${prop}' with value in the ${configName}, otherwise it won't work.`);
|
|
32
|
+
}
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
return config;
|
|
34
36
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL3V0aWwvY29uZmlnLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFXLEVBQUUsT0FBWSxFQUFFLGFBQXFCLEVBQUU7SUFDOUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RHLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUF3QixFQUFFLE1BQVcsRUFBRSxVQUFrQjtJQUM3RSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDdEIsSUFBSSxhQUFhLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzFFLElBQUksT0FBTyxhQUFhLElBQUksU0FBUyxFQUFFO1lBQ25DLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7WUFDbkUsYUFBYSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBRW5ELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxJQUFJLHVCQUF1QixJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUMxRixhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxhQUFhLENBQUM7U0FDeEI7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0tBQ0o7SUFFRCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxNQUFXLEVBQUUsVUFBa0I7SUFDdkQsSUFBSSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLEVBQUU7UUFDWixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSx1QkFBdUIsVUFBVSw0QkFBNEIsQ0FBQyxDQUFDO2FBQy9HO1FBQ0wsQ0FBQyxDQUFDLENBQUE7S0FDTDtJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IENPTkZJR19SRVFVSVJFRF9GSUVMRFMgfSBmcm9tIFwiLi4vY29uc3QvY29uZmlnLXJlcXVpcmVkLWZpZWxkcy5jb25zdFwiO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tIFwiLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2VcIjtcbmltcG9ydCB7IEZvcm1Qcm92aWRlciB9IGZyb20gXCIuL2Zvcm0tcHJvdmlkZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ09iamVjdChjb25maWc6IGFueSwgY29udHJvbDogYW55LCBjb25maWdOYW1lOiBzdHJpbmcgPSAnJyk6IGFueSB7XG4gICAgcmV0dXJuIChjb25maWcgIT0gdW5kZWZpbmVkICYmIGNvbmZpZyAhPSB0cnVlKSA/IGNvbmZpZ1Byb3ZpZGVyKGNvbnRyb2wsIGNvbmZpZywgY29uZmlnTmFtZSkgOiB7fTtcbn1cblxuZnVuY3Rpb24gY29uZmlnUHJvdmlkZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb25maWc6IGFueSwgY29uZmlnTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoY29uZmlnLmR5bmFtaWNDb25maWcpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRDb25maWcgPSBGb3JtUHJvdmlkZXIuUHJvY2Vzc1J1bGUoY29udHJvbCwgY2xvbmUoY29uZmlnKSwgdHJ1ZSlcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50Q29uZmlnICE9IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICBjdXJyZW50Q29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbiA9IGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb247XG4gICAgICAgICAgICBjdXJyZW50Q29uZmlnLmR5bmFtaWNDb25maWcgPSBjb25maWcuZHluYW1pY0NvbmZpZztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgodCAhPSBcImNvbmRpdGlvbmFsRXhwcmVzc2lvblwiICYmIHQgIT0gXCJkeW5hbWljQ29uZmlnXCIpIHx8IGN1cnJlbnRDb25maWdbdF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29uZmlnW3RdID0gY29uZmlnW3RdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudENvbmZpZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2tSZXF1aXJlZFByb3BzKGNvbmZpZywgY29uZmlnTmFtZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVxdWlyZWRQcm9wcyhjb25maWc6IGFueSwgY29uZmlnTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHByb3BzID0gQ09ORklHX1JFUVVJUkVEX0ZJRUxEU1tjb25maWdOYW1lXTtcbiAgICBpZiAoY29uZmlnTmFtZSkge1xuICAgICAgICBwcm9wcy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZ1twcm9wXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXNzIHRoZSBwcm9wZXJ0eSBvZiAnJHtwcm9wfScgd2l0aCB2YWx1ZSBpbiB0aGUgJHtjb25maWdOYW1lfSwgb3RoZXJ3aXNlIGl0IHdvbid0IHdvcmsuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xufSJdfQ==
|