@decaf-ts/decorator-validation 1.5.11 → 1.6.0
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/dist/decorator-validation.cjs +2585 -0
- package/dist/decorator-validation.esm.cjs +2524 -0
- package/{dist/types → lib/esm}/index.d.ts +1 -1
- package/lib/esm/index.js +2 -3
- package/lib/esm/model/Model.js +1 -2
- package/lib/esm/model/ModelErrorDefinition.js +1 -2
- package/lib/esm/model/constants.js +1 -2
- package/lib/esm/model/construction.js +1 -2
- package/lib/esm/model/decorators.js +1 -2
- package/lib/esm/model/index.js +1 -2
- package/lib/esm/model/types.js +1 -2
- package/lib/esm/model/validation.js +1 -2
- package/lib/esm/utils/constants.js +1 -2
- package/lib/esm/utils/dates.js +1 -2
- package/lib/esm/utils/decorators.js +1 -2
- package/lib/esm/utils/hashing.js +1 -2
- package/lib/esm/utils/index.js +1 -2
- package/lib/esm/utils/registry.js +1 -2
- package/lib/esm/utils/serialization.js +1 -2
- package/lib/esm/utils/strings.js +1 -2
- package/lib/esm/utils/types.js +1 -2
- package/lib/esm/validation/Validation.js +1 -2
- package/lib/esm/validation/Validators/DateValidator.js +1 -2
- package/lib/esm/validation/Validators/EmailValidator.js +1 -2
- package/lib/esm/validation/Validators/ListValidator.js +1 -2
- package/lib/esm/validation/Validators/MaxLengthValidator.js +1 -2
- package/lib/esm/validation/Validators/MaxValidator.js +1 -2
- package/lib/esm/validation/Validators/MinLengthValidator.js +1 -2
- package/lib/esm/validation/Validators/MinValidator.js +1 -2
- package/lib/esm/validation/Validators/PasswordValidator.js +1 -2
- package/lib/esm/validation/Validators/PatternValidator.js +1 -2
- package/lib/esm/validation/Validators/RequiredValidator.js +1 -2
- package/lib/esm/validation/Validators/StepValidator.js +1 -2
- package/lib/esm/validation/Validators/TypeValidator.js +1 -2
- package/lib/esm/validation/Validators/URLValidator.js +1 -2
- package/lib/esm/validation/Validators/Validator.js +1 -2
- package/lib/esm/validation/Validators/ValidatorRegistry.js +1 -2
- package/lib/esm/validation/Validators/constants.js +1 -2
- package/lib/esm/validation/Validators/decorators.js +1 -2
- package/lib/esm/validation/Validators/index.js +1 -2
- package/lib/esm/validation/decorators.js +1 -2
- package/lib/esm/validation/index.js +1 -2
- package/lib/esm/validation/types.js +1 -2
- package/lib/index.cjs +2 -3
- package/lib/index.d.ts +42 -0
- package/lib/model/Model.cjs +1 -2
- package/lib/model/Model.d.ts +204 -0
- package/lib/model/ModelErrorDefinition.cjs +1 -2
- package/lib/model/ModelErrorDefinition.d.ts +22 -0
- package/lib/model/constants.cjs +1 -2
- package/lib/model/constants.d.ts +56 -0
- package/lib/model/construction.cjs +1 -2
- package/lib/model/construction.d.ts +29 -0
- package/lib/model/decorators.cjs +1 -2
- package/lib/model/decorators.d.ts +25 -0
- package/lib/model/index.cjs +1 -2
- package/lib/model/index.d.ts +7 -0
- package/lib/model/types.cjs +1 -2
- package/lib/model/types.d.ts +79 -0
- package/lib/model/validation.cjs +1 -2
- package/lib/model/validation.d.ts +14 -0
- package/lib/utils/constants.cjs +1 -2
- package/lib/utils/constants.d.ts +26 -0
- package/lib/utils/dates.cjs +1 -2
- package/lib/utils/dates.d.ts +76 -0
- package/lib/utils/decorators.cjs +1 -2
- package/lib/utils/decorators.d.ts +2 -0
- package/lib/utils/hashing.cjs +1 -2
- package/lib/utils/hashing.d.ts +38 -0
- package/lib/utils/index.cjs +1 -2
- package/lib/utils/index.d.ts +8 -0
- package/lib/utils/registry.cjs +1 -2
- package/lib/utils/registry.d.ts +68 -0
- package/lib/utils/serialization.cjs +1 -2
- package/lib/utils/serialization.d.ts +53 -0
- package/lib/utils/strings.cjs +1 -2
- package/lib/utils/strings.d.ts +25 -0
- package/lib/utils/types.cjs +1 -2
- package/lib/utils/types.d.ts +29 -0
- package/lib/validation/Validation.cjs +1 -2
- package/lib/validation/Validation.d.ts +51 -0
- package/lib/validation/Validators/DateValidator.cjs +1 -2
- package/lib/validation/Validators/DateValidator.d.ts +28 -0
- package/lib/validation/Validators/EmailValidator.cjs +1 -2
- package/lib/validation/Validators/EmailValidator.d.ts +28 -0
- package/lib/validation/Validators/ListValidator.cjs +1 -2
- package/lib/validation/Validators/ListValidator.d.ts +28 -0
- package/lib/validation/Validators/MaxLengthValidator.cjs +1 -2
- package/lib/validation/Validators/MaxLengthValidator.d.ts +29 -0
- package/lib/validation/Validators/MaxValidator.cjs +1 -2
- package/lib/validation/Validators/MaxValidator.d.ts +28 -0
- package/lib/validation/Validators/MinLengthValidator.cjs +1 -2
- package/lib/validation/Validators/MinLengthValidator.d.ts +29 -0
- package/lib/validation/Validators/MinValidator.cjs +1 -2
- package/lib/validation/Validators/MinValidator.d.ts +28 -0
- package/lib/validation/Validators/PasswordValidator.cjs +1 -2
- package/lib/validation/Validators/PasswordValidator.d.ts +28 -0
- package/lib/validation/Validators/PatternValidator.cjs +1 -2
- package/lib/validation/Validators/PatternValidator.d.ts +37 -0
- package/lib/validation/Validators/RequiredValidator.cjs +1 -2
- package/lib/validation/Validators/RequiredValidator.d.ts +28 -0
- package/lib/validation/Validators/StepValidator.cjs +1 -2
- package/lib/validation/Validators/StepValidator.d.ts +29 -0
- package/lib/validation/Validators/TypeValidator.cjs +1 -2
- package/lib/validation/Validators/TypeValidator.d.ts +25 -0
- package/lib/validation/Validators/URLValidator.cjs +1 -2
- package/lib/validation/Validators/URLValidator.d.ts +27 -0
- package/lib/validation/Validators/Validator.cjs +1 -2
- package/lib/validation/Validators/Validator.d.ts +41 -0
- package/lib/validation/Validators/ValidatorRegistry.cjs +1 -2
- package/lib/validation/Validators/ValidatorRegistry.d.ts +47 -0
- package/lib/validation/Validators/constants.cjs +1 -2
- package/lib/validation/Validators/constants.d.ts +96 -0
- package/lib/validation/Validators/decorators.cjs +1 -2
- package/lib/validation/Validators/decorators.d.ts +12 -0
- package/lib/validation/Validators/index.cjs +1 -2
- package/lib/validation/Validators/index.d.ts +17 -0
- package/lib/validation/decorators.cjs +1 -2
- package/lib/validation/decorators.d.ts +178 -0
- package/lib/validation/index.cjs +1 -2
- package/lib/validation/index.d.ts +4 -0
- package/lib/validation/types.cjs +1 -2
- package/lib/validation/types.d.ts +134 -0
- package/package.json +24 -36
- package/dist/decorator-validation.js +0 -2
- package/dist/decorator-validation.js.LICENSE.txt +0 -14
- package/dist/esm/decorator-validation.js +0 -2
- package/dist/esm/decorator-validation.js.LICENSE.txt +0 -14
- /package/{dist/types → lib/esm}/model/Model.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/ModelErrorDefinition.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/constants.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/construction.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/decorators.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/index.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/types.d.ts +0 -0
- /package/{dist/types → lib/esm}/model/validation.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/constants.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/dates.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/decorators.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/hashing.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/index.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/registry.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/serialization.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/strings.d.ts +0 -0
- /package/{dist/types → lib/esm}/utils/types.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validation.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/DateValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/EmailValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/ListValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/MaxLengthValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/MaxValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/MinLengthValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/MinValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/PasswordValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/PatternValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/RequiredValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/StepValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/TypeValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/URLValidator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/Validator.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/ValidatorRegistry.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/constants.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/decorators.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/Validators/index.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/decorators.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/index.d.ts +0 -0
- /package/{dist/types → lib/esm}/validation/types.d.ts +0 -0
|
@@ -15,5 +15,4 @@ export * from "./TypeValidator";
|
|
|
15
15
|
export * from "./URLValidator";
|
|
16
16
|
export * from "./Validator";
|
|
17
17
|
export * from "./ValidatorRegistry";
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHFCQUFxQixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRW1haWxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3RWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01heExlbmd0aFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWF4VmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NaW5MZW5ndGhWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01pblZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGFzc3dvcmRWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1BhdHRlcm5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JlcXVpcmVkVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TdGVwVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9UeXBlVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9VUkxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yUmVnaXN0cnlcIjtcbiJdfQ==
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRW1haWxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3RWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01heExlbmd0aFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWF4VmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NaW5MZW5ndGhWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01pblZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGFzc3dvcmRWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1BhdHRlcm5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JlcXVpcmVkVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TdGVwVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9UeXBlVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9VUkxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yUmVnaXN0cnlcIjtcbiJdfQ==
|
|
@@ -286,5 +286,4 @@ export function list(clazz, collection = "Array", message = DEFAULT_ERROR_MESSAG
|
|
|
286
286
|
export function set(clazz, message = DEFAULT_ERROR_MESSAGES.LIST) {
|
|
287
287
|
return list(clazz, "Set", message);
|
|
288
288
|
}
|
|
289
|
-
|
|
290
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsVUFBa0Isc0JBQXNCLENBQUMsUUFBUTtJQUN4RSxPQUFPLFlBQVksQ0FDakIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQ3ZDO1FBQ0UsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixzQkFBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8sWUFBWSxDQUFxQixVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxRSxHQUFHLEVBQUUsS0FBSztRQUNWLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztLQUNoQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQ2pCLEtBQTZCLEVBQzdCLFVBQWtCLHNCQUFzQixDQUFDLEdBQUc7SUFFNUMsT0FBTyxZQUFZLENBQXFCLFVB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Q0FDbEIsS0FBc0QsRUFDdEQsYUFBOEIsT0FBTyxFQUNyQyxVQUFrQixzQkFBc0IsQ0FBQyxJQUFJO0lBRTdDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZELEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNyRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FDakIsS0FBNEIsRUFDNUIsVUFBa0Isc0JBQXNCLENBQUMsSUFBSTtJQUU3QyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1ldGFkYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfRVJST1JfTUVTU0FHRVMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG4gIFZhbGlkYXRpb25LZXlzLFxufSBmcm9tIFwiLi9WYWxpZGF0b3JzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbC90eXBlc1wiO1xuaW1wb3J0IHsgcGFyc2VEYXRlIH0gZnJvbSBcIi4uL3V0aWxzL2RhdGVzXCI7XG5pbXBvcnQgeyBwcm9wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdXRpbHMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gXCIuL1ZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgcmVxdWlyZWQuXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1JFUVVJUkVEfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1JFUVVJUkVEfVxuICpcbiAqIEBmdW5jdGlvbiByZXF1aXJlZFxuICpcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlJFUVVJUkVEKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRCksXG4gICAge1xuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU59XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOfVxuICpcbiAqIEBmdW5jdGlvbiBtaW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWluKFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5cbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuTUlOKSwge1xuICAgIG1pbjogdmFsdWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW051bWJlci5uYW1lLCBEYXRlLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01BWH1cbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IERhdGV9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNQVh9XG4gKlxuICogQGZ1bmN0aW9uIG1heFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXgoXG4gIHZhbHVlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWFxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NQVgpLCB7XG4gICAgbWF4OiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWUsIERhdGUubmFtZV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBzdGVwIHZhbHVlIGZvciB0aGUgcHJvcGVydHlcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjU1RFUH1cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1NURVB9XG4gKlxuICogQGZ1bmN0aW9uIHN0ZXBcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3RlcChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5TVEVQXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlNURVApLCB7XG4gICAgc3RlcDogdmFsdWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW051bWJlci5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1pbmltdW0gbGVuZ3RoIGZvciB0aGUgcHJvcGVydHlcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01JTl9MRU5HVEh9XG4gKlxuICogQGZ1bmN0aW9uIG1pbmxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaW5sZW5ndGgoXG4gIHZhbHVlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTUlOX0xFTkdUSFxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIKSxcbiAgICB7XG4gICAgICBtaW5MZW5ndGg6IHZhbHVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWUsIEFycmF5Lm5hbWUsIFNldC5uYW1lXSxcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gbGVuZ3RoIGZvciB0aGUgcHJvcGVydHlcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjTUFYX0xFTkdUSH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01BWF9MRU5HVEh9XG4gKlxuICogQGZ1bmN0aW9uIG1heGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXhsZW5ndGgoXG4gIHZhbHVlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTUFYX0xFTkdUSFxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIKSxcbiAgICB7XG4gICAgICBtYXhMZW5ndGg6IHZhbHVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWUsIEFycmF5Lm5hbWUsIFNldC5uYW1lXSxcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIFJlZ0V4cCBwYXR0ZXJuIHRoZSBwcm9wZXJ0eSBtdXN0IHJlc3BlY3RcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFUVEVSTn1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBVFRFUk59XG4gKlxuICogQGZ1bmN0aW9uIHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihcbiAgdmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVRURVJOXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlBBVFRFUk4pLFxuICAgIHtcbiAgICAgIHBhdHRlcm46IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gZW1haWxcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjRU1BSUx9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjRU1BSUx9XG4gKlxuICogQGZ1bmN0aW9uIGVtYWlsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuRU1BSUwpIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkVNQUlMKSxcbiAgICB7XG4gICAgICBwYXR0ZXJuOiBERUZBVUxUX1BBVFRFUk5TLkVNQUlMLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBhcyBhbiBVUkxcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVVJMfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1VSTH1cbiAqXG4gKiBAZnVuY3Rpb24gdXJsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlVSTCkge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuVVJMKSwge1xuICAgIHBhdHRlcm46IERFRkFVTFRfUEFUVEVSTlMuVVJMLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtTdHJpbmcubmFtZV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEVuZm9yY2VzIHR5cGUgdmVyaWZpY2F0aW9uXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1RZUEV9XG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gdHlwZXMgYWNjZXB0ZWQgdHlwZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1RZUEV9XG4gKlxuICogQGZ1bmN0aW9uIHR5cGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZShcbiAgdHlwZXM6IHN0cmluZ1tdIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEVcbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuVFlQRSksIHtcbiAgICBjdXN0b21UeXBlczogdHlwZXMsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGF0ZSBIYW5kbGVyIERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNEQVRFfVxuICpcbiAqIFdpbGwgZW5mb3JjZSBzZXJpYWxpemF0aW9uIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBhY2NlcHRlZCBmb3JtYXQgYWNjb3JkaW5nIHRvIHtAbGluayBmb3JtYXREYXRlfVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjREFURX1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gdGhlIFZhbGlkYXRvciB0byBiZSB1c2VkLiBEZWZhdWx0cyB0byB7QGxpbmsgRGF0ZVZhbGlkYXRvcn1cbiAqXG4gKiBAZnVuY3Rpb24gZGF0ZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZShcbiAgZm9ybWF0OiBzdHJpbmcgPSBcImRkL01NL3l5eXlcIixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5EQVRFXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHByb3BlcnR5S2V5PzogYW55KTogYW55ID0+IHtcbiAgICBwcm9wTWV0YWRhdGEoVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuREFURSksIHtcbiAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbRGF0ZS5uYW1lXSxcbiAgICB9KSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHNldCh0aGlzOiBhbnksIG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKVxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHZhbHVlcy5nZXQodGhpcyksXG4gICAgICAgICAgICBzZXQ6IChuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICBsZXQgdmFsOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRGF0ZShmb3JtYXQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2V0KHRoaXMsIHZhbCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2YoXCJGYWlsZWQgdG8gcGFyc2UgZGF0ZTogezB9XCIsIGUubWVzc2FnZSB8fCBlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXNbcHJvcGVydHlLZXldID0gbmV3VmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhlcmVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFBhc3N3b3JkIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1BBU1NXT1JEfVxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSBbcGF0dGVybl0gZGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkUGF0dGVybnMjQ0hBUjhfT05FX09GX0VBQ0h9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVNTV09SRH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gRGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkVmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBwYXNzd29yZFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmQoXG4gIHBhdHRlcm46IFJlZ0V4cCA9IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFTU1dPUkRcbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlBBU1NXT1JEKSwge1xuICAgIHBhdHRlcm46IHBhdHRlcm4sXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTGlzdCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBBbHNvIHNldHMgdGhlIHtAbGluayB0eXBlfSB0byB0aGUgcHJvdmlkZWQgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3Rvcn0gY2xhenpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sbGVjdGlvbl0gVGhlIGNvbGxlY3Rpb24gYmVpbmcgdXNlZC4gZGVmYXVsdHMgdG8gQXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gZGVmYXVsdHMgdG8ge0BsaW5rIExpc3RWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIGxpc3RcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3QoXG4gIGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4gfCBNb2RlbENvbnN0cnVjdG9yPGFueT5bXSxcbiAgY29sbGVjdGlvbjogXCJBcnJheVwiIHwgXCJTZXRcIiA9IFwiQXJyYXlcIixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5MSVNUXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YShWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5MSVNUKSwge1xuICAgIGNsYXp6OiBBcnJheS5pc0FycmF5KGNsYXp6KSA/IGNsYXp6Lm1hcCgoYykgPT4gYy5uYW1lKSA6IFtjbGF6ei5uYW1lXSxcbiAgICB0eXBlOiBjb2xsZWN0aW9uLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFNldCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBXcmFwcGVyIGZvciB7QGxpbmsgbGlzdH0gd2l0aCB0aGUgJ1NldCcgQ29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3Rvcn0gY2xhenpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl1cbiAqXG4gKiBAZnVuY3Rpb24gc2V0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXQoXG4gIGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTElTVFxuKSB7XG4gIHJldHVybiBsaXN0KGNsYXp6LCBcIlNldFwiLCBtZXNzYWdlKTtcbn1cbiJdfQ==
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsVUFBa0Isc0JBQXNCLENBQUMsUUFBUTtJQUN4RSxPQUFPLFlBQVksQ0FDakIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQ3ZDO1FBQ0UsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixzQkFBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8sWUFBWSxDQUFxQixVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxRSxHQUFHLEVBQUUsS0FBSztRQUNWLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztLQUNoQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQ2pCLEtBQTZCLEVBQzdCLFVBQWtCLHNCQUFzQixDQUFDLEdBQUc7SUFFNUMsT0FBTyxZQUFZLENBQXFCLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzFFLEdBQUcsRUFBRSxLQUFLO1FBQ1YsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FDbEIsS0FBYSxFQUNiLFVBQWtCLHNCQUFzQixDQUFDLElBQUk7SUFFN0MsT0FBTyxZQUFZLENBQXFCLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNFLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNyQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQWEsRUFDYixVQUFrQixzQkFBc0IsQ0FBQyxVQUFVO0lBRW5ELE9BQU8sWUFBWSxDQUNqQixVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFDekM7UUFDRSxTQUFTLEVBQUUsS0FBSztRQUNoQixPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQztLQUMzQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQWEsRUFDYixVQUFrQixzQkFBc0IsQ0FBQyxVQUFVO0lBRW5ELE9BQU8sWUFBWSxDQUNqQixVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFDekM7UUFDRSxTQUFTLEVBQUUsS0FBSztRQUNoQixPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQztLQUMzQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQXNCLEVBQ3RCLFVBQWtCLHNCQUFzQixDQUFDLE9BQU87SUFFaEQsT0FBTyxZQUFZLENBQ2pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUN0QztRQUNFLE9BQU8sRUFBRSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUM3RCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ3JCLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLFVBQWtCLHNCQUFzQixDQUFDLEtBQUs7SUFDbEUsT0FBTyxZQUFZLENBQ2pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNwQztRQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1FBQy9CLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDckIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBa0Isc0JBQXNCLENBQUMsR0FBRztJQUM5RCxPQUFPLFlBQVksQ0FBcUIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDMUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7UUFDN0IsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNyQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQ2xCLEtBQXdCLEVBQ3hCLFVBQWtCLHNCQUFzQixDQUFDLElBQUk7SUFFN0MsT0FBTyxZQUFZLENBQXFCLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNFLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQ2xCLFNBQWlCLFlBQVksRUFDN0IsVUFBa0Isc0JBQXNCLENBQUMsSUFBSTtJQUU3QyxPQUFPLENBQUMsTUFBMkIsRUFBRSxXQUFpQixFQUFPLEVBQUU7UUFDN0QsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNuQixDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFN0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFlBQVksRUFBRSxLQUFLO1lBQ25CLEdBQUcsQ0FBWSxRQUF1QjtnQkFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsWUFBWTtvQkFDeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO3dCQUN2QyxVQUFVLEVBQUUsSUFBSTt3QkFDaEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDM0IsR0FBRyxFQUFFLENBQUMsUUFBZ0MsRUFBRSxFQUFFOzRCQUN4QyxJQUFJLEdBQXFCLENBQUM7NEJBQzFCLElBQUksQ0FBQztnQ0FDSCxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQ0FDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQ3hCLENBQUM7NEJBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQ0FDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqRSxDQUFDO3dCQUNILENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDL0IsQ0FBQztZQUNELEdBQUc7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLFVBQWtCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFDN0QsVUFBa0Isc0JBQXNCLENBQUMsUUFBUTtJQUVqRCxPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMzRCxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ3JCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FDbEIsS0FBc0QsRUFDdEQsYUFBOEIsT0FBTyxFQUNyQyxVQUFrQixzQkFBc0IsQ0FBQyxJQUFJO0lBRTdDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZELEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNyRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FDakIsS0FBNEIsRUFDNUIsVUFBa0Isc0JBQXNCLENBQUMsSUFBSTtJQUU3QyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWV0YWRhdGEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgREVGQVVMVF9QQVRURVJOUyxcbiAgVmFsaWRhdGlvbktleXMsXG59IGZyb20gXCIuL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCIuLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBwYXJzZURhdGUgfSBmcm9tIFwiLi4vdXRpbHMvZGF0ZXNcIjtcbmltcG9ydCB7IHByb3BNZXRhZGF0YSB9IGZyb20gXCIuLi91dGlscy9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE1hcmtzIHRoZSBwcm9wZXJ0eSBhcyByZXF1aXJlZC5cbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUkVRVUlSRUR9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjUkVRVUlSRUR9XG4gKlxuICogQGZ1bmN0aW9uIHJlcXVpcmVkXG4gKlxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUkVRVUlSRUQpIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlJFUVVJUkVEKSxcbiAgICB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01JTn1cbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IERhdGV9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNSU59XG4gKlxuICogQGZ1bmN0aW9uIG1pblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaW4oXG4gIHZhbHVlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1JTlxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NSU4pLCB7XG4gICAgbWluOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWUsIERhdGUubmFtZV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgcHJvcGVydHlcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjTUFYfVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyIHwgRGF0ZX0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01BWH1cbiAqXG4gKiBAZnVuY3Rpb24gbWF4XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heChcbiAgdmFsdWU6IG51bWJlciB8IERhdGUgfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTUFYXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLk1BWCksIHtcbiAgICBtYXg6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIHN0ZXAgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNTVEVQfVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjU1RFUH1cbiAqXG4gKiBAZnVuY3Rpb24gc3RlcFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlNURVBcbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuU1RFUCksIHtcbiAgICBzdGVwOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU5fTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWlubGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pbmxlbmd0aChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5fTEVOR1RIXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEgpLFxuICAgIHtcbiAgICAgIG1pbkxlbmd0aDogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWF4aW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVhfTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWF4bGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heGxlbmd0aChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NQVhfTEVOR1RIXG4pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEgpLFxuICAgIHtcbiAgICAgIG1heExlbmd0aDogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgUmVnRXhwIHBhdHRlcm4gdGhlIHByb3BlcnR5IG11c3QgcmVzcGVjdFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNQQVRURVJOfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjUEFUVEVSTn1cbiAqXG4gKiBAZnVuY3Rpb24gcGF0dGVyblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXR0ZXJuKFxuICB2YWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlBBVFRFUk5cbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuUEFUVEVSTiksXG4gICAge1xuICAgICAgcGF0dGVybjogdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBhcyBhbiBlbWFpbFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNFTUFJTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNFTUFJTH1cbiAqXG4gKiBAZnVuY3Rpb24gZW1haWxcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW1haWwobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5FTUFJTCkge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuRU1BSUwpLFxuICAgIHtcbiAgICAgIHBhdHRlcm46IERFRkFVTFRfUEFUVEVSTlMuRU1BSUwsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZV0sXG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHByb3BlcnR5IGFzIGFuIFVSTFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNVUkx9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjVVJMfVxuICpcbiAqIEBmdW5jdGlvbiB1cmxcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXJsKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVVJMKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5VUkwpLCB7XG4gICAgcGF0dGVybjogREVGQVVMVF9QQVRURVJOUy5VUkwsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRW5mb3JjZXMgdHlwZSB2ZXJpZmljYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVFlQRX1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSB0eXBlcyBhY2NlcHRlZCB0eXBlc1xuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjVFlQRX1cbiAqXG4gKiBAZnVuY3Rpb24gdHlwZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlKFxuICB0eXBlczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRVxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5UWVBFKSwge1xuICAgIGN1c3RvbVR5cGVzOiB0eXBlcyxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEYXRlIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI0RBVEV9XG4gKlxuICogV2lsbCBlbmZvcmNlIHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBzZWxlY3RlZCBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IGFjY2VwdGVkIGZvcm1hdCBhY2NvcmRpbmcgdG8ge0BsaW5rIGZvcm1hdERhdGV9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNEQVRFfVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+fSBbdmFsaWRhdG9yXSB0aGUgVmFsaWRhdG9yIHRvIGJlIHVzZWQuIERlZmF1bHRzIHRvIHtAbGluayBEYXRlVmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBkYXRlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlKFxuICBmb3JtYXQ6IHN0cmluZyA9IFwiZGQvTU0veXl5eVwiLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkRBVEVcbikge1xuICByZXR1cm4gKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55PiwgcHJvcGVydHlLZXk/OiBhbnkpOiBhbnkgPT4ge1xuICAgIHByb3BNZXRhZGF0YShWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5EQVRFKSwge1xuICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtEYXRlLm5hbWVdLFxuICAgIH0pKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuXG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgc2V0KHRoaXM6IGFueSwgbmV3VmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgcHJvcGVydHlLZXkpO1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5jb25maWd1cmFibGUpXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gdmFsdWVzLmdldCh0aGlzKSxcbiAgICAgICAgICAgIHNldDogKG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWw6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFsID0gcGFyc2VEYXRlKGZvcm1hdCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXQodGhpcywgdmFsKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihzZihcIkZhaWxlZCB0byBwYXJzZSBkYXRlOiB7MH1cIiwgZS5tZXNzYWdlIHx8IGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgdGhpc1twcm9wZXJ0eUtleV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXQoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGVyZVwiKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgUGFzc3dvcmQgSGFuZGxlciBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFTU1dPUkR9XG4gKlxuICogQHBhcmFtIHtSZWdFeHB9IFtwYXR0ZXJuXSBkZWZhdWx0cyB0byB7QGxpbmsgUGFzc3dvcmRQYXR0ZXJucyNDSEFSOF9PTkVfT0ZfRUFDSH1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBU1NXT1JEfVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+fSBbdmFsaWRhdG9yXSBEZWZhdWx0cyB0byB7QGxpbmsgUGFzc3dvcmRWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIHBhc3N3b3JkXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXNzd29yZChcbiAgcGF0dGVybjogUmVnRXhwID0gREVGQVVMVF9QQVRURVJOUy5QQVNTV09SRC5DSEFSOF9PTkVfT0ZfRUFDSCxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVNTV09SRFxuKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGEoVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuUEFTU1dPUkQpLCB7XG4gICAgcGF0dGVybjogcGF0dGVybixcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBMaXN0IERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIEFsc28gc2V0cyB0aGUge0BsaW5rIHR5cGV9IHRvIHRoZSBwcm92aWRlZCBjb2xsZWN0aW9uXG4gKlxuICogQHBhcmFtIHtNb2RlbENvbnN0cnVjdG9yfSBjbGF6elxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xsZWN0aW9uXSBUaGUgY29sbGVjdGlvbiBiZWluZyB1c2VkLiBkZWZhdWx0cyB0byBBcnJheVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNMSVNUfVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+fSBbdmFsaWRhdG9yXSBkZWZhdWx0cyB0byB7QGxpbmsgTGlzdFZhbGlkYXRvcn1cbiAqXG4gKiBAZnVuY3Rpb24gbGlzdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdChcbiAgY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55PiB8IE1vZGVsQ29uc3RydWN0b3I8YW55PltdLFxuICBjb2xsZWN0aW9uOiBcIkFycmF5XCIgfCBcIlNldFwiID0gXCJBcnJheVwiLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1Rcbikge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkxJU1QpLCB7XG4gICAgY2xheno6IEFycmF5LmlzQXJyYXkoY2xhenopID8gY2xhenoubWFwKChjKSA9PiBjLm5hbWUpIDogW2NsYXp6Lm5hbWVdLFxuICAgIHR5cGU6IGNvbGxlY3Rpb24sXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgU2V0IERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgZm9yIHtAbGluayBsaXN0fSB3aXRoIHRoZSAnU2V0JyBDb2xsZWN0aW9uXG4gKlxuICogQHBhcmFtIHtNb2RlbENvbnN0cnVjdG9yfSBjbGF6elxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNMSVNUfVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+fSBbdmFsaWRhdG9yXVxuICpcbiAqIEBmdW5jdGlvbiBzZXRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldChcbiAgY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55PixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5MSVNUXG4pIHtcbiAgcmV0dXJuIGxpc3QoY2xhenosIFwiU2V0XCIsIG1lc3NhZ2UpO1xufVxuIl19
|
|
@@ -2,5 +2,4 @@ export * from "./Validators";
|
|
|
2
2
|
export * from "./decorators";
|
|
3
3
|
export * from "./types";
|
|
4
4
|
export * from "./Validation";
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdGlvblwiO1xuIl19
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0aW9uXCI7XG4iXX0=
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoidmFsaWRhdGlvbi90eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgSVJlZ2lzdHJ5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgdmFsaWRhdGlvbiBkZWNvcmF0b3IgbWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uUmVmbGVjdGlvblxuICogQGNhdGVnb3J5IFJlZmxlY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1ldGFkYXRhID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuICBhcmdzPzogYW55W107XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgcHJvcGVydHkgZGVjb3JhdG9yIGRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiA9IHtcbiAgcHJvcDogc3RyaW5nIHwgc3ltYm9sO1xuICBkZWNvcmF0b3JzOiBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBkZWNvcmF0b3IgZGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbiA9IERlY29yYXRvck1ldGFkYXRhICYge1xuICBwcm9wczogVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBlbGVtZW50IG1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbiA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcblxuICB2YWx1ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIG1vZGVsIGVycm9yc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JEZWZpbml0aW9uID0ge1xuICB2YWxpZGF0b3I6IENvbnN0cnVjdG9yPFZhbGlkYXRvcj47XG4gIHZhbGlkYXRpb25LZXk6IHN0cmluZztcbiAgc2F2ZTogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBBUEkgZm9yIGEge0BsaW5rIFZhbGlkYXRvcn0gcmVnaXN0cnlcbiAqXG4gKiBAaW50ZXJmYWNlIFZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnlcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0b3JSZWdpc3RyeTxUIGV4dGVuZHMgVmFsaWRhdG9yPiBleHRlbmRzIElSZWdpc3RyeTxUPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXRyaWV2ZXMgdGhlIGN1c3RvbSBrZXlzXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBSZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSB0aGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzIGtleXNcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ2V0S2V5cygpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIHRoZSBwcm92aWRlZCB2YWxpZGF0b3JzIG9udG8gdGhlIHJlZ2lzdHJ5XG4gICAqXG4gICAqIEB0eXBlZGVmIFQgZXh0ZW5kcyBWYWxpZGF0b3JcbiAgICogQHBhcmFtIHtUW10gfCBWYWxpZGF0b3JEZWZpbml0aW9uW119IHZhbGlkYXRvclxuICAgKiBAbWV0aG9kXG4gICAqL1xuICByZWdpc3RlcjxUIGV4dGVuZHMgVmFsaWRhdG9yPihcbiAgICAuLi52YWxpZGF0b3I6IChUIHwgVmFsaWRhdG9yRGVmaW5pdGlvbilbXVxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIFZhbGlkYXRvciBjb25zdHJ1Y3RvciBpZiByZWdpc3RlcmVkXG4gICAqXG4gICAqIEB0eXBlZGVmIFQgZXh0ZW5kcyBWYWxpZGF0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBvbmUgb2YgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5c31cbiAgICogQHJldHVybiB7VmFsaWRhdG9yIHwgdW5kZWZpbmVkfSB0aGUgcmVnaXN0ZXJlZCBWYWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbm8gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGtleVxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JPcHRpb25zID0ge1xuICBtZXNzYWdlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBVUkxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBzdGVwOiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgcGF0dGVybj86IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIG1pbjogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIG1pbkxlbmd0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1heFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgbWF4OiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgY2xheno6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIGZvcm1hdD86IHN0cmluZztcbn1cbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb3JhdG9yTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzXCI7XG5pbXBvcnQgeyBJUmVnaXN0cnkgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciB2YWxpZGF0aW9uIGRlY29yYXRvciBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5SZWZsZWN0aW9uXG4gKiBAY2F0ZWdvcnkgUmVmbGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTWV0YWRhdGEgPSB7XG4gIFtpbmRleGVyOiBzdHJpbmddOiBhbnk7XG4gIGFyZ3M/OiBhbnlbXTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBwcm9wZXJ0eSBkZWNvcmF0b3IgZGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uID0ge1xuICBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7XG4gIGRlY29yYXRvcnM6IFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgdmFsaWRhdG9yIGRlY29yYXRvciBkZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uID0gRGVjb3JhdG9yTWV0YWRhdGEgJiB7XG4gIHByb3BzOiBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb247XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgdmFsaWRhdG9yIGVsZW1lbnQgbWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsRXJyb3JzID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5cbi8qKlxuICogQHN1bW1hcnkgVXRpbCB0eXBlIGZvciB7QGxpbmsgVmFsaWRhdG9yfSBjb25maWd1cmF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvckRlZmluaXRpb24gPSB7XG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPjtcbiAgdmFsaWRhdGlvbktleTogc3RyaW5nO1xuICBzYXZlOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEFQSSBmb3IgYSB7QGxpbmsgVmFsaWRhdG9yfSByZWdpc3RyeVxuICpcbiAqIEBpbnRlcmZhY2UgVmFsaWRhdG9yUmVnaXN0cnlcbiAqIEBleHRlbmRzIElSZWdpc3RyeVxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgY3VzdG9tIGtleXNcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ2V0Q3VzdG9tS2V5cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIFJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHJldHVybiB7c3RyaW5nW119IHRoZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMga2V5c1xuICAgKiBAbWV0aG9kXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgdGhlIHByb3ZpZGVkIHZhbGlkYXRvcnMgb250byB0aGUgcmVnaXN0cnlcbiAgICpcbiAgICogQHR5cGVkZWYgVCBleHRlbmRzIFZhbGlkYXRvclxuICAgKiBAcGFyYW0ge1RbXSB8IFZhbGlkYXRvckRlZmluaXRpb25bXX0gdmFsaWRhdG9yXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgVmFsaWRhdG9yIGNvbnN0cnVjdG9yIGlmIHJlZ2lzdGVyZWRcbiAgICpcbiAgICogQHR5cGVkZWYgVCBleHRlbmRzIFZhbGlkYXRvclxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IG9uZSBvZiB0aGUge0BsaW5rIFZhbGlkYXRpb25LZXlzfVxuICAgKiBAcmV0dXJuIHtWYWxpZGF0b3IgfCB1bmRlZmluZWR9IHRoZSByZWdpc3RlcmVkIFZhbGlkYXRvciBvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9ubyBtYXRjaGluZyB0aGUgcHJvdmlkZWQga2V5XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGdldDxUIGV4dGVuZHMgVmFsaWRhdG9yPihrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvck9wdGlvbnMgPSB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICB0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfCB7IG5hbWU6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHN0ZXA6IG51bWJlciB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBwYXR0ZXJuPzogUmVnRXhwIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgbWluOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgbWluTGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBtYXg6IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBtYXhMZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBjbGF6ejogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgZm9ybWF0Pzogc3RyaW5nO1xufVxuIl19
|
package/lib/index.cjs
CHANGED
|
@@ -56,6 +56,5 @@ exports.VERSION = void 0;
|
|
|
56
56
|
__exportStar(require("./utils/index.cjs"), exports);
|
|
57
57
|
__exportStar(require("./validation/index.cjs"), exports);
|
|
58
58
|
__exportStar(require("./model/index.cjs"), exports);
|
|
59
|
-
exports.VERSION = "1.
|
|
60
|
-
|
|
61
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUg7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUVIOzs7Ozs7R0FNRztBQUVIOzs7R0FHRztBQUVIOzs7R0FHRztBQUVIOzs7R0FHRztBQUVIOzs7R0FHRztBQUVILDBDQUF3QjtBQUN4QiwrQ0FBNkI7QUFDN0IsMENBQXdCO0FBRVgsUUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBNb2RlbCBkZWZpbml0aW9uIGZ1bmN0aW9uYWxpdHlcbiAqIEBkZXNjcmlwdGlvbiBkZWZpbmVzIHRoZSBiYXNlIGNsYXNzIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAbmFtZXNwYWNlIE1vZGVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBIb2xkcyBhbGwgdGhlIHN1cHBvcnRlZCBkZWNvcmF0b3JzXG4gKiBAbmFtZXNwYWNlIERlY29yYXRvcnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IFZhbGlkYXRpb24gcmVsYXRlZCBmdW5jdGlvbmFsaXR5XG4gKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgTW9kZWwgdmFsaWRhdGlvbiBhcGlzIGFuZCBiYXNlIGNsYXNzZXMgZm9yIHZhbGlkYXRvcnNcbiAqXG4gKiBAbmFtZXNwYWNlIFZhbGlkYXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgRGF0ZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgSGFzaGluZ1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQG5hbWVzcGFjZSBTZXJpYWxpemF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIEZvcm1hdFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMS41LjExXCI7XG4iXX0=
|
|
59
|
+
exports.VERSION = "1.6.0";
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVIOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFFSDs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSCwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUVYLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgTW9kZWwgZGVmaW5pdGlvbiBmdW5jdGlvbmFsaXR5XG4gKiBAZGVzY3JpcHRpb24gZGVmaW5lcyB0aGUgYmFzZSBjbGFzcyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5XG4gKlxuICogQG5hbWVzcGFjZSBNb2RlbFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgSG9sZHMgYWxsIHRoZSBzdXBwb3J0ZWQgZGVjb3JhdG9yc1xuICogQG5hbWVzcGFjZSBEZWNvcmF0b3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBWYWxpZGF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eVxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIE1vZGVsIHZhbGlkYXRpb24gYXBpcyBhbmQgYmFzZSBjbGFzc2VzIGZvciB2YWxpZGF0b3JzXG4gKlxuICogQG5hbWVzcGFjZSBWYWxpZGF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIERhdGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIEhhc2hpbmdcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgU2VyaWFsaXphdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQG5hbWVzcGFjZSBGb3JtYXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module decorator-validation
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* @summary Model definition functionality
|
|
6
|
+
* @description defines the base class and related functionality
|
|
7
|
+
*
|
|
8
|
+
* @namespace Model
|
|
9
|
+
* @memberOf module:decorator-validation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @summary Holds all the supported decorators
|
|
13
|
+
* @namespace Decorators
|
|
14
|
+
* @memberOf module:decorator-validation
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @summary Validation related functionality
|
|
18
|
+
* @description Defines the Model validation apis and base classes for validators
|
|
19
|
+
*
|
|
20
|
+
* @namespace Validation
|
|
21
|
+
* @memberOf module:decorator-validation
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* @namespace Dates
|
|
25
|
+
* @memberOf module:decorator-validation
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* @namespace Hashing
|
|
29
|
+
* @memberOf module:decorator-validation
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* @namespace Serialization
|
|
33
|
+
* @memberOf module:decorator-validation
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* @namespace Format
|
|
37
|
+
* @memberOf module:decorator-validation
|
|
38
|
+
*/
|
|
39
|
+
export * from "./utils";
|
|
40
|
+
export * from "./validation";
|
|
41
|
+
export * from "./model";
|
|
42
|
+
export declare const VERSION = "1.6.0";
|
package/lib/model/Model.cjs
CHANGED
|
@@ -393,5 +393,4 @@ class Model {
|
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
exports.Model = Model;
|
|
396
|
-
|
|
397
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUNGO0FBcFZELHNCQW9WQyIsImZpbGUiOiJtb2RlbC9Nb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcmlhbGl6YXRpb24gfSBmcm9tIFwiLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiO1xuaW1wb3J0IHsgQnVpbGRlclJlZ2lzdHJ5IH0gZnJvbSBcIi4uL3V0aWxzL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBNb2RlbEVycm9yRGVmaW5pdGlvbiB9IGZyb20gXCIuL01vZGVsRXJyb3JEZWZpbml0aW9uXCI7XG5pbXBvcnQge1xuICBDb21wYXJhYmxlLFxuICBDb25zdHJ1Y3RvcixcbiAgSGFzaGFibGUsXG4gIE1vZGVsQXJnLFxuICBNb2RlbEJ1aWxkZXJGdW5jdGlvbixcbiAgTW9kZWxDb25zdHJ1Y3RvcixcbiAgU2VyaWFsaXphYmxlLFxuICBWYWxpZGF0YWJsZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhLCBpc0VxdWFsLCBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEhhc2hpbmcgfSBmcm9tIFwiLi4vdXRpbHMvaGFzaGluZ1wiO1xuaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsganNUeXBlcywgUmVzZXJ2ZWRNb2RlbHMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxubGV0IG1vZGVsQnVpbGRlckZ1bmN0aW9uOiBNb2RlbEJ1aWxkZXJGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBhY3RpbmdNb2RlbFJlZ2lzdHJ5OiBCdWlsZGVyUmVnaXN0cnk8YW55PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KFxuICB0YXJnZXQ6IE0sXG4gIGF0dHJpYnV0ZTogc3RyaW5nXG4pOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzTW9kZWwoKHRhcmdldCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVthdHRyaWJ1dGVdKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNb2RlbEtleXMuVFlQRSwgdGFyZ2V0LCBhdHRyaWJ1dGUpO1xuICByZXR1cm4gTW9kZWwuZ2V0KG1ldGFkYXRhLm5hbWUpID8gbWV0YWRhdGEubmFtZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBGb3IgU2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gcHVycG9zZXMuXG4gKiBAZGVzY3JpcHRpb24gUmVhZHMgdGhlIHtAbGluayBNb2RlbEtleXMuQU5DSE9SfSBwcm9wZXJ0eSBvZiBhIHtAbGluayBNb2RlbH0gdG8gZGlzY292ZXIgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlXG4gKlxuICogQGZ1bmN0aW9uIGlzTW9kZWxcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWwodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIE1vZGVsIHx8ICEhTW9kZWwuZ2V0TWV0YWRhdGEodGFyZ2V0IGFzIGFueSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBNb2RlbFJlZ2lzdHJ5IEludGVyZmFjZVxuICpcbiAqIEBpbnRlcmZhY2UgTW9kZWxSZWdpc3RyeVxuICogQGV4dGVuZHMgQnVpbGRlclJlZ2lzdHJ5PE1vZGVsPlxuICpcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgdHlwZSBNb2RlbFJlZ2lzdHJ5PFQgZXh0ZW5kcyBNb2RlbD4gPSBCdWlsZGVyUmVnaXN0cnk8VD47XG5cbi8qKlxuICogQHN1bW1hcnkgVXRpbCBjbGFzcyB0byBlbmFibGUgc2VyaWFsaXphdGlvbiBhbmQgY29ycmVjdCByZWJ1aWxkaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFuY2hvcktleSBkZWZhdWx0cyB0byB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0uIFRoZSBwcm9wZXJ0eSBuYW1lIHdoZXJlIHRoZSByZWdpc3RlcmVkIGNsYXNzIG5hbWUgaXMgc3RvcmVkO1xuICogQHBhcmFtIHtmdW5jdGlvbihSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbn0gW3Rlc3RGdW5jdGlvbl0gbWV0aG9kIHRvIHRlc3QgaWYgdGhlIHByb3ZpZGVkIG9iamVjdCBpcyBhIE1vZGVsIE9iamVjdC4gZGVmYXVsdHMgdG8ge0BsaW5rIGlzTW9kZWx9XG4gKlxuICogQGNsYXNzIE1vZGVsUmVnaXN0cnlNYW5hZ2VyXG4gKiBAaW1wbGVtZW50cyBNb2RlbFJlZ2lzdHJ5XG4gKlxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RlbFJlZ2lzdHJ5TWFuYWdlcjxUIGV4dGVuZHMgTW9kZWw+IGltcGxlbWVudHMgTW9kZWxSZWdpc3RyeTxUPiB7XG4gIHByaXZhdGUgY2FjaGU6IFJlY29yZDxzdHJpbmcsIE1vZGVsQ29uc3RydWN0b3I8VD4+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdEZ1bmN0aW9uOiAob2JqOiBvYmplY3QpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IodGVzdEZ1bmN0aW9uOiAob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBib29sZWFuID0gaXNNb2RlbCkge1xuICAgIHRoaXMudGVzdEZ1bmN0aW9uID0gdGVzdEZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJlZ2lzdGVyIG5ldyBNb2RlbHNcbiAgICogQHBhcmFtIHthbnl9IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gd2hlbiBub3QgZGVmaW5lZCwgdGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVnaXN0ZXIoY29uc3RydWN0b3I6IE1vZGVsQ29uc3RydWN0b3I8VD4sIG5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTW9kZWwgcmVnaXN0ZXJpbmcgZmFpbGVkLiBNaXNzaW5nIENsYXNzIG5hbWUgb3IgY29uc3RydWN0b3JcIlxuICAgICAgKTtcbiAgICBuYW1lID0gbmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lO1xuICAgIHRoaXMuY2FjaGVbbmFtZV0gPSBjb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBHZXRzIGEgcmVnaXN0ZXJlZCBNb2RlbCB7QGxpbmsgTW9kZWxDb25zdHJ1Y3Rvcn1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBNb2RlbENvbnN0cnVjdG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbbmFtZV07XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9ialxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXp6XSB3aGVuIHByb3ZpZGVkLCBpdCB3aWxsIGF0dGVtcHQgdG8gZmluZCB0aGUgbWF0Y2hpbmcgY29uc3RydWN0b3JcbiAgICpcbiAgICogQHRocm93cyBFcnJvciBJZiBjbGF6eiBpcyBub3QgZm91bmQsIG9yIG9iaiBpcyBub3QgYSB7QGxpbmsgTW9kZWx9IG1lYW5pbmcgaXQgaGFzIG5vIHtAbGluayBNb2RlbEtleXMuQU5DSE9SfSBwcm9wZXJ0eVxuICAgKi9cbiAgYnVpbGQob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sIGNsYXp6Pzogc3RyaW5nKTogVCB7XG4gICAgaWYgKCFjbGF6eiAmJiAhdGhpcy50ZXN0RnVuY3Rpb24ob2JqKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVkIG9iaiBpcyBub3QgYSBNb2RlbCBvYmplY3RcIik7XG4gICAgY29uc3QgbmFtZSA9IGNsYXp6IHx8IE1vZGVsLmdldE1ldGFkYXRhKG9iaiBhcyBhbnkpO1xuICAgIGlmICghKG5hbWUgaW4gdGhpcy5jYWNoZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIHNmKFwiUHJvdmlkZWQgY2xhc3MgezB9IGlzIG5vdCBhIHJlZ2lzdGVyZWQgTW9kZWwgb2JqZWN0XCIsIG5hbWUpXG4gICAgICApO1xuICAgIHJldHVybiBuZXcgdGhpcy5jYWNoZVtuYW1lXShvYmopO1xuICB9XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQnVsayBSZWdpc3RlcnMgTW9kZWxzXG4gKiBAZGVzY3JpcHRpb24gVXNlZnVsIHdoZW4gdXNpbmcgYnVuZGxlcnMgdGhhdCBtaWdodCBub3QgZXZhbHVhdGUgYWxsIHRoZSBjb2RlIGF0IG9uY2VcbiAqXG4gKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdG9yPFQ+PiB8IEFycmF5PHtuYW1lOiBzdHJpbmcsIGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPn0+fSBbbW9kZWxzXVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uTW9kZWxcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVsa01vZGVsUmVnaXN0ZXI8VCBleHRlbmRzIE1vZGVsPihcbiAgLi4ubW9kZWxzOiAoQ29uc3RydWN0b3I8VD4gfCB7IG5hbWU6IHN0cmluZzsgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFQ+IH0pW11cbikge1xuICBtb2RlbHMuZm9yRWFjaChcbiAgICAobTogQ29uc3RydWN0b3I8VD4gfCB7IG5hbWU6IHN0cmluZzsgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFQ+IH0pID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPiA9IChcbiAgICAgICAgbS5jb25zdHJ1Y3RvciA/IG0uY29uc3RydWN0b3IgOiBtXG4gICAgICApIGFzIENvbnN0cnVjdG9yPFQ+O1xuICAgICAgTW9kZWwucmVnaXN0ZXIoY29uc3RydWN0b3IsIChtIGFzIENvbnN0cnVjdG9yPFQ+KS5uYW1lKTtcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgVmFsaWRhdGFibGUgTW9kZWwgb2JqZWN0XG4gKiBAZGVzY3JpcHRpb24gTWVhbnQgdG8gYmUgdXNlZCBhcyBhIGJhc2UgY2xhc3MgZm9yIGFsbCBNb2RlbCBjbGFzc2VzXG4gKlxuICogTW9kZWwgb2JqZWN0cyBtdXN0OlxuICogIC0gSGF2ZSBhbGwgdGhlaXIgcmVxdWlyZWQgcHJvcGVydGllcyBtYXJrZWQgd2l0aCAnISc7XG4gKiAgLSBIYXZlIGFsbCB0aGVpciBvcHRpb25hbCBwcm9wZXJ0aWVzIG1hcmtlZCBhcyAnPyc6XG4gKlxuICogQHBhcmFtIHtNb2RlbCB8IHt9fSBtb2RlbCBiYXNlIG9iamVjdCBmcm9tIHdoaWNoIHRvIHBvcHVsYXRlIHByb3BlcnRpZXMgZnJvbVxuICpcbiAqIEBjbGFzcyBNb2RlbFxuICogQGFic3RyYWN0XG4gKiBAaW1wbGVtZW50cyBWYWxpZGF0YWJsZVxuICogQGltcGxlbWVudHMgU2VyaWFsaXphYmxlXG4gKlxuICogQGV4YW1wbGVcbiAqICAgICAgY2xhc3MgQ2xhc3NOYW1lIHtcbiAqICAgICAgICAgIEByZXF1aXJlZCgpXG4gKiAgICAgICAgICByZXF1aXJlZFByb3BlcnR5TmFtZSE6IFByb3BlcnR5VHlwZTtcbiAqXG4gKiAgICAgICAgICBvcHRpb25hbFByb3BlcnR5TmFtZT86IFByb3BlcnR5VHlwZTtcbiAqICAgICAgfVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kZWxcbiAgaW1wbGVtZW50cyBWYWxpZGF0YWJsZSwgU2VyaWFsaXphYmxlLCBIYXNoYWJsZSwgQ29tcGFyYWJsZTxNb2RlbD5cbntcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYXJnPzogTW9kZWxBcmc8TW9kZWw+KSB7fVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhlIG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIGRlY29yYXRlZCBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBwYXJhbSB7YW55W119IFtleGNlcHRpb25zXSBwcm9wZXJ0aWVzIGluIHRoZSBvYmplY3QgdG8gYmUgaWdub3JlZCBmb3IgdGhlIHZhbGlkYXRpb24uIE1hcmtlZCBhcyAnYW55JyB0byBhbGxvdyBmb3IgZXh0ZW5zaW9uIGJ1dCBleHBlY3RzIHN0cmluZ3NcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnMoLi4uZXhjZXB0aW9uczogYW55W10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHZhbGlkYXRlKHRoaXMsIC4uLmV4Y2VwdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbXBhcmUgb2JqZWN0IGVxdWFsaXR5IHJlY3Vyc2l2ZWx5XG4gICAqIEBwYXJhbSB7YW55fSBvYmogb2JqZWN0IHRvIGNvbXBhcmUgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleGNlcHRpb25zXSBwcm9wZXJ0eSBuYW1lcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBjb21wYXJpc29uXG4gICAqL1xuICBwdWJsaWMgZXF1YWxzKG9iajogYW55LCAuLi5leGNlcHRpb25zOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0VxdWFsKHRoaXMsIG9iaiwgLi4uZXhjZXB0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgc2VyaWFsaXplZCBtb2RlbCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRseSBkZWZpbmVkIHtAbGluayBTZXJpYWxpemVyfVxuICAgKi9cbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1vZGVsLnNlcmlhbGl6ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBPdmVycmlkZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGpzJ3MgJ3RvU3RyaW5nKCknIHdoaWNoIHN1Y2tzLi4uXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMsIHVuZGVmaW5lZCwgMik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgRGVmaW5lcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIG9iamVjdCBoYXNoLiBSZWxpZXMgb24gYSB2ZXJ5IGJhc2ljIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEphdmEncyBzdHJpbmcgaGFzaDtcbiAgICovXG4gIHB1YmxpYyBoYXNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1vZGVsLmhhc2godGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgRGVzZXJpYWxpemVzIGEgTW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbHMgdG8gcGFyc2UgdGhlIHN0cmluZywgb3IgaWYgaXQgZmFpbHMgdG8gYnVpbGQgdGhlIG1vZGVsXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemUoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBNb2RlbC5rZXkoTW9kZWxLZXlzLlNFUklBTElaQVRJT04pLFxuICAgICAgdGhpcy5jb25zdHJ1Y3RvclxuICAgICk7XG5cbiAgICBpZiAobWV0YWRhdGEgJiYgbWV0YWRhdGEuc2VyaWFsaXplcilcbiAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uLmRlc2VyaWFsaXplKFxuICAgICAgICBzdHIsXG4gICAgICAgIG1ldGFkYXRhLnNlcmlhbGl6ZXIsXG4gICAgICAgIC4uLihtZXRhZGF0YS5hcmdzIHx8IFtdKVxuICAgICAgKTtcbiAgICByZXR1cm4gU2VyaWFsaXphdGlvbi5kZXNlcmlhbGl6ZShzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBPYmplY3QgcHJvcGVydGllcyB3aXRoIHRoZSBvbmVzIGZyb20gdGhlIG5ldyBvYmplY3RcbiAgICogQGRlc2NyaXB0aW9uIEl0ZXJhdGVzIGFsbCBjb21tb24gcHJvcGVydGllcyBvZiBvYmogKGlmIGV4aXN0aW5nKSBhbmQgc2VsZiwgYW5kIGNvcGllcyB0aGVtIG9udG8gc2VsZlxuICAgKlxuICAgKiBAcGFyYW0ge1R9IHNlbGZcbiAgICogQHBhcmFtIHtUIHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW29ial1cbiAgICpcbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0PFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2VsZjogVCxcbiAgICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBUIHtcbiAgICBpZiAoIW9iaikgb2JqID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIE1vZGVsLmdldEF0dHJpYnV0ZXMoc2VsZikpIHtcbiAgICAgIChzZWxmIGFzIGFueSlbcHJvcF0gPSAob2JqIGFzIGFueSlbcHJvcF0gfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXBvcHVsYXRlcyB0aGUgaW5zdGFuY2Ugd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBuZXcgTW9kZWwgT2JqZWN0XG4gICAqIEBkZXNjcmlwdGlvbiBJdGVyYXRlcyBhbGwgY29tbW9uIHByb3BlcnRpZXMgb2Ygb2JqIChpZiBleGlzdGluZykgYW5kIHNlbGYsIGFuZCBjb3BpZXMgdGhlbSBvbnRvIHNlbGYuXG4gICAqIElzIGF3YXJlIG9mIG5lc3RlZCBNb2RlbCBPYmplY3RzIGFuZCByZWJ1aWxkcyB0aGVtIGFsc28uXG4gICAqIFdoZW4gTGlzdCBwcm9wZXJ0aWVzIGFyZSBkZWNvcmF0ZWQgd2l0aCB7QGxpbmsgbGlzdH0sIHRoZXkgbGlzdCBpdGVtcyB3aWxsIGFsc28gYmUgcmVidWlsdFxuICAgKlxuICAgKiBAcGFyYW0ge1R9IHNlbGZcbiAgICogQHBhcmFtIHtUIHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW29ial1cbiAgICpcbiAgICovXG4gIHN0YXRpYyBmcm9tTW9kZWw8VCBleHRlbmRzIE1vZGVsPihzZWxmOiBULCBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55Pik6IFQge1xuICAgIGlmICghb2JqKSBvYmogPSB7fTtcblxuICAgIGxldCBkZWNvcmF0b3JzOiBEZWNvcmF0b3JNZXRhZGF0YVtdLCBkZWM6IERlY29yYXRvck1ldGFkYXRhO1xuXG4gICAgY29uc3QgcHJvcHMgPSBNb2RlbC5nZXRBdHRyaWJ1dGVzKHNlbGYpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzKSB7XG4gICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9XG4gICAgICAgIChvYmogYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gfHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHR5cGVvZiAoc2VsZiBhcyBhbnkpW3Byb3BdICE9PSBcIm9iamVjdFwiKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHByb3BNID0gaXNQcm9wZXJ0eU1vZGVsKHNlbGYsIHByb3ApO1xuICAgICAgaWYgKHByb3BNKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPSBNb2RlbC5idWlsZChcbiAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdLFxuICAgICAgICAgICAgdHlwZW9mIHByb3BNID09PSBcInN0cmluZ1wiID8gcHJvcE0gOiB1bmRlZmluZWRcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxsRGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSA9XG4gICAgICAgIFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICAgICAgc2VsZixcbiAgICAgICAgICBwcm9wXG4gICAgICAgICkuZGVjb3JhdG9ycztcbiAgICAgIGRlY29yYXRvcnMgPSBhbGxEZWNvcmF0b3JzLmZpbHRlcihcbiAgICAgICAgKGQ6IERlY29yYXRvck1ldGFkYXRhKSA9PlxuICAgICAgICAgIFtNb2RlbEtleXMuVFlQRSwgVmFsaWRhdGlvbktleXMuVFlQRV0uaW5kZXhPZihkLmtleSkgIT09IC0xXG4gICAgICApO1xuICAgICAgaWYgKCFkZWNvcmF0b3JzIHx8ICFkZWNvcmF0b3JzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNmKFwiZmFpbGVkIHRvIGZpbmQgZGVjb3JhdG9ycyBmb3IgcHJvcGVydHkgezB9XCIsIHByb3ApKTtcbiAgICAgIGRlYyA9IGRlY29yYXRvcnMucG9wKCkgYXMgRGVjb3JhdG9yTWV0YWRhdGE7XG4gICAgICBjb25zdCBjbGF6eiA9IGRlYy5wcm9wcy5uYW1lXG4gICAgICAgID8gW2RlYy5wcm9wcy5uYW1lXVxuICAgICAgICA6IEFycmF5LmlzQXJyYXkoZGVjLnByb3BzLmN1c3RvbVR5cGVzKVxuICAgICAgICAgID8gZGVjLnByb3BzLmN1c3RvbVR5cGVzXG4gICAgICAgICAgOiBbZGVjLnByb3BzLmN1c3RvbVR5cGVzXTtcbiAgICAgIGNvbnN0IHJlc2VydmVkID0gT2JqZWN0LnZhbHVlcyhSZXNlcnZlZE1vZGVscykubWFwKCh2KSA9PlxuICAgICAgICB2LnRvTG93ZXJDYXNlKClcbiAgICAgICkgYXMgc3RyaW5nW107XG5cbiAgICAgIGNsYXp6LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKHJlc2VydmVkLmluZGV4T2YoYy50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgICBjYXNlIFwiQXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIlNldFwiOlxuICAgICAgICAgICAgICAgIGlmIChhbGxEZWNvcmF0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdERlYyA9IGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+IGQua2V5ID09PSBWYWxpZGF0aW9uS2V5cy5MSVNUXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKGxpc3REZWMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhenpOYW1lID0gKGxpc3REZWMucHJvcHMuY2xhenogYXMgc3RyaW5nW10pLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgKHQ6IHN0cmluZykgPT4gIWpzVHlwZXMuaW5jbHVkZXModC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCJBcnJheVwiKVxuICAgICAgICAgICAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICAgICAgICAgICAgICAgICAgKVtwcm9wXS5tYXAoKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXCJvYmplY3RcIiwgXCJmdW5jdGlvblwiXS5pbmNsdWRlcyh0eXBlb2YgZWwpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXp6TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1vZGVsLmJ1aWxkKGVsLCBjbGF6ek5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogZWw7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIlNldFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wib2JqZWN0XCIsIFwiZnVuY3Rpb25cIl0uaW5jbHVkZXModHlwZW9mIHYpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXp6TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMuYWRkKE1vZGVsLmJ1aWxkKHYsIGNsYXp6TmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hZGQodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID0gcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0pXG4gICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IE1vZGVsLmJ1aWxkKFxuICAgICAgICAgICAgICAgICAgICAoc2VsZiBhcyBhbnkpW3Byb3BdLFxuICAgICAgICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAvLyBkbyBub3RoaW5nLiB3ZSBoYXZlIG5vIHJlZ2lzdHJ5IG9mIHRoaXMgY2xhc3NcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGY7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgR2xvYmFsIHtAbGluayBNb2RlbEJ1aWxkZXJGdW5jdGlvbn1cbiAgICogQHBhcmFtIHtNb2RlbEJ1aWxkZXJGdW5jdGlvbn0gW2J1aWxkZXJdXG4gICAqL1xuICBzdGF0aWMgc2V0QnVpbGRlcihidWlsZGVyPzogTW9kZWxCdWlsZGVyRnVuY3Rpb24pIHtcbiAgICBtb2RlbEJ1aWxkZXJGdW5jdGlvbiA9IGJ1aWxkZXI7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IGdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0QnVpbGRlcigpOiBNb2RlbEJ1aWxkZXJGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG1vZGVsQnVpbGRlckZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfVxuICAgKlxuICAgKiBAcmV0dXJuIE1vZGVsUmVnaXN0cnksIGRlZmF1bHRzIHRvIHtAbGluayBNb2RlbFJlZ2lzdHJ5TWFuYWdlcn1cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldFJlZ2lzdHJ5KCkge1xuICAgIGlmICghYWN0aW5nTW9kZWxSZWdpc3RyeSkgYWN0aW5nTW9kZWxSZWdpc3RyeSA9IG5ldyBNb2RlbFJlZ2lzdHJ5TWFuYWdlcigpO1xuICAgIHJldHVybiBhY3RpbmdNb2RlbFJlZ2lzdHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYWN0aW5nTW9kZWxSZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge0J1aWxkZXJSZWdpc3RyeX0gbW9kZWxSZWdpc3RyeSB0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdHJ5XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkobW9kZWxSZWdpc3RyeTogQnVpbGRlclJlZ2lzdHJ5PGFueT4pIHtcbiAgICBhY3RpbmdNb2RlbFJlZ2lzdHJ5ID0gbW9kZWxSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZWdpc3RlciBuZXcgTW9kZWxzXG4gICAqIEBwYXJhbSB7YW55fSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25hbWVdIHdoZW4gbm90IGRlZmluZWQsIHRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIHVzZWRcbiAgICpcbiAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXI8VCBleHRlbmRzIE1vZGVsPihcbiAgICBjb25zdHJ1Y3RvcjogTW9kZWxDb25zdHJ1Y3RvcjxUPixcbiAgICBuYW1lPzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHJldHVybiBNb2RlbC5nZXRSZWdpc3RyeSgpLnJlZ2lzdGVyKGNvbnN0cnVjdG9yLCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBHZXRzIGEgcmVnaXN0ZXJlZCBNb2RlbCB7QGxpbmsgTW9kZWxDb25zdHJ1Y3Rvcn1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICpcbiAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAqL1xuICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBNb2RlbD4obmFtZTogc3RyaW5nKTogTW9kZWxDb25zdHJ1Y3RvcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE1vZGVsLmdldFJlZ2lzdHJ5KCkuZ2V0KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2xhenpdIHdoZW4gcHJvdmlkZWQsIGl0IHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBtYXRjaGluZyBjb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIElmIGNsYXp6IGlzIG5vdCBmb3VuZCwgb3Igb2JqIGlzIG5vdCBhIHtAbGluayBNb2RlbH0gbWVhbmluZyBpdCBoYXMgbm8ge0BsaW5rIE1vZGVsS2V5cy5BTkNIT1J9IHByb3BlcnR5XG4gICAqXG4gICAqIEBzZWUgTW9kZWxSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIGJ1aWxkPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgb2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICAgY2xheno/OiBzdHJpbmdcbiAgKTogVCB7XG4gICAgcmV0dXJuIE1vZGVsLmdldFJlZ2lzdHJ5KCkuYnVpbGQob2JqLCBjbGF6eik7XG4gIH1cblxuICBzdGF0aWMgZ2V0TWV0YWRhdGE8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogVikge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIE1vZGVsLmtleShNb2RlbEtleXMuTU9ERUwpLFxuICAgICAgbW9kZWwuY29uc3RydWN0b3JcbiAgICApO1xuICAgIGlmICghbWV0YWRhdGEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiY291bGQgbm90IGZpbmQgbWV0YWRhdGEgZm9yIHByb3ZpZGVkIFwiICsgbW9kZWwuY29uc3RydWN0b3IubmFtZVxuICAgICAgKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICBzdGF0aWMgZ2V0QXR0cmlidXRlczxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBDb25zdHJ1Y3RvcjxWPiB8IFYpIHtcbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHByb3RvdHlwZSA9XG4gICAgICBtb2RlbCBpbnN0YW5jZW9mIE1vZGVsXG4gICAgICAgID8gT2JqZWN0LmdldFByb3RvdHlwZU9mKG1vZGVsKVxuICAgICAgICA6IChtb2RlbCBhcyBhbnkpLnByb3RvdHlwZTtcbiAgICB3aGlsZSAocHJvdG90eXBlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3BzOiBzdHJpbmdbXSA9IHByb3RvdHlwZVtNb2RlbEtleXMuQVRUUklCVVRFXTtcbiAgICAgIGlmIChwcm9wcykge1xuICAgICAgICByZXN1bHQucHVzaCguLi5wcm9wcyk7XG4gICAgICB9XG4gICAgICBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHM8ViBleHRlbmRzIE1vZGVsPihvYmoxOiBWLCBvYmoyOiBWLCAuLi5leGNlcHRpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBpc0VxdWFsKG9iajEsIG9iajIsIC4uLmV4Y2VwdGlvbnMpO1xuICB9XG5cbiAgc3RhdGljIGhhc0Vycm9yczxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWLCAuLi5wcm9wc1RvSWdub3JlOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB2YWxpZGF0ZShtb2RlbCwgLi4ucHJvcHNUb0lnbm9yZSk7XG4gIH1cblxuICBzdGF0aWMgc2VyaWFsaXplPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFYpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBNb2RlbC5rZXkoTW9kZWxLZXlzLlNFUklBTElaQVRJT04pLFxuICAgICAgbW9kZWwuY29uc3RydWN0b3JcbiAgICApO1xuXG4gICAgaWYgKG1ldGFkYXRhICYmIG1ldGFkYXRhLnNlcmlhbGl6ZXIpXG4gICAgICByZXR1cm4gU2VyaWFsaXphdGlvbi5zZXJpYWxpemUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIG1ldGFkYXRhLnNlcmlhbGl6ZXIsXG4gICAgICAgIC4uLihtZXRhZGF0YS5hcmdzIHx8IFtdKVxuICAgICAgKTtcbiAgICByZXR1cm4gU2VyaWFsaXphdGlvbi5zZXJpYWxpemUobW9kZWwpO1xuICB9XG5cbiAgc3RhdGljIGhhc2g8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogVikge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIE1vZGVsLmtleShNb2RlbEtleXMuSEFTSElORyksXG4gICAgICBtb2RlbC5jb25zdHJ1Y3RvclxuICAgICk7XG5cbiAgICBpZiAobWV0YWRhdGEgJiYgbWV0YWRhdGEuYWxnb3JpdGhtKVxuICAgICAgcmV0dXJuIEhhc2hpbmcuaGFzaChtb2RlbCwgbWV0YWRhdGEuYWxnb3JpdGhtLCAuLi4obWV0YWRhdGEuYXJncyB8fCBbXSkpO1xuICAgIHJldHVybiBIYXNoaW5nLmhhc2gobW9kZWwpO1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBCdWlsZHMgdGhlIGtleSB0byBzdG9yZSBhcyBNZXRhZGF0YSB1bmRlciBSZWZsZWN0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gY29uY2F0ZW5hdGVzIHtAbGluayBNb2RlbEtleXMjUkVGTEVDVH0gd2l0aCB0aGUgcHJvdmlkZWQga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICovXG4gIHN0YXRpYyBrZXkoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTW9kZWxLZXlzLlJFRkxFQ1QgKyBzdHI7XG4gIH1cbn1cbiJdfQ==
|
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd0JBLDBDQU9DO0FBVUQsMEJBT0M7QUFxRkQsOENBV0M7QUFoSkQsMERBQXVEO0FBYXZELHFEQUE4RTtBQUM5RSw2Q0FBd0M7QUFDeEMsOENBQTJDO0FBQzNDLGtEQUErQztBQUMvQyxrRUFBb0U7QUFDcEUsOENBQXNDO0FBQ3RDLDJDQUFzRDtBQUV0RCxJQUFJLG9CQUFzRCxDQUFDO0FBQzNELElBQUksbUJBQXlDLENBQUM7QUFFOUMsU0FBZ0IsZUFBZSxDQUM3QixNQUFTLEVBQ1QsU0FBaUI7SUFFakIsSUFBSSxPQUFPLENBQUUsTUFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUEyQjtJQUNqRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYSxDQUFDLENBQUM7UUFDckUsNkRBQTZEO0lBQy9ELENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFZRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFJL0IsWUFBWSxlQUFzRCxPQUFPO1FBSGpFLFVBQUss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QVMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXBWRCxzQkFvVkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJpYWxpemF0aW9uIH0gZnJvbSBcIi4uL3V0aWxzL3NlcmlhbGl6YXRpb25cIjtcbmltcG9ydCB7IEJ1aWxkZXJSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlscy9yZWdpc3RyeVwiO1xuaW1wb3J0IHsgTW9kZWxFcnJvckRlZmluaXRpb24gfSBmcm9tIFwiLi9Nb2RlbEVycm9yRGVmaW5pdGlvblwiO1xuaW1wb3J0IHtcbiAgQ29tcGFyYWJsZSxcbiAgQ29uc3RydWN0b3IsXG4gIEhhc2hhYmxlLFxuICBNb2RlbEFyZyxcbiAgTW9kZWxCdWlsZGVyRnVuY3Rpb24sXG4gIE1vZGVsQ29uc3RydWN0b3IsXG4gIFNlcmlhbGl6YWJsZSxcbiAgVmFsaWRhdGFibGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWNvcmF0b3JNZXRhZGF0YSwgaXNFcXVhbCwgUmVmbGVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgdmFsaWRhdGUgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBIYXNoaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2hhc2hpbmdcIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IGpzVHlwZXMsIFJlc2VydmVkTW9kZWxzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmxldCBtb2RlbEJ1aWxkZXJGdW5jdGlvbjogTW9kZWxCdWlsZGVyRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5sZXQgYWN0aW5nTW9kZWxSZWdpc3RyeTogQnVpbGRlclJlZ2lzdHJ5PGFueT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5TW9kZWw8TSBleHRlbmRzIE1vZGVsPihcbiAgdGFyZ2V0OiBNLFxuICBhdHRyaWJ1dGU6IHN0cmluZ1xuKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpc01vZGVsKCh0YXJnZXQgYXMgUmVjb3JkPHN0cmluZywgYW55PilbYXR0cmlidXRlXSkpIHJldHVybiB0cnVlO1xuICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTW9kZWxLZXlzLlRZUEUsIHRhcmdldCwgYXR0cmlidXRlKTtcbiAgcmV0dXJuIE1vZGVsLmdldChtZXRhZGF0YS5uYW1lKSA/IG1ldGFkYXRhLm5hbWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRm9yIFNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIHB1cnBvc2VzLlxuICogQGRlc2NyaXB0aW9uIFJlYWRzIHRoZSB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHkgb2YgYSB7QGxpbmsgTW9kZWx9IHRvIGRpc2NvdmVyIHRoZSBjbGFzcyB0byBpbnN0YW50aWF0ZVxuICpcbiAqIEBmdW5jdGlvbiBpc01vZGVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01vZGVsKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICB0cnkge1xuICAgIHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBNb2RlbCB8fCAhIU1vZGVsLmdldE1ldGFkYXRhKHRhcmdldCBhcyBhbnkpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTW9kZWxSZWdpc3RyeSBJbnRlcmZhY2VcbiAqXG4gKiBAaW50ZXJmYWNlIE1vZGVsUmVnaXN0cnlcbiAqIEBleHRlbmRzIEJ1aWxkZXJSZWdpc3RyeTxNb2RlbD5cbiAqXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxSZWdpc3RyeTxUIGV4dGVuZHMgTW9kZWw+ID0gQnVpbGRlclJlZ2lzdHJ5PFQ+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgY2xhc3MgdG8gZW5hYmxlIHNlcmlhbGl6YXRpb24gYW5kIGNvcnJlY3QgcmVidWlsZGluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbmNob3JLZXkgZGVmYXVsdHMgdG8ge0BsaW5rIE1vZGVsS2V5cy5BTkNIT1J9LiBUaGUgcHJvcGVydHkgbmFtZSB3aGVyZSB0aGUgcmVnaXN0ZXJlZCBjbGFzcyBuYW1lIGlzIHN0b3JlZDtcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW59IFt0ZXN0RnVuY3Rpb25dIG1ldGhvZCB0byB0ZXN0IGlmIHRoZSBwcm92aWRlZCBvYmplY3QgaXMgYSBNb2RlbCBPYmplY3QuIGRlZmF1bHRzIHRvIHtAbGluayBpc01vZGVsfVxuICpcbiAqIEBjbGFzcyBNb2RlbFJlZ2lzdHJ5TWFuYWdlclxuICogQGltcGxlbWVudHMgTW9kZWxSZWdpc3RyeVxuICpcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgTW9kZWxSZWdpc3RyeU1hbmFnZXI8VCBleHRlbmRzIE1vZGVsPiBpbXBsZW1lbnRzIE1vZGVsUmVnaXN0cnk8VD4ge1xuICBwcml2YXRlIGNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvbnN0cnVjdG9yPFQ+PiA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRlc3RGdW5jdGlvbjogKG9iajogb2JqZWN0KSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRlc3RGdW5jdGlvbjogKG9iajogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYm9vbGVhbiA9IGlzTW9kZWwpIHtcbiAgICB0aGlzLnRlc3RGdW5jdGlvbiA9IHRlc3RGdW5jdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZWdpc3RlciBuZXcgTW9kZWxzXG4gICAqIEBwYXJhbSB7YW55fSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25hbWVdIHdoZW4gbm90IGRlZmluZWQsIHRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIHVzZWRcbiAgICovXG4gIHJlZ2lzdGVyKGNvbnN0cnVjdG9yOiBNb2RlbENvbnN0cnVjdG9yPFQ+LCBuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk1vZGVsIHJlZ2lzdGVyaW5nIGZhaWxlZC4gTWlzc2luZyBDbGFzcyBuYW1lIG9yIGNvbnN0cnVjdG9yXCJcbiAgICAgICk7XG4gICAgbmFtZSA9IG5hbWUgfHwgY29uc3RydWN0b3IubmFtZTtcbiAgICB0aGlzLmNhY2hlW25hbWVdID0gY29uc3RydWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogTW9kZWxDb25zdHJ1Y3RvcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlW25hbWVdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGF6el0gd2hlbiBwcm92aWRlZCwgaXQgd2lsbCBhdHRlbXB0IHRvIGZpbmQgdGhlIG1hdGNoaW5nIGNvbnN0cnVjdG9yXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgSWYgY2xhenogaXMgbm90IGZvdW5kLCBvciBvYmogaXMgbm90IGEge0BsaW5rIE1vZGVsfSBtZWFuaW5nIGl0IGhhcyBubyB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHlcbiAgICovXG4gIGJ1aWxkKG9iajogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LCBjbGF6ej86IHN0cmluZyk6IFQge1xuICAgIGlmICghY2xhenogJiYgIXRoaXMudGVzdEZ1bmN0aW9uKG9iaikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm92aWRlZCBvYmogaXMgbm90IGEgTW9kZWwgb2JqZWN0XCIpO1xuICAgIGNvbnN0IG5hbWUgPSBjbGF6eiB8fCBNb2RlbC5nZXRNZXRhZGF0YShvYmogYXMgYW55KTtcbiAgICBpZiAoIShuYW1lIGluIHRoaXMuY2FjaGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBzZihcIlByb3ZpZGVkIGNsYXNzIHswfSBpcyBub3QgYSByZWdpc3RlcmVkIE1vZGVsIG9iamVjdFwiLCBuYW1lKVxuICAgICAgKTtcbiAgICByZXR1cm4gbmV3IHRoaXMuY2FjaGVbbmFtZV0ob2JqKTtcbiAgfVxufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEJ1bGsgUmVnaXN0ZXJzIE1vZGVsc1xuICogQGRlc2NyaXB0aW9uIFVzZWZ1bCB3aGVuIHVzaW5nIGJ1bmRsZXJzIHRoYXQgbWlnaHQgbm90IGV2YWx1YXRlIGFsbCB0aGUgY29kZSBhdCBvbmNlXG4gKlxuICogQHBhcmFtIHtBcnJheTxDb25zdHJ1Y3RvcjxUPj4gfCBBcnJheTx7bmFtZTogc3RyaW5nLCBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD59Pn0gW21vZGVsc11cbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLk1vZGVsXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1bGtNb2RlbFJlZ2lzdGVyPFQgZXh0ZW5kcyBNb2RlbD4oXG4gIC4uLm1vZGVsczogKENvbnN0cnVjdG9yPFQ+IHwgeyBuYW1lOiBzdHJpbmc7IGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPiB9KVtdXG4pIHtcbiAgbW9kZWxzLmZvckVhY2goXG4gICAgKG06IENvbnN0cnVjdG9yPFQ+IHwgeyBuYW1lOiBzdHJpbmc7IGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPiB9KSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD4gPSAoXG4gICAgICAgIG0uY29uc3RydWN0b3IgPyBtLmNvbnN0cnVjdG9yIDogbVxuICAgICAgKSBhcyBDb25zdHJ1Y3RvcjxUPjtcbiAgICAgIE1vZGVsLnJlZ2lzdGVyKGNvbnN0cnVjdG9yLCAobSBhcyBDb25zdHJ1Y3RvcjxUPikubmFtZSk7XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhIFZhbGlkYXRhYmxlIE1vZGVsIG9iamVjdFxuICogQGRlc2NyaXB0aW9uIE1lYW50IHRvIGJlIHVzZWQgYXMgYSBiYXNlIGNsYXNzIGZvciBhbGwgTW9kZWwgY2xhc3Nlc1xuICpcbiAqIE1vZGVsIG9iamVjdHMgbXVzdDpcbiAqICAtIEhhdmUgYWxsIHRoZWlyIHJlcXVpcmVkIHByb3BlcnRpZXMgbWFya2VkIHdpdGggJyEnO1xuICogIC0gSGF2ZSBhbGwgdGhlaXIgb3B0aW9uYWwgcHJvcGVydGllcyBtYXJrZWQgYXMgJz8nOlxuICpcbiAqIEBwYXJhbSB7TW9kZWwgfCB7fX0gbW9kZWwgYmFzZSBvYmplY3QgZnJvbSB3aGljaCB0byBwb3B1bGF0ZSBwcm9wZXJ0aWVzIGZyb21cbiAqXG4gKiBAY2xhc3MgTW9kZWxcbiAqIEBhYnN0cmFjdFxuICogQGltcGxlbWVudHMgVmFsaWRhdGFibGVcbiAqIEBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZVxuICpcbiAqIEBleGFtcGxlXG4gKiAgICAgIGNsYXNzIENsYXNzTmFtZSB7XG4gKiAgICAgICAgICBAcmVxdWlyZWQoKVxuICogICAgICAgICAgcmVxdWlyZWRQcm9wZXJ0eU5hbWUhOiBQcm9wZXJ0eVR5cGU7XG4gKlxuICogICAgICAgICAgb3B0aW9uYWxQcm9wZXJ0eU5hbWU/OiBQcm9wZXJ0eVR5cGU7XG4gKiAgICAgIH1cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGVsXG4gIGltcGxlbWVudHMgVmFsaWRhdGFibGUsIFNlcmlhbGl6YWJsZSwgSGFzaGFibGUsIENvbXBhcmFibGU8TW9kZWw+XG57XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPE1vZGVsPikge31cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIHRoZSBvYmplY3QgYWNjb3JkaW5nIHRvIGl0cyBkZWNvcmF0ZWQgcHJvcGVydGllc1xuICAgKlxuICAgKiBAcGFyYW0ge2FueVtdfSBbZXhjZXB0aW9uc10gcHJvcGVydGllcyBpbiB0aGUgb2JqZWN0IHRvIGJlIGlnbm9yZWQgZm9yIHRoZSB2YWxpZGF0aW9uLiBNYXJrZWQgYXMgJ2FueScgdG8gYWxsb3cgZm9yIGV4dGVuc2lvbiBidXQgZXhwZWN0cyBzdHJpbmdzXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKC4uLmV4Y2VwdGlvbnM6IGFueVtdKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB2YWxpZGF0ZSh0aGlzLCAuLi5leGNlcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDb21wYXJlIG9iamVjdCBlcXVhbGl0eSByZWN1cnNpdmVseVxuICAgKiBAcGFyYW0ge2FueX0gb2JqIG9iamVjdCB0byBjb21wYXJlIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhjZXB0aW9uc10gcHJvcGVydHkgbmFtZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgY29tcGFyaXNvblxuICAgKi9cbiAgcHVibGljIGVxdWFscyhvYmo6IGFueSwgLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNFcXVhbCh0aGlzLCBvYmosIC4uLmV4Y2VwdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHNlcmlhbGl6ZWQgbW9kZWwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50bHkgZGVmaW5lZCB7QGxpbmsgU2VyaWFsaXplcn1cbiAgICovXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNb2RlbC5zZXJpYWxpemUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgT3ZlcnJpZGUgdGhlIGltcGxlbWVudGF0aW9uIGZvciBqcydzICd0b1N0cmluZygpJyB3aGljaCBzdWNrcy4uLlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLCB1bmRlZmluZWQsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBvYmplY3QgaGFzaC4gUmVsaWVzIG9uIGEgdmVyeSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBKYXZhJ3Mgc3RyaW5nIGhhc2g7XG4gICAqL1xuICBwdWJsaWMgaGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNb2RlbC5oYXNoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IERlc2VyaWFsaXplcyBhIE1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGl0IGZhaWxzIHRvIHBhcnNlIHRoZSBzdHJpbmcsIG9yIGlmIGl0IGZhaWxzIHRvIGJ1aWxkIHRoZSBtb2RlbFxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgTW9kZWwua2V5KE1vZGVsS2V5cy5TRVJJQUxJWkFUSU9OKSxcbiAgICAgIHRoaXMuY29uc3RydWN0b3JcbiAgICApO1xuXG4gICAgaWYgKG1ldGFkYXRhICYmIG1ldGFkYXRhLnNlcmlhbGl6ZXIpXG4gICAgICByZXR1cm4gU2VyaWFsaXphdGlvbi5kZXNlcmlhbGl6ZShcbiAgICAgICAgc3RyLFxuICAgICAgICBtZXRhZGF0YS5zZXJpYWxpemVyLFxuICAgICAgICAuLi4obWV0YWRhdGEuYXJncyB8fCBbXSlcbiAgICAgICk7XG4gICAgcmV0dXJuIFNlcmlhbGl6YXRpb24uZGVzZXJpYWxpemUoc3RyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXBvcHVsYXRlcyB0aGUgT2JqZWN0IHByb3BlcnRpZXMgd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBuZXcgb2JqZWN0XG4gICAqIEBkZXNjcmlwdGlvbiBJdGVyYXRlcyBhbGwgY29tbW9uIHByb3BlcnRpZXMgb2Ygb2JqIChpZiBleGlzdGluZykgYW5kIHNlbGYsIGFuZCBjb3BpZXMgdGhlbSBvbnRvIHNlbGZcbiAgICpcbiAgICogQHBhcmFtIHtUfSBzZWxmXG4gICAqIEBwYXJhbSB7VCB8IFJlY29yZDxzdHJpbmcsIGFueT59IFtvYmpdXG4gICAqXG4gICAqL1xuICBzdGF0aWMgZnJvbU9iamVjdDxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIHNlbGY6IFQsXG4gICAgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogVCB7XG4gICAgaWYgKCFvYmopIG9iaiA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBNb2RlbC5nZXRBdHRyaWJ1dGVzKHNlbGYpKSB7XG4gICAgICAoc2VsZiBhcyBhbnkpW3Byb3BdID0gKG9iaiBhcyBhbnkpW3Byb3BdIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGY7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVwb3B1bGF0ZXMgdGhlIGluc3RhbmNlIHdpdGggdGhlIG9uZXMgZnJvbSB0aGUgbmV3IE1vZGVsIE9iamVjdFxuICAgKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmLlxuICAgKiBJcyBhd2FyZSBvZiBuZXN0ZWQgTW9kZWwgT2JqZWN0cyBhbmQgcmVidWlsZHMgdGhlbSBhbHNvLlxuICAgKiBXaGVuIExpc3QgcHJvcGVydGllcyBhcmUgZGVjb3JhdGVkIHdpdGgge0BsaW5rIGxpc3R9LCB0aGV5IGxpc3QgaXRlbXMgd2lsbCBhbHNvIGJlIHJlYnVpbHRcbiAgICpcbiAgICogQHBhcmFtIHtUfSBzZWxmXG4gICAqIEBwYXJhbSB7VCB8IFJlY29yZDxzdHJpbmcsIGFueT59IFtvYmpdXG4gICAqXG4gICAqL1xuICBzdGF0aWMgZnJvbU1vZGVsPFQgZXh0ZW5kcyBNb2RlbD4oc2VsZjogVCwgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT4pOiBUIHtcbiAgICBpZiAoIW9iaikgb2JqID0ge307XG5cbiAgICBsZXQgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSwgZGVjOiBEZWNvcmF0b3JNZXRhZGF0YTtcblxuICAgIGNvbnN0IHByb3BzID0gTW9kZWwuZ2V0QXR0cmlidXRlcyhzZWxmKTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPVxuICAgICAgICAob2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdIHx8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0eXBlb2YgKHNlbGYgYXMgYW55KVtwcm9wXSAhPT0gXCJvYmplY3RcIikgY29udGludWU7XG4gICAgICBjb25zdCBwcm9wTSA9IGlzUHJvcGVydHlNb2RlbChzZWxmLCBwcm9wKTtcbiAgICAgIGlmIChwcm9wTSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID0gTW9kZWwuYnVpbGQoXG4gICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSxcbiAgICAgICAgICAgIHR5cGVvZiBwcm9wTSA9PT0gXCJzdHJpbmdcIiA/IHByb3BNIDogdW5kZWZpbmVkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFsbERlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gPVxuICAgICAgICBSZWZsZWN0aW9uLmdldFByb3BlcnR5RGVjb3JhdG9ycyhcbiAgICAgICAgICBWYWxpZGF0aW9uS2V5cy5SRUZMRUNULFxuICAgICAgICAgIHNlbGYsXG4gICAgICAgICAgcHJvcFxuICAgICAgICApLmRlY29yYXRvcnM7XG4gICAgICBkZWNvcmF0b3JzID0gYWxsRGVjb3JhdG9ycy5maWx0ZXIoXG4gICAgICAgIChkOiBEZWNvcmF0b3JNZXRhZGF0YSkgPT5cbiAgICAgICAgICBbTW9kZWxLZXlzLlRZUEUsIFZhbGlkYXRpb25LZXlzLlRZUEVdLmluZGV4T2YoZC5rZXkpICE9PSAtMVxuICAgICAgKTtcbiAgICAgIGlmICghZGVjb3JhdG9ycyB8fCAhZGVjb3JhdG9ycy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihzZihcImZhaWxlZCB0byBmaW5kIGRlY29yYXRvcnMgZm9yIHByb3BlcnR5IHswfVwiLCBwcm9wKSk7XG4gICAgICBkZWMgPSBkZWNvcmF0b3JzLnBvcCgpIGFzIERlY29yYXRvck1ldGFkYXRhO1xuICAgICAgY29uc3QgY2xhenogPSBkZWMucHJvcHMubmFtZVxuICAgICAgICA/IFtkZWMucHJvcHMubmFtZV1cbiAgICAgICAgOiBBcnJheS5pc0FycmF5KGRlYy5wcm9wcy5jdXN0b21UeXBlcylcbiAgICAgICAgICA/IGRlYy5wcm9wcy5jdXN0b21UeXBlc1xuICAgICAgICAgIDogW2RlYy5wcm9wcy5jdXN0b21UeXBlc107XG4gICAgICBjb25zdCByZXNlcnZlZCA9IE9iamVjdC52YWx1ZXMoUmVzZXJ2ZWRNb2RlbHMpLm1hcCgodikgPT5cbiAgICAgICAgdi50b0xvd2VyQ2FzZSgpXG4gICAgICApIGFzIHN0cmluZ1tdO1xuXG4gICAgICBjbGF6ei5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmIChyZXNlcnZlZC5pbmRleE9mKGMudG9Mb3dlckNhc2UoKSkgPT09IC0xKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIkFycmF5XCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJTZXRcIjpcbiAgICAgICAgICAgICAgICBpZiAoYWxsRGVjb3JhdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3REZWMgPSBhbGxEZWNvcmF0b3JzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChkKSA9PiBkLmtleSA9PT0gVmFsaWRhdGlvbktleXMuTElTVFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsaXN0RGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6TmFtZSA9IChsaXN0RGVjLnByb3BzLmNsYXp6IGFzIHN0cmluZ1tdKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICh0OiBzdHJpbmcpID0+ICFqc1R5cGVzLmluY2x1ZGVzKHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09IFwiQXJyYXlcIilcbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICAgICAgICAgICAgICAgICAgIClbcHJvcF0ubWFwKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1wib2JqZWN0XCIsIFwiZnVuY3Rpb25cIl0uaW5jbHVkZXModHlwZW9mIGVsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGF6ek5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBNb2RlbC5idWlsZChlbCwgY2xhenpOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVsO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCJTZXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIm9iamVjdFwiLCBcImZ1bmN0aW9uXCJdLmluY2x1ZGVzKHR5cGVvZiB2KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGF6ek5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFkZChNb2RlbC5idWlsZCh2LCBjbGF6ek5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMuYWRkKHYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdKVxuICAgICAgICAgICAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPSBNb2RlbC5idWlsZChcbiAgICAgICAgICAgICAgICAgICAgKHNlbGYgYXMgYW55KVtwcm9wXSxcbiAgICAgICAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZy4gd2UgaGF2ZSBubyByZWdpc3RyeSBvZiB0aGlzIGNsYXNzXG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxmO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFNldHMgdGhlIEdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259XG4gICAqIEBwYXJhbSB7TW9kZWxCdWlsZGVyRnVuY3Rpb259IFtidWlsZGVyXVxuICAgKi9cbiAgc3RhdGljIHNldEJ1aWxkZXIoYnVpbGRlcj86IE1vZGVsQnVpbGRlckZ1bmN0aW9uKSB7XG4gICAgbW9kZWxCdWlsZGVyRnVuY3Rpb24gPSBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCBnbG9iYWwge0BsaW5rIE1vZGVsQnVpbGRlckZ1bmN0aW9ufVxuICAgKi9cbiAgc3RhdGljIGdldEJ1aWxkZXIoKTogTW9kZWxCdWlsZGVyRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBtb2RlbEJ1aWxkZXJGdW5jdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHtAbGluayBNb2RlbFJlZ2lzdHJ5TWFuYWdlcn1cbiAgICpcbiAgICogQHJldHVybiBNb2RlbFJlZ2lzdHJ5LCBkZWZhdWx0cyB0byB7QGxpbmsgTW9kZWxSZWdpc3RyeU1hbmFnZXJ9XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRSZWdpc3RyeSgpIHtcbiAgICBpZiAoIWFjdGluZ01vZGVsUmVnaXN0cnkpIGFjdGluZ01vZGVsUmVnaXN0cnkgPSBuZXcgTW9kZWxSZWdpc3RyeU1hbmFnZXIoKTtcbiAgICByZXR1cm4gYWN0aW5nTW9kZWxSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGluZ01vZGVsUmVnaXN0cnlcbiAgICpcbiAgICogQHBhcmFtIHtCdWlsZGVyUmVnaXN0cnl9IG1vZGVsUmVnaXN0cnkgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIHNldFJlZ2lzdHJ5KG1vZGVsUmVnaXN0cnk6IEJ1aWxkZXJSZWdpc3RyeTxhbnk+KSB7XG4gICAgYWN0aW5nTW9kZWxSZWdpc3RyeSA9IG1vZGVsUmVnaXN0cnk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmVnaXN0ZXIgbmV3IE1vZGVsc1xuICAgKiBAcGFyYW0ge2FueX0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSB3aGVuIG5vdCBkZWZpbmVkLCB0aGUgbmFtZSBvZiB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSB1c2VkXG4gICAqXG4gICAqIEBzZWUgTW9kZWxSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgY29uc3RydWN0b3I6IE1vZGVsQ29uc3RydWN0b3I8VD4sXG4gICAgbmFtZT86IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICByZXR1cm4gTW9kZWwuZ2V0UmVnaXN0cnkoKS5yZWdpc3Rlcihjb25zdHJ1Y3RvciwgbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqXG4gICAqIEBzZWUgTW9kZWxSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIGdldDxUIGV4dGVuZHMgTW9kZWw+KG5hbWU6IHN0cmluZyk6IE1vZGVsQ29uc3RydWN0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBNb2RlbC5nZXRSZWdpc3RyeSgpLmdldChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9ialxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXp6XSB3aGVuIHByb3ZpZGVkLCBpdCB3aWxsIGF0dGVtcHQgdG8gZmluZCB0aGUgbWF0Y2hpbmcgY29uc3RydWN0b3JcbiAgICpcbiAgICogQHRocm93cyBFcnJvciBJZiBjbGF6eiBpcyBub3QgZm91bmQsIG9yIG9iaiBpcyBub3QgYSB7QGxpbmsgTW9kZWx9IG1lYW5pbmcgaXQgaGFzIG5vIHtAbGluayBNb2RlbEtleXMuQU5DSE9SfSBwcm9wZXJ0eVxuICAgKlxuICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICovXG4gIHN0YXRpYyBidWlsZDxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICAgIGNsYXp6Pzogc3RyaW5nXG4gICk6IFQge1xuICAgIHJldHVybiBNb2RlbC5nZXRSZWdpc3RyeSgpLmJ1aWxkKG9iaiwgY2xhenopO1xuICB9XG5cbiAgc3RhdGljIGdldE1ldGFkYXRhPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFYpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBNb2RlbC5rZXkoTW9kZWxLZXlzLk1PREVMKSxcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yXG4gICAgKTtcbiAgICBpZiAoIW1ldGFkYXRhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImNvdWxkIG5vdCBmaW5kIG1ldGFkYXRhIGZvciBwcm92aWRlZCBcIiArIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgc3RhdGljIGdldEF0dHJpYnV0ZXM8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogQ29uc3RydWN0b3I8Vj4gfCBWKSB7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBwcm90b3R5cGUgPVxuICAgICAgbW9kZWwgaW5zdGFuY2VvZiBNb2RlbFxuICAgICAgICA/IE9iamVjdC5nZXRQcm90b3R5cGVPZihtb2RlbClcbiAgICAgICAgOiAobW9kZWwgYXMgYW55KS5wcm90b3R5cGU7XG4gICAgd2hpbGUgKHByb3RvdHlwZSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wczogc3RyaW5nW10gPSBwcm90b3R5cGVbTW9kZWxLZXlzLkFUVFJJQlVURV07XG4gICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucHJvcHMpO1xuICAgICAgfVxuICAgICAgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgZXF1YWxzPFYgZXh0ZW5kcyBNb2RlbD4ob2JqMTogViwgb2JqMjogViwgLi4uZXhjZXB0aW9uczogYW55W10pIHtcbiAgICByZXR1cm4gaXNFcXVhbChvYmoxLCBvYmoyLCAuLi5leGNlcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBoYXNFcnJvcnM8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogViwgLi4ucHJvcHNUb0lnbm9yZTogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdmFsaWRhdGUobW9kZWwsIC4uLnByb3BzVG9JZ25vcmUpO1xuICB9XG5cbiAgc3RhdGljIHNlcmlhbGl6ZTxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgTW9kZWwua2V5KE1vZGVsS2V5cy5TRVJJQUxJWkFUSU9OKSxcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yXG4gICAgKTtcblxuICAgIGlmIChtZXRhZGF0YSAmJiBtZXRhZGF0YS5zZXJpYWxpemVyKVxuICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb24uc2VyaWFsaXplKFxuICAgICAgICB0aGlzLFxuICAgICAgICBtZXRhZGF0YS5zZXJpYWxpemVyLFxuICAgICAgICAuLi4obWV0YWRhdGEuYXJncyB8fCBbXSlcbiAgICAgICk7XG4gICAgcmV0dXJuIFNlcmlhbGl6YXRpb24uc2VyaWFsaXplKG1vZGVsKTtcbiAgfVxuXG4gIHN0YXRpYyBoYXNoPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFYpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBNb2RlbC5rZXkoTW9kZWxLZXlzLkhBU0hJTkcpLFxuICAgICAgbW9kZWwuY29uc3RydWN0b3JcbiAgICApO1xuXG4gICAgaWYgKG1ldGFkYXRhICYmIG1ldGFkYXRhLmFsZ29yaXRobSlcbiAgICAgIHJldHVybiBIYXNoaW5nLmhhc2gobW9kZWwsIG1ldGFkYXRhLmFsZ29yaXRobSwgLi4uKG1ldGFkYXRhLmFyZ3MgfHwgW10pKTtcbiAgICByZXR1cm4gSGFzaGluZy5oYXNoKG1vZGVsKTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgQnVpbGRzIHRoZSBrZXkgdG8gc3RvcmUgYXMgTWV0YWRhdGEgdW5kZXIgUmVmbGVjdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIGNvbmNhdGVuYXRlcyB7QGxpbmsgTW9kZWxLZXlzI1JFRkxFQ1R9IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAqL1xuICBzdGF0aWMga2V5KHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE1vZGVsS2V5cy5SRUZMRUNUICsgc3RyO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { BuilderRegistry } from "../utils/registry";
|
|
2
|
+
import { ModelErrorDefinition } from "./ModelErrorDefinition";
|
|
3
|
+
import { Comparable, Constructor, Hashable, ModelArg, ModelBuilderFunction, ModelConstructor, Serializable, Validatable } from "./types";
|
|
4
|
+
export declare function isPropertyModel<M extends Model>(target: M, attribute: string): boolean | string | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* @summary For Serialization/deserialization purposes.
|
|
7
|
+
* @description Reads the {@link ModelKeys.ANCHOR} property of a {@link Model} to discover the class to instantiate
|
|
8
|
+
*
|
|
9
|
+
* @function isModel
|
|
10
|
+
* @memberOf module:decorator-validation.Validation
|
|
11
|
+
* @category Validation
|
|
12
|
+
*/
|
|
13
|
+
export declare function isModel(target: Record<string, any>): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* @summary ModelRegistry Interface
|
|
16
|
+
*
|
|
17
|
+
* @interface ModelRegistry
|
|
18
|
+
* @extends BuilderRegistry<Model>
|
|
19
|
+
*
|
|
20
|
+
* @category Model
|
|
21
|
+
*/
|
|
22
|
+
export type ModelRegistry<T extends Model> = BuilderRegistry<T>;
|
|
23
|
+
/**
|
|
24
|
+
* @summary Util class to enable serialization and correct rebuilding
|
|
25
|
+
*
|
|
26
|
+
* @param {string} anchorKey defaults to {@link ModelKeys.ANCHOR}. The property name where the registered class name is stored;
|
|
27
|
+
* @param {function(Record<string, any>): boolean} [testFunction] method to test if the provided object is a Model Object. defaults to {@link isModel}
|
|
28
|
+
*
|
|
29
|
+
* @class ModelRegistryManager
|
|
30
|
+
* @implements ModelRegistry
|
|
31
|
+
*
|
|
32
|
+
* @category Model
|
|
33
|
+
*/
|
|
34
|
+
export declare class ModelRegistryManager<T extends Model> implements ModelRegistry<T> {
|
|
35
|
+
private cache;
|
|
36
|
+
private readonly testFunction;
|
|
37
|
+
constructor(testFunction?: (obj: Record<string, any>) => boolean);
|
|
38
|
+
/**
|
|
39
|
+
* @summary register new Models
|
|
40
|
+
* @param {any} constructor
|
|
41
|
+
* @param {string} [name] when not defined, the name of the constructor will be used
|
|
42
|
+
*/
|
|
43
|
+
register(constructor: ModelConstructor<T>, name?: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* @summary Gets a registered Model {@link ModelConstructor}
|
|
46
|
+
* @param {string} name
|
|
47
|
+
*/
|
|
48
|
+
get(name: string): ModelConstructor<T> | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* @param {Record<string, any>} obj
|
|
51
|
+
* @param {string} [clazz] when provided, it will attempt to find the matching constructor
|
|
52
|
+
*
|
|
53
|
+
* @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
|
|
54
|
+
*/
|
|
55
|
+
build(obj?: Record<string, any>, clazz?: string): T;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @summary Bulk Registers Models
|
|
59
|
+
* @description Useful when using bundlers that might not evaluate all the code at once
|
|
60
|
+
*
|
|
61
|
+
* @param {Array<Constructor<T>> | Array<{name: string, constructor: Constructor<T>}>} [models]
|
|
62
|
+
*
|
|
63
|
+
* @memberOf module:decorator-validation.Model
|
|
64
|
+
* @category Model
|
|
65
|
+
*/
|
|
66
|
+
export declare function bulkModelRegister<T extends Model>(...models: (Constructor<T> | {
|
|
67
|
+
name: string;
|
|
68
|
+
constructor: Constructor<T>;
|
|
69
|
+
})[]): void;
|
|
70
|
+
/**
|
|
71
|
+
* @summary Abstract class representing a Validatable Model object
|
|
72
|
+
* @description Meant to be used as a base class for all Model classes
|
|
73
|
+
*
|
|
74
|
+
* Model objects must:
|
|
75
|
+
* - Have all their required properties marked with '!';
|
|
76
|
+
* - Have all their optional properties marked as '?':
|
|
77
|
+
*
|
|
78
|
+
* @param {Model | {}} model base object from which to populate properties from
|
|
79
|
+
*
|
|
80
|
+
* @class Model
|
|
81
|
+
* @abstract
|
|
82
|
+
* @implements Validatable
|
|
83
|
+
* @implements Serializable
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* class ClassName {
|
|
87
|
+
* @required()
|
|
88
|
+
* requiredPropertyName!: PropertyType;
|
|
89
|
+
*
|
|
90
|
+
* optionalPropertyName?: PropertyType;
|
|
91
|
+
* }
|
|
92
|
+
*/
|
|
93
|
+
export declare abstract class Model implements Validatable, Serializable, Hashable, Comparable<Model> {
|
|
94
|
+
protected constructor(arg?: ModelArg<Model>);
|
|
95
|
+
/**
|
|
96
|
+
* @summary Validates the object according to its decorated properties
|
|
97
|
+
*
|
|
98
|
+
* @param {any[]} [exceptions] properties in the object to be ignored for the validation. Marked as 'any' to allow for extension but expects strings
|
|
99
|
+
*/
|
|
100
|
+
hasErrors(...exceptions: any[]): ModelErrorDefinition | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* @summary Compare object equality recursively
|
|
103
|
+
* @param {any} obj object to compare to
|
|
104
|
+
* @param {string} [exceptions] property names to be excluded from the comparison
|
|
105
|
+
*/
|
|
106
|
+
equals(obj: any, ...exceptions: string[]): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* @summary Returns the serialized model according to the currently defined {@link Serializer}
|
|
109
|
+
*/
|
|
110
|
+
serialize(): string;
|
|
111
|
+
/**
|
|
112
|
+
* @summary Override the implementation for js's 'toString()' which sucks...
|
|
113
|
+
* @override
|
|
114
|
+
*/
|
|
115
|
+
toString(): string;
|
|
116
|
+
/**
|
|
117
|
+
* @summary Defines a default implementation for object hash. Relies on a very basic implementation based on Java's string hash;
|
|
118
|
+
*/
|
|
119
|
+
hash(): string;
|
|
120
|
+
/**
|
|
121
|
+
* @summary Deserializes a Model
|
|
122
|
+
* @param {string} str
|
|
123
|
+
*
|
|
124
|
+
* @throws {Error} If it fails to parse the string, or if it fails to build the model
|
|
125
|
+
*/
|
|
126
|
+
static deserialize(str: string): any;
|
|
127
|
+
/**
|
|
128
|
+
* @summary Repopulates the Object properties with the ones from the new object
|
|
129
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self
|
|
130
|
+
*
|
|
131
|
+
* @param {T} self
|
|
132
|
+
* @param {T | Record<string, any>} [obj]
|
|
133
|
+
*
|
|
134
|
+
*/
|
|
135
|
+
static fromObject<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
136
|
+
/**
|
|
137
|
+
* @summary Repopulates the instance with the ones from the new Model Object
|
|
138
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self.
|
|
139
|
+
* Is aware of nested Model Objects and rebuilds them also.
|
|
140
|
+
* When List properties are decorated with {@link list}, they list items will also be rebuilt
|
|
141
|
+
*
|
|
142
|
+
* @param {T} self
|
|
143
|
+
* @param {T | Record<string, any>} [obj]
|
|
144
|
+
*
|
|
145
|
+
*/
|
|
146
|
+
static fromModel<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
147
|
+
/**
|
|
148
|
+
* @summary Sets the Global {@link ModelBuilderFunction}
|
|
149
|
+
* @param {ModelBuilderFunction} [builder]
|
|
150
|
+
*/
|
|
151
|
+
static setBuilder(builder?: ModelBuilderFunction): void;
|
|
152
|
+
/**
|
|
153
|
+
* @summary Retrieves the current global {@link ModelBuilderFunction}
|
|
154
|
+
*/
|
|
155
|
+
static getBuilder(): ModelBuilderFunction | undefined;
|
|
156
|
+
/**
|
|
157
|
+
* Returns the current {@link ModelRegistryManager}
|
|
158
|
+
*
|
|
159
|
+
* @return ModelRegistry, defaults to {@link ModelRegistryManager}
|
|
160
|
+
*/
|
|
161
|
+
private static getRegistry;
|
|
162
|
+
/**
|
|
163
|
+
* Returns the current actingModelRegistry
|
|
164
|
+
*
|
|
165
|
+
* @param {BuilderRegistry} modelRegistry the new implementation of Registry
|
|
166
|
+
*/
|
|
167
|
+
static setRegistry(modelRegistry: BuilderRegistry<any>): void;
|
|
168
|
+
/**
|
|
169
|
+
* @summary register new Models
|
|
170
|
+
* @param {any} constructor
|
|
171
|
+
* @param {string} [name] when not defined, the name of the constructor will be used
|
|
172
|
+
*
|
|
173
|
+
* @see ModelRegistry
|
|
174
|
+
*/
|
|
175
|
+
static register<T extends Model>(constructor: ModelConstructor<T>, name?: string): void;
|
|
176
|
+
/**
|
|
177
|
+
* @summary Gets a registered Model {@link ModelConstructor}
|
|
178
|
+
* @param {string} name
|
|
179
|
+
*
|
|
180
|
+
* @see ModelRegistry
|
|
181
|
+
*/
|
|
182
|
+
static get<T extends Model>(name: string): ModelConstructor<T> | undefined;
|
|
183
|
+
/**
|
|
184
|
+
* @param {Record<string, any>} obj
|
|
185
|
+
* @param {string} [clazz] when provided, it will attempt to find the matching constructor
|
|
186
|
+
*
|
|
187
|
+
* @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
|
|
188
|
+
*
|
|
189
|
+
* @see ModelRegistry
|
|
190
|
+
*/
|
|
191
|
+
static build<T extends Model>(obj?: Record<string, any>, clazz?: string): T;
|
|
192
|
+
static getMetadata<V extends Model>(model: V): any;
|
|
193
|
+
static getAttributes<V extends Model>(model: Constructor<V> | V): string[];
|
|
194
|
+
static equals<V extends Model>(obj1: V, obj2: V, ...exceptions: any[]): boolean;
|
|
195
|
+
static hasErrors<V extends Model>(model: V, ...propsToIgnore: string[]): ModelErrorDefinition | undefined;
|
|
196
|
+
static serialize<V extends Model>(model: V): any;
|
|
197
|
+
static hash<V extends Model>(model: V): any;
|
|
198
|
+
/**
|
|
199
|
+
* @summary Builds the key to store as Metadata under Reflections
|
|
200
|
+
* @description concatenates {@link ModelKeys#REFLECT} with the provided key
|
|
201
|
+
* @param {string} str
|
|
202
|
+
*/
|
|
203
|
+
static key(str: string): string;
|
|
204
|
+
}
|
|
@@ -54,5 +54,4 @@ class ModelErrorDefinition {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.ModelErrorDefinition = ModelErrorDefinition;
|
|
57
|
-
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9Nb2RlbEVycm9yRGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFLL0IsWUFBWSxNQUFtQjtRQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQVcsRUFBRSxJQUFJLEVBQUU7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ25CLFFBQVEsRUFBRSxLQUFLO2lCQUNoQixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxJQUFJLEdBQVEsSUFBVyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDckIsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQ2hDO2FBQ0EsTUFBTSxDQUFDLENBQUMsS0FBYSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzlCLElBQUksU0FBUyxHQUF1QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDaEUsQ0FBQyxTQUE2QixFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsU0FBUztvQkFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztvQkFDdkMsU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUMsRUFDRCxTQUFTLENBQ1YsQ0FBQztZQUVGLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxHQUFHLEdBQUcsSUFBSSxNQUFNLFNBQVMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsS0FBSztvQkFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDOztvQkFDekIsS0FBSyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGO0FBakRELG9EQWlEQyIsImZpbGUiOiJtb2RlbC9Nb2RlbEVycm9yRGVmaW5pdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsRXJyb3JzIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vdHlwZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBIZWxwZXIgQ2xhc3MgdG8gaG9sZCB0aGUgZXJyb3IgcmVzdWx0c1xuICogQGRlc2NyaXB0aW9uIGhvbGRzIGVycm9yIHJlc3VsdHMgaW4gYW4gJ2luZGV4YWJsZScgbWFubmVyXG4gKiB3aGlsZSBzdGlsbCBwcm92aWRpbmcgdGhlIHNhbWUgcmVzdWx0IG9uIHRvU3RyaW5nXG4gKlxuICogQHBhcmFtIHtNb2RlbEVycm9yc30gZXJyb3JzXG4gKlxuICogQGNsYXNzIE1vZGVsRXJyb3JEZWZpbml0aW9uXG4gKlxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RlbEVycm9yRGVmaW5pdGlvbiB7XG4gIFtpbmRleGVyOiBzdHJpbmddOlxuICAgIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPlxuICAgIHwgKCgpID0+IHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoZXJyb3JzOiBNb2RlbEVycm9ycykge1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiBlcnJvcnMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyb3JzLCBwcm9wKSAmJiBlcnJvcnNbcHJvcF0pXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzIGFzIGFueSwgcHJvcCwge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogZXJyb3JzW3Byb3BdLFxuICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IE91dHB1dHMgdGhlIGNsYXNzIHRvIGEgbmljZSByZWFkYWJsZSBzdHJpbmdcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGY6IGFueSA9IHRoaXMgYXMgYW55O1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzZWxmKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGspID0+XG4gICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNlbGYsIGspICYmXG4gICAgICAgICAgdHlwZW9mIHNlbGZba10gIT09IFwiZnVuY3Rpb25cIlxuICAgICAgKVxuICAgICAgLnJlZHVjZSgoYWNjdW06IHN0cmluZywgcHJvcCkgPT4ge1xuICAgICAgICBsZXQgcHJvcEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBPYmplY3Qua2V5cyhzZWxmW3Byb3BdKS5yZWR1Y2UoXG4gICAgICAgICAgKHByb3BBY2N1bTogdW5kZWZpbmVkIHwgc3RyaW5nLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICghcHJvcEFjY3VtKSBwcm9wQWNjdW0gPSBzZWxmW3Byb3BdW2tleV07XG4gICAgICAgICAgICBlbHNlIHByb3BBY2N1bSArPSBgXFxuJHtzZWxmW3Byb3BdW2tleV19YDtcbiAgICAgICAgICAgIHJldHVybiBwcm9wQWNjdW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJvcEVycm9yKSB7XG4gICAgICAgICAgcHJvcEVycm9yID0gYCR7cHJvcH0gLSAke3Byb3BFcnJvcn1gO1xuICAgICAgICAgIGlmICghYWNjdW0pIGFjY3VtID0gcHJvcEVycm9yO1xuICAgICAgICAgIGVsc2UgYWNjdW0gKz0gYFxcbiR7cHJvcEVycm9yfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LCBcIlwiKTtcbiAgfVxufVxuIl19
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxFcnJvckRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvTW9kZWxFcnJvckRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsb0JBQW9CO0lBSy9CLFlBQVksTUFBbUI7UUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDcEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFXLEVBQUUsSUFBSSxFQUFFO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNuQixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFRLElBQVcsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3JCLE1BQU0sQ0FDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUNoQzthQUNBLE1BQU0sQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUM5QixJQUFJLFNBQVMsR0FBdUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ2hFLENBQUMsU0FBNkIsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFNBQVM7b0JBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7b0JBQ3ZDLFNBQVMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDLEVBQ0QsU0FBUyxDQUNWLENBQUM7WUFFRixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLFNBQVMsR0FBRyxHQUFHLElBQUksTUFBTSxTQUFTLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUs7b0JBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQzs7b0JBQ3pCLEtBQUssSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRjtBQWpERCxvREFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEVycm9ycyB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgSGVscGVyIENsYXNzIHRvIGhvbGQgdGhlIGVycm9yIHJlc3VsdHNcbiAqIEBkZXNjcmlwdGlvbiBob2xkcyBlcnJvciByZXN1bHRzIGluIGFuICdpbmRleGFibGUnIG1hbm5lclxuICogd2hpbGUgc3RpbGwgcHJvdmlkaW5nIHRoZSBzYW1lIHJlc3VsdCBvbiB0b1N0cmluZ1xuICpcbiAqIEBwYXJhbSB7TW9kZWxFcnJvcnN9IGVycm9yc1xuICpcbiAqIEBjbGFzcyBNb2RlbEVycm9yRGVmaW5pdGlvblxuICpcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgTW9kZWxFcnJvckRlZmluaXRpb24ge1xuICBbaW5kZXhlcjogc3RyaW5nXTpcbiAgICB8IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgICB8ICgoKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKGVycm9yczogTW9kZWxFcnJvcnMpIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gZXJyb3JzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVycm9ycywgcHJvcCkgJiYgZXJyb3JzW3Byb3BdKVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyBhcyBhbnksIHByb3AsIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IGVycm9yc1twcm9wXSxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBPdXRwdXRzIHRoZSBjbGFzcyB0byBhIG5pY2UgcmVhZGFibGUgc3RyaW5nXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWxmOiBhbnkgPSB0aGlzIGFzIGFueTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc2VsZilcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChrKSA9PlxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZWxmLCBrKSAmJlxuICAgICAgICAgIHR5cGVvZiBzZWxmW2tdICE9PSBcImZ1bmN0aW9uXCJcbiAgICAgIClcbiAgICAgIC5yZWR1Y2UoKGFjY3VtOiBzdHJpbmcsIHByb3ApID0+IHtcbiAgICAgICAgbGV0IHByb3BFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gT2JqZWN0LmtleXMoc2VsZltwcm9wXSkucmVkdWNlKFxuICAgICAgICAgIChwcm9wQWNjdW06IHVuZGVmaW5lZCB8IHN0cmluZywga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXByb3BBY2N1bSkgcHJvcEFjY3VtID0gc2VsZltwcm9wXVtrZXldO1xuICAgICAgICAgICAgZWxzZSBwcm9wQWNjdW0gKz0gYFxcbiR7c2VsZltwcm9wXVtrZXldfWA7XG4gICAgICAgICAgICByZXR1cm4gcHJvcEFjY3VtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByb3BFcnJvcikge1xuICAgICAgICAgIHByb3BFcnJvciA9IGAke3Byb3B9IC0gJHtwcm9wRXJyb3J9YDtcbiAgICAgICAgICBpZiAoIWFjY3VtKSBhY2N1bSA9IHByb3BFcnJvcjtcbiAgICAgICAgICBlbHNlIGFjY3VtICs9IGBcXG4ke3Byb3BFcnJvcn1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwgXCJcIik7XG4gIH1cbn1cbiJdfQ==
|