@cdktn/provider-generator 0.25.0-pre.9 → 0.26.0-pre.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/README.md +12 -0
- package/build/__tests__/edge-provider-schema/builder.js +3 -3
- package/build/__tests__/edge-provider-schema/cli.js +18 -8
- package/build/__tests__/edge-provider-schema.test.js +18 -8
- package/build/__tests__/provider.test.js +44 -16
- package/build/get/__tests__/constructs-maker.test.js +91 -8
- package/build/get/__tests__/generator/complex-computed-types.test.js +18 -8
- package/build/get/__tests__/generator/deep-nested-attributes.test.js +18 -8
- package/build/get/__tests__/generator/description-escaping.test.js +18 -8
- package/build/get/__tests__/generator/empty-provider-resources.test.js +18 -8
- package/build/get/__tests__/generator/ephemeral-resources.test.js +18 -8
- package/build/get/__tests__/generator/export-sharding.test.js +18 -8
- package/build/get/__tests__/generator/import-style.test.js +18 -8
- package/build/get/__tests__/generator/module-docs-registry.test.d.ts +2 -0
- package/build/get/__tests__/generator/module-docs-registry.test.js +91 -0
- package/build/get/__tests__/generator/module-generator.test.js +18 -8
- package/build/get/__tests__/generator/nested-types.test.js +18 -8
- package/build/get/__tests__/generator/provider-functions-name-collision.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-functions-name-collision.test.js +89 -0
- package/build/get/__tests__/generator/provider-functions.test.js +18 -8
- package/build/get/__tests__/generator/provider.test.js +18 -8
- package/build/get/__tests__/generator/resource-types.test.js +18 -8
- package/build/get/__tests__/generator/skipped-attributes.test.js +18 -8
- package/build/get/__tests__/generator/types.test.js +18 -8
- package/build/get/__tests__/generator/versions-file.test.js +25 -10
- package/build/get/__tests__/generator/write-only.test.js +18 -8
- package/build/get/__tests__/registry-class-invalidation.test.d.ts +2 -0
- package/build/get/__tests__/registry-class-invalidation.test.js +120 -0
- package/build/get/__tests__/target-versions.test.js +46 -8
- package/build/get/__tests__/util.js +20 -11
- package/build/get/constructs-maker.d.ts +17 -0
- package/build/get/constructs-maker.js +86 -11
- package/build/get/generator/custom-defaults.js +2 -1
- package/build/get/generator/emitter/struct-emitter.js +20 -10
- package/build/get/generator/loop-detection.js +2 -3
- package/build/get/generator/models/attribute-model.js +3 -3
- package/build/get/generator/models/attribute-type-model.js +3 -3
- package/build/get/generator/models/provider-function-model.js +3 -4
- package/build/get/generator/models/resource-model.d.ts +5 -1
- package/build/get/generator/models/resource-model.js +20 -10
- package/build/get/generator/models/supported-stored-classes.js +2 -3
- package/build/get/generator/module-generator.d.ts +3 -2
- package/build/get/generator/module-generator.js +15 -17
- package/build/get/generator/provider-generator.d.ts +15 -1
- package/build/get/generator/provider-generator.js +20 -5
- package/build/get/generator/resource-parser.d.ts +3 -1
- package/build/get/generator/resource-parser.js +16 -7
- package/build/get/generator/sanitized-comments.js +2 -3
- package/build/get/generator/skipped-attributes.js +2 -3
- package/build/index.js +3 -3
- package/build/util.js +3 -4
- package/package.json +32 -9
- package/src/__tests__/__snapshots__/provider.test.ts.snap +1309 -3206
- package/src/__tests__/provider.test.ts +31 -8
- package/src/get/__tests__/constructs-maker.test.ts +125 -1
- package/src/get/__tests__/generator/fixtures/provider-functions-name-collision.test.fixture.json +42 -0
- package/src/get/__tests__/generator/module-docs-registry.test.ts +89 -0
- package/src/get/__tests__/generator/provider-functions-name-collision.test.ts +84 -0
- package/src/get/__tests__/generator/versions-file.test.ts +10 -5
- package/src/get/__tests__/registry-class-invalidation.test.ts +123 -0
- package/src/get/__tests__/target-versions.test.ts +43 -0
- package/src/get/constructs-maker.ts +108 -7
- package/src/get/generator/custom-defaults.ts +1 -0
- package/src/get/generator/emitter/struct-emitter.ts +2 -2
- package/src/get/generator/models/attribute-type-model.ts +1 -2
- package/src/get/generator/models/resource-model.ts +32 -9
- package/src/get/generator/module-generator.ts +20 -18
- package/src/get/generator/provider-generator.ts +27 -4
- package/src/get/generator/resource-parser.ts +21 -3
- package/tsconfig.json +4 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectAttributeLoops =
|
|
3
|
+
exports.detectAttributeLoops = detectAttributeLoops;
|
|
4
4
|
const equalAttributeIdentifiers = (x, y) => x[0] === y[0] &&
|
|
5
5
|
x[1].size === y[1].size &&
|
|
6
6
|
[...x[1]].every((x) => y[1].has(x));
|
|
@@ -52,5 +52,4 @@ function detectAttributeLoops(attributes) {
|
|
|
52
52
|
attributes.forEach((attr) => depthFirstSearch(attr));
|
|
53
53
|
return redirects;
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9sb29wLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFNLHlCQUF5QixHQUFHLENBQ2hDLENBQXNCLEVBQ3RCLENBQXNCLEVBQ3RCLEVBQUUsQ0FDRixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDdkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXRDLFNBQVMsYUFBYSxDQUFDLEtBQXFCOztJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLGFBQWEsTUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsVUFBVSxDQUM5QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQ3JCLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsS0FBcUI7SUFDbkQsT0FBTztRQUNMLEtBQUssQ0FBQyxhQUFhO1FBQ25CLElBQUksR0FBRyxDQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUMxRTtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsVUFBNEI7SUFHL0QscURBQXFEO0lBQ3JELDZFQUE2RTtJQUM3RSxNQUFNLFNBQVMsR0FBMkIsRUFBRSxDQUFDO0lBRTdDLFNBQVMsZ0JBQWdCLENBQ3ZCLFNBQXlCLEVBQ3pCLE9BQWlCLEVBQUUsRUFDbkIsZUFBaUUsRUFBRTtRQUVuRSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUN2RSx5QkFBeUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUQsQ0FBQztRQUVGLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixpREFBaUQ7WUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCO1lBQ2hCLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLEdBQUcsWUFBWTtnQkFDZixtRUFBbUU7Z0JBQ25FLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxnQkFBZ0I7YUFDOUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFckQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQTVDRCxvREE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvYXR0cmlidXRlLW1vZGVsXCI7XG5cbnR5cGUgQXR0cmlidXRlSWRlbnRpZmllciA9IFtzdHJpbmcsIFNldDxzdHJpbmc+XTtcbmNvbnN0IGVxdWFsQXR0cmlidXRlSWRlbnRpZmllcnMgPSAoXG4gIHg6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4gIHk6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4pID0+XG4gIHhbMF0gPT09IHlbMF0gJiZcbiAgeFsxXS5zaXplID09PSB5WzFdLnNpemUgJiZcbiAgWy4uLnhbMV1dLmV2ZXJ5KCh4KSA9PiB5WzFdLmhhcyh4KSk7XG5cbmZ1bmN0aW9uIHR5cGVTdHJ1Y3R1cmUobW9kZWw6IEF0dHJpYnV0ZU1vZGVsKSB7XG4gIGlmICghbW9kZWwudHlwZS5pc0NvbXBsZXgpIHtcbiAgICByZXR1cm4gbW9kZWwudHlwZS5zdG9yZWRDbGFzc1R5cGU7XG4gIH1cblxuICByZXR1cm4gYDxjb21wbGV4Onske21vZGVsLnR5cGUuc3RydWN0Py5hdHRyaWJ1dGVzXG4gICAgLm1hcCgoYXR0KSA9PiBhdHQubmFtZSlcbiAgICAuc29ydCgpfX0ke21vZGVsLnR5cGUudHlwZU1vZGVsVHlwZX0+YDtcbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlSWRlbnRpZmllcihtb2RlbDogQXR0cmlidXRlTW9kZWwpOiBBdHRyaWJ1dGVJZGVudGlmaWVyIHtcbiAgcmV0dXJuIFtcbiAgICBtb2RlbC50ZXJyYWZvcm1OYW1lLFxuICAgIG5ldyBTZXQoXG4gICAgICBtb2RlbC50eXBlLnN0cnVjdCEuYXR0cmlidXRlcy5tYXAoKGEpID0+IGAke2EubmFtZX06JHt0eXBlU3RydWN0dXJlKGEpfWApLFxuICAgICksXG4gIF07XG59XG5cbi8qKlxuICogRGV0ZWN0cyByZWN1cnNpdmUgYXR0cmlidXRlIHNjaGVtYXMgYW5kIHJldHVybnMgYW4gT2JqZWN0XG4gKiBkZXNjcmliaW5nIHdoYXQgcHJvcGVydHkgc2hvdWxkIGJlIGxpbmtpbmcgdG8gd2hpY2ggY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dHJpYnV0ZUxvb3BzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10pOiB7XG4gIFtsb29wRW50cnlwb2ludDogc3RyaW5nXTogc3RyaW5nOyAvLyBhdHRyaWJ1dGUgcGF0aCB0byBiZSByZXBsYWNlZCAtPiBhdHRyaWJ1dGUgcGF0aCBvZiB0aGUgdHlwZSB0byByZXBsYWNlIHdpdGhcbn0ge1xuICAvLyBXZSBhcHJveGltYXRlIGEgY2xhc3MgYXMgYSBzZXQgb2YgYXR0cmlidXRlcyBuYW1lc1xuICAvLyBUaGlzIGlzIG5vdCBhIHBlcmZlY3QgYXBwcm94aW1hdGlvbiwgYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlc1xuICBjb25zdCByZWRpcmVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlTW9kZWwsXG4gICAgcGF0aDogc3RyaW5nW10gPSBbXSxcbiAgICBrbm93blN0cnVjdHM6IHsgW2F0dHJpYnV0ZVBhdGg6IHN0cmluZ106IEF0dHJpYnV0ZUlkZW50aWZpZXIgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCBuYW1lID0gYXR0cmlidXRlLnRlcnJhZm9ybU5hbWU7XG4gICAgY29uc3Qgc3RydWN0ID0gYXR0cmlidXRlLnR5cGUuc3RydWN0O1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RydWN0SWRlbnRpZmllciA9IGdldEF0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlKTtcbiAgICAvLyBEZXRlY3QgaWYgd2UgdmlzaXRlZCB0aGlzIGFscmVhZHlcbiAgICBjb25zdCB2aXNpdGVkID0gT2JqZWN0LmVudHJpZXMoa25vd25TdHJ1Y3RzKS5maW5kKChbLCBhdHRySWRlbnRpZmllcl0pID0+XG4gICAgICBlcXVhbEF0dHJpYnV0ZUlkZW50aWZpZXJzKHN0cnVjdElkZW50aWZpZXIsIGF0dHJJZGVudGlmaWVyKSxcbiAgICApO1xuXG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIC8vIFdlIGhhdmUgYSBsb29wLCB3ZSBkb24ndCBuZWVkIHRvIHNlYXJjaCBkZWVwZXJcbiAgICAgIGNvbnN0IHRvQmVSZXBsYWNlZFdpdGggPSB2aXNpdGVkWzBdO1xuICAgICAgY29uc3QgdG9SZXBsYWNlID0gWy4uLnBhdGgsIG5hbWVdLmpvaW4oXCIuXCIpO1xuICAgICAgcmVkaXJlY3RzW3RvUmVwbGFjZV0gPSB0b0JlUmVwbGFjZWRXaXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWFyY2ggZGVlcGVyXG4gICAgICBzdHJ1Y3QuYXR0cmlidXRlcy5mb3JFYWNoKChhKSA9PlxuICAgICAgICBkZXB0aEZpcnN0U2VhcmNoKGEsIFsuLi5wYXRoLCBuYW1lXSwge1xuICAgICAgICAgIC4uLmtub3duU3RydWN0cyxcbiAgICAgICAgICAvLyBXZSBoYXZlbid0IHZpc2l0ZWQgdGhpcyB5ZXQsIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBrbm93biBzdHJ1Y3RzXG4gICAgICAgICAgW1suLi5wYXRoLCBuYW1lXS5qb2luKFwiLlwiKV06IHN0cnVjdElkZW50aWZpZXIsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IGRlcHRoRmlyc3RTZWFyY2goYXR0cikpO1xuXG4gIHJldHVybiByZWRpcmVjdHM7XG59XG4iXX0=
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9sb29wLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW9DQSxvREE0Q0M7QUEzRUQsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxDQUFzQixFQUN0QixDQUFzQixFQUN0QixFQUFFLENBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV0QyxTQUFTLGFBQWEsQ0FBQyxLQUFxQjs7SUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxhQUFhLE1BQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLDBDQUFFLFVBQVUsQ0FDOUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUNyQixJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLEtBQXFCO0lBQ25ELE9BQU87UUFDTCxLQUFLLENBQUMsYUFBYTtRQUNuQixJQUFJLEdBQUcsQ0FDTCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDMUU7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFVBQTRCO0lBRy9ELHFEQUFxRDtJQUNyRCw2RUFBNkU7SUFDN0UsTUFBTSxTQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUU3QyxTQUFTLGdCQUFnQixDQUN2QixTQUF5QixFQUN6QixPQUFpQixFQUFFLEVBQ25CLGVBQWlFLEVBQUU7UUFFbkUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0Qsb0NBQW9DO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FDdkUseUJBQXlCLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQzVELENBQUM7UUFFRixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osaURBQWlEO1lBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGdCQUFnQjtZQUNoQixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzlCLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNuQyxHQUFHLFlBQVk7Z0JBQ2YsbUVBQW1FO2dCQUNuRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCO2FBQzlDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvYXR0cmlidXRlLW1vZGVsXCI7XG5cbnR5cGUgQXR0cmlidXRlSWRlbnRpZmllciA9IFtzdHJpbmcsIFNldDxzdHJpbmc+XTtcbmNvbnN0IGVxdWFsQXR0cmlidXRlSWRlbnRpZmllcnMgPSAoXG4gIHg6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4gIHk6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4pID0+XG4gIHhbMF0gPT09IHlbMF0gJiZcbiAgeFsxXS5zaXplID09PSB5WzFdLnNpemUgJiZcbiAgWy4uLnhbMV1dLmV2ZXJ5KCh4KSA9PiB5WzFdLmhhcyh4KSk7XG5cbmZ1bmN0aW9uIHR5cGVTdHJ1Y3R1cmUobW9kZWw6IEF0dHJpYnV0ZU1vZGVsKSB7XG4gIGlmICghbW9kZWwudHlwZS5pc0NvbXBsZXgpIHtcbiAgICByZXR1cm4gbW9kZWwudHlwZS5zdG9yZWRDbGFzc1R5cGU7XG4gIH1cblxuICByZXR1cm4gYDxjb21wbGV4Onske21vZGVsLnR5cGUuc3RydWN0Py5hdHRyaWJ1dGVzXG4gICAgLm1hcCgoYXR0KSA9PiBhdHQubmFtZSlcbiAgICAuc29ydCgpfX0ke21vZGVsLnR5cGUudHlwZU1vZGVsVHlwZX0+YDtcbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlSWRlbnRpZmllcihtb2RlbDogQXR0cmlidXRlTW9kZWwpOiBBdHRyaWJ1dGVJZGVudGlmaWVyIHtcbiAgcmV0dXJuIFtcbiAgICBtb2RlbC50ZXJyYWZvcm1OYW1lLFxuICAgIG5ldyBTZXQoXG4gICAgICBtb2RlbC50eXBlLnN0cnVjdCEuYXR0cmlidXRlcy5tYXAoKGEpID0+IGAke2EubmFtZX06JHt0eXBlU3RydWN0dXJlKGEpfWApLFxuICAgICksXG4gIF07XG59XG5cbi8qKlxuICogRGV0ZWN0cyByZWN1cnNpdmUgYXR0cmlidXRlIHNjaGVtYXMgYW5kIHJldHVybnMgYW4gT2JqZWN0XG4gKiBkZXNjcmliaW5nIHdoYXQgcHJvcGVydHkgc2hvdWxkIGJlIGxpbmtpbmcgdG8gd2hpY2ggY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dHJpYnV0ZUxvb3BzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10pOiB7XG4gIFtsb29wRW50cnlwb2ludDogc3RyaW5nXTogc3RyaW5nOyAvLyBhdHRyaWJ1dGUgcGF0aCB0byBiZSByZXBsYWNlZCAtPiBhdHRyaWJ1dGUgcGF0aCBvZiB0aGUgdHlwZSB0byByZXBsYWNlIHdpdGhcbn0ge1xuICAvLyBXZSBhcHJveGltYXRlIGEgY2xhc3MgYXMgYSBzZXQgb2YgYXR0cmlidXRlcyBuYW1lc1xuICAvLyBUaGlzIGlzIG5vdCBhIHBlcmZlY3QgYXBwcm94aW1hdGlvbiwgYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlc1xuICBjb25zdCByZWRpcmVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlTW9kZWwsXG4gICAgcGF0aDogc3RyaW5nW10gPSBbXSxcbiAgICBrbm93blN0cnVjdHM6IHsgW2F0dHJpYnV0ZVBhdGg6IHN0cmluZ106IEF0dHJpYnV0ZUlkZW50aWZpZXIgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCBuYW1lID0gYXR0cmlidXRlLnRlcnJhZm9ybU5hbWU7XG4gICAgY29uc3Qgc3RydWN0ID0gYXR0cmlidXRlLnR5cGUuc3RydWN0O1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RydWN0SWRlbnRpZmllciA9IGdldEF0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlKTtcbiAgICAvLyBEZXRlY3QgaWYgd2UgdmlzaXRlZCB0aGlzIGFscmVhZHlcbiAgICBjb25zdCB2aXNpdGVkID0gT2JqZWN0LmVudHJpZXMoa25vd25TdHJ1Y3RzKS5maW5kKChbLCBhdHRySWRlbnRpZmllcl0pID0+XG4gICAgICBlcXVhbEF0dHJpYnV0ZUlkZW50aWZpZXJzKHN0cnVjdElkZW50aWZpZXIsIGF0dHJJZGVudGlmaWVyKSxcbiAgICApO1xuXG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIC8vIFdlIGhhdmUgYSBsb29wLCB3ZSBkb24ndCBuZWVkIHRvIHNlYXJjaCBkZWVwZXJcbiAgICAgIGNvbnN0IHRvQmVSZXBsYWNlZFdpdGggPSB2aXNpdGVkWzBdO1xuICAgICAgY29uc3QgdG9SZXBsYWNlID0gWy4uLnBhdGgsIG5hbWVdLmpvaW4oXCIuXCIpO1xuICAgICAgcmVkaXJlY3RzW3RvUmVwbGFjZV0gPSB0b0JlUmVwbGFjZWRXaXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWFyY2ggZGVlcGVyXG4gICAgICBzdHJ1Y3QuYXR0cmlidXRlcy5mb3JFYWNoKChhKSA9PlxuICAgICAgICBkZXB0aEZpcnN0U2VhcmNoKGEsIFsuLi5wYXRoLCBuYW1lXSwge1xuICAgICAgICAgIC4uLmtub3duU3RydWN0cyxcbiAgICAgICAgICAvLyBXZSBoYXZlbid0IHZpc2l0ZWQgdGhpcyB5ZXQsIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBrbm93biBzdHJ1Y3RzXG4gICAgICAgICAgW1suLi5wYXRoLCBuYW1lXS5qb2luKFwiLlwiKV06IHN0cnVjdElkZW50aWZpZXIsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IGRlcHRoRmlyc3RTZWFyY2goYXR0cikpO1xuXG4gIHJldHVybiByZWRpcmVjdHM7XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AttributeModel =
|
|
3
|
+
exports.AttributeModel = void 0;
|
|
4
|
+
exports.escapeAttributeName = escapeAttributeName;
|
|
4
5
|
// Copyright (c) HashiCorp, Inc
|
|
5
6
|
// SPDX-License-Identifier: MPL-2.0
|
|
6
7
|
const commons_1 = require("@cdktn/commons");
|
|
@@ -34,7 +35,6 @@ function escapeAttributeName(name) {
|
|
|
34
35
|
return `${name}Attribute`;
|
|
35
36
|
return name;
|
|
36
37
|
}
|
|
37
|
-
exports.escapeAttributeName = escapeAttributeName;
|
|
38
38
|
class AttributeModel {
|
|
39
39
|
constructor(options) {
|
|
40
40
|
this.loggedStoredClassUnavailable = false;
|
|
@@ -203,4 +203,4 @@ class AttributeModel {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
exports.AttributeModel = AttributeModel;
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvbW9kZWxzL2F0dHJpYnV0ZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDRDQUF3QztBQXdDeEMsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxnRUFBZ0U7SUFDaEUsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxPQUFPO1FBQUUsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO0lBQ25FLDJFQUEyRTtJQUMzRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSx3Q0FBd0M7SUFDeEMsSUFBSSxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3hDLHNEQUFzRDtJQUN0RCxJQUFJLElBQUksS0FBSyxNQUFNO1FBQUUsT0FBTyxlQUFlLENBQUM7SUFDNUMsd0RBQXdEO0lBQ3hELElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLGlCQUFpQixDQUFDO0lBQ2hELGdHQUFnRztJQUNoRyxJQUFJLElBQUksS0FBSyxnQkFBZ0I7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDekQsc0VBQXNFO0lBQ3RFLElBQUksSUFBSSxLQUFLLFlBQVk7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDckQseURBQXlEO0lBQ3pELElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDakQsc0ZBQXNGO0lBQ3RGLElBQUksSUFBSSxLQUFLLFVBQVU7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDbkQsT0FBTyxJQUFJLENBQUM7QUFD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Q0FBQzthQUFNLElBQ0wsYUFBYSxDQUFDLFdBQVcsS0FBSyxVQUFVO1lBQ3hDLGFBQWEsQ0FBQyxXQUFXLEtBQUssU0FBUztZQUN2QyxhQUFhLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFDdkMsYUFBYSxDQUFDLFdBQVcsSUFBSSxRQUFRLEVBQ3JDLENBQUM7WUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELHFEQUFxRDtRQUVyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQWhORCx3Q0FnTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGVUeXBlTW9kZWwsXG4gIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwsXG59IGZyb20gXCIuL2F0dHJpYnV0ZS10eXBlLW1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIEdldHRlclR5cGUgPVxuICB8IHsgX3R5cGU6IFwicGxhaW5cIiB9XG4gIHwge1xuICAgICAgX3R5cGU6IFwiYXJnc1wiO1xuICAgICAgYXJnczogc3RyaW5nO1xuICAgICAgcmV0dXJuVHlwZT86IHN0cmluZztcbiAgICAgIHJldHVyblN0YXRlbWVudDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBTZXR0ZXJUeXBlID1cbiAgfCB7IF90eXBlOiBcIm5vbmVcIiB9XG4gIHwgeyBfdHlwZTogXCJzZXRcIjsgdHlwZTogc3RyaW5nIH1cbiAgfCB7IF90eXBlOiBcInB1dFwiOyB0eXBlOiBzdHJpbmcgfVxuICB8IHsgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCI7IHR5cGU6IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZU1vZGVsT3B0aW9ucyB7XG4gIHN0b3JhZ2VOYW1lOiBzdHJpbmc7IC8vIHByaXZhdGUgcHJvcGVydHlcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWw7XG4gIG9wdGlvbmFsOiBib29sZWFuO1xuICBjb21wdXRlZDogYm9vbGVhbjtcbiAgdGVycmFmb3JtTmFtZTogc3RyaW5nO1xuICB0ZXJyYWZvcm1GdWxsTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ2V0QXR0Q2FsbD86IHN0cmluZztcbiAgcHJvdmlkZXI6IGJvb2xlYW47XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBmb3JjZVBsYWluR2V0dGVyVHlwZT86IGJvb2xlYW47IC8vIHVzZWQgZm9yIHNraXBwaW5nIGF0dHJpYnV0ZSB0eXBlIGF0dHJpYnV0ZXMgdGhhdCB1c2UgdGhlIFNraXBwZWRBdHRyaWJ1dGVUeXBlTW9kZWwgd2hpY2ggcmV0dXJucyBhbiBpbnRlcnBvbGF0aW9uIGFuZCBoYXMgbm8gc3RvcmVkIHR5cGVcbiAgaXNXcml0ZU9ubHk/OiBib29sZWFuOyAvLyBwcm92aWRlciBwcm90b2NvbCB3cml0ZS1vbmx5IGF0dHJpYnV0ZTogcHJvdmlkZXJzIG5ldmVyIHBlcnNpc3QvcmV0dXJuIGl0cyB2YWx1ZSwgc2VlIFJGQy0wNFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQXR0cmlidXRlTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgLy8gYHNlbGZgIGFuZCBgYnVpbGRgIGRvZXNuJ3Qgd29yayBpbiBhcyBwcm9wZXJ0eSBuYW1lIGluIFB5dGhvblxuICBpZiAobmFtZSA9PT0gXCJzZWxmXCIgfHwgbmFtZSA9PT0gXCJidWlsZFwiKSByZXR1cm4gYCR7bmFtZX1BdHRyaWJ1dGVgO1xuICAvLyBqc2lpIGNhbid0IGhhbmRsZSBgZ2V0Rm9vYCBwcm9wZXJ0aWVzLCBzaW5jZSBpdCdzIGluY29tcGF0aWJsZSB3aXRoIEphdmFcbiAgaWYgKG5hbWUubWF0Y2goL15nZXRbQS1aYS16XSsvKSkgcmV0dXJuIG5hbWUucmVwbGFjZShcImdldFwiLCBcImZldGNoXCIpO1xuICAvLyBgZXF1YWxzYCBpcyBhIHByb2hpYml0ZWQgbmFtZSBpbiBqc2lpXG4gIGlmIChuYW1lID09PSBcImVxdWFsc1wiKSByZXR1cm4gXCJlcXVhbFRvXCI7XG4gIC8vIGBub2RlYCBpcyBhbHJlYWR5IHVzZWQgYnkgdGhlIENvbnN0cnVjdHMgYmFzZSBjbGFzc1xuICBpZiAobmFtZSA9PT0gXCJub2RlXCIpIHJldHVybiBcIm5vZGVBdHRyaWJ1dGVcIjtcbiAgLy8gYFN5c3RlbWAgc2hhZG93cyBidWlsdC1pbiB0eXBlcyBpbiBDU2hhcnAgKHNlZSAjMTQyMClcbiAgaWYgKG5hbWUgPT09IFwic3lzdGVtXCIpIHJldHVybiBcInN5c3RlbUF0dHJpYnV0ZVwiO1xuICAvLyBgdGZSZXNvdXJjZVR5cGVgIGlzIGFscmVhZHkgdXNlZCBieSByZXNvdXJjZXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkaWZmZXJlbnQgcmVzb3VyY2UgdHlwZXNcbiAgaWYgKG5hbWUgPT09IFwidGZSZXNvdXJjZVR5cGVcIikgcmV0dXJuIGAke25hbWV9QXR0cmlidXRlYDtcbiAgLy8gYGltcG9ydEZyb21gIGhhcyBwb3RlbnRpYWwgZm9yIGNvbW1vbiBuYW1lIGNvbGxpc2lvbiB3aXRoIHByb3ZpZGVyc1xuICBpZiAobmFtZSA9PT0gXCJpbXBvcnRGcm9tXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIC8vIGBtb3ZlYCBjb3VsZCBoYXZlIGNvbW1vbiBuYW1lIGNvbGxpc2lvbiB3aXRoIHByb3ZpZGVyc1xuICBpZiAobmFtZSA9PT0gXCJtb3ZlVG9cIikgcmV0dXJuIGAke25hbWV9QXR0cmlidXRlYDtcbiAgLy8gYHNvZnR3YXJlYCBhdHRyaWJ1dGUgY2FuIGJlIGNvbmZ1c2VkIHdpdGggdGhlIEpTSUkgSmF2YSBydW50aW1lIHBhY2thZ2UgKHNlZSAjMzExNSlcbiAgaWYgKG5hbWUgPT09IFwic29mdHdhcmVcIikgcmV0dXJuIGAke25hbWV9QXR0cmlidXRlYDtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVNb2RlbCB7XG4gIHB1YmxpYyBzdG9yYWdlTmFtZTogc3RyaW5nOyAvLyBwcml2YXRlIHByb3BlcnR5XG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcbiAgcHVibGljIHR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbDtcbiAgcHVibGljIG9wdGlvbmFsOiBib29sZWFuO1xuICBwdWJsaWMgY29tcHV0ZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyB0ZXJyYWZvcm1OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyB0ZXJyYWZvcm1GdWxsTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9kZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIHByb3ZpZGVyOiBib29sZWFuO1xuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBmb3JjZVBsYWluR2V0dGVyVHlwZT86IGJvb2xlYW47XG4gIHByaXZhdGUgbG9nZ2VkU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgaXNXcml0ZU9ubHk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXR0cmlidXRlTW9kZWxPcHRpb25zKSB7XG4gICAgdGhpcy5zdG9yYWdlTmFtZSA9IG9wdGlvbnMuc3RvcmFnZU5hbWU7XG4gICAgdGhpcy5fbmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGU7XG4gICAgdGhpcy5vcHRpb25hbCA9IG9wdGlvbnMub3B0aW9uYWw7XG4gICAgdGhpcy5jb21wdXRlZCA9IG9wdGlvbnMuY29tcHV0ZWQ7XG4gICAgdGhpcy50ZXJyYWZvcm1OYW1lID0gb3B0aW9ucy50ZXJyYWZvcm1OYW1lO1xuICAgIHRoaXMudGVycmFmb3JtRnVsbE5hbWUgPSBvcHRpb25zLnRlcnJhZm9ybUZ1bGxOYW1lO1xuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gb3B0aW9ucy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnByb3ZpZGVyID0gb3B0aW9ucy5wcm92aWRlcjtcbiAgICB0aGlzLnJlcXVpcmVkID0gb3B0aW9ucy5yZXF1aXJlZDtcbiAgICB0aGlzLmZvcmNlUGxhaW5HZXR0ZXJUeXBlID0gb3B0aW9ucy5mb3JjZVBsYWluR2V0dGVyVHlwZTtcbiAgICB0aGlzLmlzV3JpdGVPbmx5ID0gISFvcHRpb25zLmlzV3JpdGVPbmx5O1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25hbCA9IHRoaXMub3B0aW9uYWwgPyBcIj9cIiA6IFwiXCI7XG4gICAgcmV0dXJuIGAke3RoaXMubmFtZX0ke29wdGlvbmFsfTogJHt0aGlzLnR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0Fzc2lnbmFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQgfHwgdGhpcy5vcHRpb25hbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcHRpb25hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNQcm92aWRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aWRlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ2V0dGVyVHlwZSgpOiBHZXR0ZXJUeXBlIHtcbiAgICBsZXQgZ2V0dGVyVHlwZTogR2V0dGVyVHlwZSA9IHsgX3R5cGU6IFwicGxhaW5cIiB9O1xuXG4gICAgaWYgKHRoaXMuZm9yY2VQbGFpbkdldHRlclR5cGUpIHtcbiAgICAgIHJldHVybiBnZXR0ZXJUeXBlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUHJvdmlkZXIpIHtcbiAgICAgIHJldHVybiBnZXR0ZXJUeXBlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUuaGFzUmVmZXJlbmNlQ2xhc3MpIHtcbiAgICAgIGdldHRlclR5cGUgPSB7XG4gICAgICAgIF90eXBlOiBcInN0b3JlZF9jbGFzc1wiLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5jb21wdXRlZCAmJlxuICAgICAgIXRoaXMuaXNBc3NpZ25hYmxlICYmXG4gICAgICAoIXRoaXMudHlwZS5pc1Rva2VuaXphYmxlIHx8IHRoaXMudHlwZS50eXBlTW9kZWxUeXBlID09PSBcIm1hcFwiKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMudHlwZS5pc1N0b3JlZENsYXNzVW5hdmFpbGFibGUpIHtcbiAgICAgICAgLy8gRGVmZW5zaXZlIGZhbGxiYWNrOiBuZWl0aGVyIHRoZSBjb21wb3NlZCBzdG9yZWQgY2xhc3MgbmFtZSAoZS5nLlxuICAgICAgICAvLyBcIlN0cmluZ0xpc3RNYXBNYXBcIikgbm9yIGEgY29sbGFwc2VkIG5lYXJlc3QtQW55IHdyYXBwZXIgKGUuZy4gXCJBbnlNYXBNYXBcIilcbiAgICAgICAgLy8gZXhpc3RzIGluIHRoZSBjb3JlIGNka3RuIHBhY2thZ2UgZm9yIHRoaXMgdHlwZS4gVGhpcyBzaG91bGQgYmUgcmFyZSAtIHNlZVxuICAgICAgICAvLyByZXNvbHZlU3RvcmVkQ2xhc3NOYW1lIGluIHN1cHBvcnRlZC1zdG9yZWQtY2xhc3Nlcy50cyAtIHNvIGxvZyBpdCBsb3VkbHkgdG9cbiAgICAgICAgLy8gbWFrZSByZWdyZXNzaW9ucyBpbiB0aGUgY29sbGFwc2UgbG9naWMgdmlzaWJsZS5cbiAgICAgICAgaWYgKCF0aGlzLmxvZ2dlZFN0b3JlZENsYXNzVW5hdmFpbGFibGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlZFN0b3JlZENsYXNzVW5hdmFpbGFibGUgPSB0cnVlO1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBObyBzdG9yZWQgY2xhc3MgKG5vdCBldmVuIGEgY29sbGFwc2VkIG5lYXJlc3QtQW55IHdyYXBwZXIpIGlzIGF2YWlsYWJsZSBmb3IgY29tcHV0ZWQgYXR0cmlidXRlIFwiJHt0aGlzLnRlcnJhZm9ybUZ1bGxOYW1lfVwiIChjb21wb3NlZCBzdG9yZWRDbGFzc1R5cGU6IFwiJHt0aGlzLnR5cGUuc3RvcmVkQ2xhc3NUeXBlfVwiKS4gRmFsbGluZyBiYWNrIHRvIGEgcGxhaW4sIHVudHlwZWQgZ2V0dGVyLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0dGVyVHlwZSA9IHtcbiAgICAgICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0dGVyVHlwZTtcbiAgfVxuXG4gIC8vIFJlcG9ydHMgd2hldGhlciB0aGlzIGF0dHJpYnV0ZSdzIGdldHRlciBzaXRzIGF0IGEgXCJzdG9yZWQgY2xhc3MgYm91bmRhcnlcIiB0aGF0IGlzXG4gIC8vIHdvcnRoIGRvY3VtZW50aW5nOiBcImNvbGxhcHNlZFwiIHdoZW4gYSBkZWVwZXIsIHVuc3VwcG9ydGVkIG5lc3Rpbmcgd2FzIGNvbGxhcHNlZCBpbnRvXG4gIC8vIHRoZSBuZWFyZXN0IHR5cGVkIFwiQW55XCItd3JhcHBlciAoZS5nLiBcIkFueU1hcE1hcFwiKSwgb3IgXCJmYWxsYmFja1wiIHdoZW4gbm8gc3RvcmVkIGNsYXNzXG4gIC8vIGF0IGFsbCBpcyBhdmFpbGFibGUgYW5kIGEgcGxhaW4sIHVudHlwZWQgZ2V0dGVyIGlzIGVtaXR0ZWQgaW5zdGVhZC4gTWlycm9ycyB0aGUgc2FtZVxuICAvLyBjb25kaXRpb24gdHJlZSBhcyBnZXR0ZXJUeXBlIGFib3ZlLCBzbyBpdCBvbmx5IGV2ZXIgcmVwb3J0cyBhIGJvdW5kYXJ5IGZvciBhdHRyaWJ1dGVzXG4gIC8vIHRoYXQgYWN0dWFsbHkgd2VudCB0aHJvdWdoIHRoYXQgY29tcHV0ZWQtY29sbGVjdGlvbiBicmFuY2ggLSBwbGFpbiBnZXR0ZXJzIGZvclxuICAvLyBvcmRpbmFyeSB0b2tlbml6YWJsZSB0eXBlcyAoZS5nLiBsaXN0KHN0cmluZykpIGFyZSBuZXZlciBmbGFnZ2VkLlxuICBwdWJsaWMgZ2V0IHN0b3JlZENsYXNzQm91bmRhcnlLaW5kKCk6IFwiY29sbGFwc2VkXCIgfCBcImZhbGxiYWNrXCIgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmZvcmNlUGxhaW5HZXR0ZXJUeXBlIHx8IHRoaXMuaXNQcm92aWRlcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlLmhhc1JlZmVyZW5jZUNsYXNzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuY29tcHV0ZWQgJiZcbiAgICAgICF0aGlzLmlzQXNzaWduYWJsZSAmJlxuICAgICAgKCF0aGlzLnR5cGUuaXNUb2tlbml6YWJsZSB8fCB0aGlzLnR5cGUudHlwZU1vZGVsVHlwZSA9PT0gXCJtYXBcIilcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnR5cGUuaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKSB7XG4gICAgICAgIHJldHVybiBcImZhbGxiYWNrXCI7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkU3RvcmVkQ2xhc3MgPSAodGhpcy50eXBlIGFzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwpXG4gICAgICAgIC5yZXNvbHZlZFN0b3JlZENsYXNzO1xuICAgICAgaWYgKHJlc29sdmVkU3RvcmVkQ2xhc3M/LmNvbGxhcHNlZCkge1xuICAgICAgICByZXR1cm4gXCJjb2xsYXBzZWRcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0b3JlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Fzc2lnbmFibGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNldHRlclR5cGUoKTogU2V0dGVyVHlwZSB7XG4gICAgaWYgKCF0aGlzLmlzU3RvcmVkKSB7XG4gICAgICByZXR1cm4geyBfdHlwZTogXCJub25lXCIgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIixcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLmlucHV0VHlwZURlZmluaXRpb24sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfdHlwZTogXCJzZXRcIixcbiAgICAgIHR5cGU6IGAke3RoaXMudHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufSR7XG4gICAgICAgIHRoaXMuaXNQcm92aWRlciA/IFwiIHwgdW5kZWZpbmVkXCIgOiBcIlwiXG4gICAgICB9YCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEF0dHJpYnV0ZU1vZGVsLmVzY2FwZU5hbWUodGhpcy5fbmFtZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVzY2FwZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZXNjYXBlQXR0cmlidXRlTmFtZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRpb24/LnJlcGxhY2UoLycnJy9naSwgXCJgYGBcIik7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmZXJlbmNlZFR5cGVzKGlzQ29uZmlnU3RydWN0OiBib29sZWFuKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGF0dFR5cGVTdHJ1Y3QgPSB0aGlzLnR5cGUuc3RydWN0O1xuICAgIGlmICghYXR0VHlwZVN0cnVjdCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmlzQXNzaWduYWJsZSkge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm5hbWUpO1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm1hcHBlck5hbWUpO1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0LmhjbE1hcHBlck5hbWUpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFhdHRUeXBlU3RydWN0LmlzU2luZ2xlSXRlbSAmJlxuICAgICAgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibGlzdFwiIHx8XG4gICAgICAgIGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwic2V0XCIpXG4gICAgKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubGlzdE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJtYXBcIikge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm1hcE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJtYXBsaXN0XCIpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5tYXBMaXN0TmFtZSk7XG4gICAgfSBlbHNlIGlmIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcIm1hcHNldFwiKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubWFwTGlzdE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJsaXN0bWFwXCIpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5saXN0TWFwTmFtZSk7XG4gICAgfSBlbHNlIGlmIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcInNldG1hcFwiKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubGlzdE1hcE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcImxpc3RsaXN0XCIgfHxcbiAgICAgIGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibGlzdHNldFwiIHx8XG4gICAgICBhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcInNldGxpc3RcIiB8fFxuICAgICAgYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PSBcInNldHNldFwiXG4gICAgKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubGlzdExpc3ROYW1lKTtcbiAgICB9IGVsc2UgaWYgKCFpc0NvbmZpZ1N0cnVjdCkge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm91dHB1dFJlZmVyZW5jZU5hbWUpO1xuICAgIH1cbiAgICAvLyBvdGhlciB0eXBlcyBvZiBuZXN0ZWQgY29sbGVjdGlvbnMgYXJlbid0IHN1cHBvcnRlZFxuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG59XG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvbW9kZWxzL2F0dHJpYnV0ZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwQ0Esa0RBb0JDO0FBOURELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNENBQXdDO0FBd0N4QyxTQUFnQixtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLGdFQUFnRTtJQUNoRSxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLE9BQU87UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDbkUsMkVBQTJFO0lBQzNFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLHdDQUF3QztJQUN4QyxJQUFJLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDeEMsc0RBQXNEO0lBQ3RELElBQUksSUFBSSxLQUFLLE1BQU07UUFBRSxPQUFPLGVBQWUsQ0FBQztJQUM1Qyx3REFBd0Q7SUFDeEQsSUFBSSxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8saUJBQWlCLENBQUM7SUFDaEQsZ0dBQWdHO0lBQ2hHLElBQUksSUFBSSxLQUFLLGdCQUFnQjtRQUFFLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztJQUN6RCxzRUFBc0U7SUFDdEUsSUFBSSxJQUFJLEtBQUssWUFBWTtRQUFFLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztJQUNyRCx5REFBeUQ7SUFDekQsSUFBSSxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztJQUNqRCxzRkFBc0Y7SUFDdEYsSUFBSSxJQUFJLEtBQUssVUFBVTtRQUFFLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztJQUNuRCxPQUFP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LENBQUM7YUFBTSxJQUNMLGFBQWEsQ0FBQyxXQUFXLEtBQUssVUFBVTtZQUN4QyxhQUFhLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFDdkMsYUFBYSxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQ3ZDLGFBQWEsQ0FBQyxXQUFXLElBQUksUUFBUSxFQUNyQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxxREFBcUQ7UUFFckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFoTkQsd0NBZ05DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlVHlwZU1vZGVsLFxuICBDb2xsZWN0aW9uQXR0cmlidXRlVHlwZU1vZGVsLFxufSBmcm9tIFwiLi9hdHRyaWJ1dGUtdHlwZS1tb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBHZXR0ZXJUeXBlID1cbiAgfCB7IF90eXBlOiBcInBsYWluXCIgfVxuICB8IHtcbiAgICAgIF90eXBlOiBcImFyZ3NcIjtcbiAgICAgIGFyZ3M6IHN0cmluZztcbiAgICAgIHJldHVyblR5cGU/OiBzdHJpbmc7XG4gICAgICByZXR1cm5TdGF0ZW1lbnQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCI7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU2V0dGVyVHlwZSA9XG4gIHwgeyBfdHlwZTogXCJub25lXCIgfVxuICB8IHsgX3R5cGU6IFwic2V0XCI7IHR5cGU6IHN0cmluZyB9XG4gIHwgeyBfdHlwZTogXCJwdXRcIjsgdHlwZTogc3RyaW5nIH1cbiAgfCB7IF90eXBlOiBcInN0b3JlZF9jbGFzc1wiOyB0eXBlOiBzdHJpbmcgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVNb2RlbE9wdGlvbnMge1xuICBzdG9yYWdlTmFtZTogc3RyaW5nOyAvLyBwcml2YXRlIHByb3BlcnR5XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogQXR0cmlidXRlVHlwZU1vZGVsO1xuICBvcHRpb25hbDogYm9vbGVhbjtcbiAgY29tcHV0ZWQ6IGJvb2xlYW47XG4gIHRlcnJhZm9ybU5hbWU6IHN0cmluZztcbiAgdGVycmFmb3JtRnVsbE5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdldEF0dENhbGw/OiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBib29sZWFuO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgZm9yY2VQbGFpbkdldHRlclR5cGU/OiBib29sZWFuOyAvLyB1c2VkIGZvciBza2lwcGluZyBhdHRyaWJ1dGUgdHlwZSBhdHRyaWJ1dGVzIHRoYXQgdXNlIHRoZSBTa2lwcGVkQXR0cmlidXRlVHlwZU1vZGVsIHdoaWNoIHJldHVybnMgYW4gaW50ZXJwb2xhdGlvbiBhbmQgaGFzIG5vIHN0b3JlZCB0eXBlXG4gIGlzV3JpdGVPbmx5PzogYm9vbGVhbjsgLy8gcHJvdmlkZXIgcHJvdG9jb2wgd3JpdGUtb25seSBhdHRyaWJ1dGU6IHByb3ZpZGVycyBuZXZlciBwZXJzaXN0L3JldHVybiBpdHMgdmFsdWUsIHNlZSBSRkMtMDRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIC8vIGBzZWxmYCBhbmQgYGJ1aWxkYCBkb2Vzbid0IHdvcmsgaW4gYXMgcHJvcGVydHkgbmFtZSBpbiBQeXRob25cbiAgaWYgKG5hbWUgPT09IFwic2VsZlwiIHx8IG5hbWUgPT09IFwiYnVpbGRcIikgcmV0dXJuIGAke25hbWV9QXR0cmlidXRlYDtcbiAgLy8ganNpaSBjYW4ndCBoYW5kbGUgYGdldEZvb2AgcHJvcGVydGllcywgc2luY2UgaXQncyBpbmNvbXBhdGlibGUgd2l0aCBKYXZhXG4gIGlmIChuYW1lLm1hdGNoKC9eZ2V0W0EtWmEtel0rLykpIHJldHVybiBuYW1lLnJlcGxhY2UoXCJnZXRcIiwgXCJmZXRjaFwiKTtcbiAgLy8gYGVxdWFsc2AgaXMgYSBwcm9oaWJpdGVkIG5hbWUgaW4ganNpaVxuICBpZiAobmFtZSA9PT0gXCJlcXVhbHNcIikgcmV0dXJuIFwiZXF1YWxUb1wiO1xuICAvLyBgbm9kZWAgaXMgYWxyZWFkeSB1c2VkIGJ5IHRoZSBDb25zdHJ1Y3RzIGJhc2UgY2xhc3NcbiAgaWYgKG5hbWUgPT09IFwibm9kZVwiKSByZXR1cm4gXCJub2RlQXR0cmlidXRlXCI7XG4gIC8vIGBTeXN0ZW1gIHNoYWRvd3MgYnVpbHQtaW4gdHlwZXMgaW4gQ1NoYXJwIChzZWUgIzE0MjApXG4gIGlmIChuYW1lID09PSBcInN5c3RlbVwiKSByZXR1cm4gXCJzeXN0ZW1BdHRyaWJ1dGVcIjtcbiAgLy8gYHRmUmVzb3VyY2VUeXBlYCBpcyBhbHJlYWR5IHVzZWQgYnkgcmVzb3VyY2VzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IHJlc291cmNlIHR5cGVzXG4gIGlmIChuYW1lID09PSBcInRmUmVzb3VyY2VUeXBlXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIC8vIGBpbXBvcnRGcm9tYCBoYXMgcG90ZW50aWFsIGZvciBjb21tb24gbmFtZSBjb2xsaXNpb24gd2l0aCBwcm92aWRlcnNcbiAgaWYgKG5hbWUgPT09IFwiaW1wb3J0RnJvbVwiKSByZXR1cm4gYCR7bmFtZX1BdHRyaWJ1dGVgO1xuICAvLyBgbW92ZWAgY291bGQgaGF2ZSBjb21tb24gbmFtZSBjb2xsaXNpb24gd2l0aCBwcm92aWRlcnNcbiAgaWYgKG5hbWUgPT09IFwibW92ZVRvXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIC8vIGBzb2Z0d2FyZWAgYXR0cmlidXRlIGNhbiBiZSBjb25mdXNlZCB3aXRoIHRoZSBKU0lJIEphdmEgcnVudGltZSBwYWNrYWdlIChzZWUgIzMxMTUpXG4gIGlmIChuYW1lID09PSBcInNvZnR3YXJlXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlTW9kZWwge1xuICBwdWJsaWMgc3RvcmFnZU5hbWU6IHN0cmluZzsgLy8gcHJpdmF0ZSBwcm9wZXJ0eVxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyB0eXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWw7XG4gIHB1YmxpYyBvcHRpb25hbDogYm9vbGVhbjtcbiAgcHVibGljIGNvbXB1dGVkOiBib29sZWFuO1xuICBwdWJsaWMgdGVycmFmb3JtTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgdGVycmFmb3JtRnVsbE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm92aWRlcjogYm9vbGVhbjtcbiAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICBwdWJsaWMgZm9yY2VQbGFpbkdldHRlclR5cGU/OiBib29sZWFuO1xuICBwcml2YXRlIGxvZ2dlZFN0b3JlZENsYXNzVW5hdmFpbGFibGUgPSBmYWxzZTtcbiAgcHVibGljIGlzV3JpdGVPbmx5OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF0dHJpYnV0ZU1vZGVsT3B0aW9ucykge1xuICAgIHRoaXMuc3RvcmFnZU5hbWUgPSBvcHRpb25zLnN0b3JhZ2VOYW1lO1xuICAgIHRoaXMuX25hbWUgPSBvcHRpb25zLm5hbWU7XG4gICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlO1xuICAgIHRoaXMub3B0aW9uYWwgPSBvcHRpb25zLm9wdGlvbmFsO1xuICAgIHRoaXMuY29tcHV0ZWQgPSBvcHRpb25zLmNvbXB1dGVkO1xuICAgIHRoaXMudGVycmFmb3JtTmFtZSA9IG9wdGlvbnMudGVycmFmb3JtTmFtZTtcbiAgICB0aGlzLnRlcnJhZm9ybUZ1bGxOYW1lID0gb3B0aW9ucy50ZXJyYWZvcm1GdWxsTmFtZTtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5wcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gICAgdGhpcy5yZXF1aXJlZCA9IG9wdGlvbnMucmVxdWlyZWQ7XG4gICAgdGhpcy5mb3JjZVBsYWluR2V0dGVyVHlwZSA9IG9wdGlvbnMuZm9yY2VQbGFpbkdldHRlclR5cGU7XG4gICAgdGhpcy5pc1dyaXRlT25seSA9ICEhb3B0aW9ucy5pc1dyaXRlT25seTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZURlZmluaXRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsID8gXCI/XCIgOiBcIlwiO1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9JHtvcHRpb25hbH06ICR7dGhpcy50eXBlLmlucHV0VHlwZURlZmluaXRpb259YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBc3NpZ25hYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkIHx8IHRoaXMub3B0aW9uYWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3B0aW9uYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUHJvdmlkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldHRlclR5cGUoKTogR2V0dGVyVHlwZSB7XG4gICAgbGV0IGdldHRlclR5cGU6IEdldHRlclR5cGUgPSB7IF90eXBlOiBcInBsYWluXCIgfTtcblxuICAgIGlmICh0aGlzLmZvcmNlUGxhaW5HZXR0ZXJUeXBlKSB7XG4gICAgICByZXR1cm4gZ2V0dGVyVHlwZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1Byb3ZpZGVyKSB7XG4gICAgICByZXR1cm4gZ2V0dGVyVHlwZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlLmhhc1JlZmVyZW5jZUNsYXNzKSB7XG4gICAgICBnZXR0ZXJUeXBlID0ge1xuICAgICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIixcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuY29tcHV0ZWQgJiZcbiAgICAgICF0aGlzLmlzQXNzaWduYWJsZSAmJlxuICAgICAgKCF0aGlzLnR5cGUuaXNUb2tlbml6YWJsZSB8fCB0aGlzLnR5cGUudHlwZU1vZGVsVHlwZSA9PT0gXCJtYXBcIilcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnR5cGUuaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKSB7XG4gICAgICAgIC8vIERlZmVuc2l2ZSBmYWxsYmFjazogbmVpdGhlciB0aGUgY29tcG9zZWQgc3RvcmVkIGNsYXNzIG5hbWUgKGUuZy5cbiAgICAgICAgLy8gXCJTdHJpbmdMaXN0TWFwTWFwXCIpIG5vciBhIGNvbGxhcHNlZCBuZWFyZXN0LUFueSB3cmFwcGVyIChlLmcuIFwiQW55TWFwTWFwXCIpXG4gICAgICAgIC8vIGV4aXN0cyBpbiB0aGUgY29yZSBjZGt0biBwYWNrYWdlIGZvciB0aGlzIHR5cGUuIFRoaXMgc2hvdWxkIGJlIHJhcmUgLSBzZWVcbiAgICAgICAgLy8gcmVzb2x2ZVN0b3JlZENsYXNzTmFtZSBpbiBzdXBwb3J0ZWQtc3RvcmVkLWNsYXNzZXMudHMgLSBzbyBsb2cgaXQgbG91ZGx5IHRvXG4gICAgICAgIC8vIG1ha2UgcmVncmVzc2lvbnMgaW4gdGhlIGNvbGxhcHNlIGxvZ2ljIHZpc2libGUuXG4gICAgICAgIGlmICghdGhpcy5sb2dnZWRTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZWRTdG9yZWRDbGFzc1VuYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgTm8gc3RvcmVkIGNsYXNzIChub3QgZXZlbiBhIGNvbGxhcHNlZCBuZWFyZXN0LUFueSB3cmFwcGVyKSBpcyBhdmFpbGFibGUgZm9yIGNvbXB1dGVkIGF0dHJpYnV0ZSBcIiR7dGhpcy50ZXJyYWZvcm1GdWxsTmFtZX1cIiAoY29tcG9zZWQgc3RvcmVkQ2xhc3NUeXBlOiBcIiR7dGhpcy50eXBlLnN0b3JlZENsYXNzVHlwZX1cIikuIEZhbGxpbmcgYmFjayB0byBhIHBsYWluLCB1bnR5cGVkIGdldHRlci5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldHRlclR5cGUgPSB7XG4gICAgICAgICAgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlclR5cGU7XG4gIH1cblxuICAvLyBSZXBvcnRzIHdoZXRoZXIgdGhpcyBhdHRyaWJ1dGUncyBnZXR0ZXIgc2l0cyBhdCBhIFwic3RvcmVkIGNsYXNzIGJvdW5kYXJ5XCIgdGhhdCBpc1xuICAvLyB3b3J0aCBkb2N1bWVudGluZzogXCJjb2xsYXBzZWRcIiB3aGVuIGEgZGVlcGVyLCB1bnN1cHBvcnRlZCBuZXN0aW5nIHdhcyBjb2xsYXBzZWQgaW50b1xuICAvLyB0aGUgbmVhcmVzdCB0eXBlZCBcIkFueVwiLXdyYXBwZXIgKGUuZy4gXCJBbnlNYXBNYXBcIiksIG9yIFwiZmFsbGJhY2tcIiB3aGVuIG5vIHN0b3JlZCBjbGFzc1xuICAvLyBhdCBhbGwgaXMgYXZhaWxhYmxlIGFuZCBhIHBsYWluLCB1bnR5cGVkIGdldHRlciBpcyBlbWl0dGVkIGluc3RlYWQuIE1pcnJvcnMgdGhlIHNhbWVcbiAgLy8gY29uZGl0aW9uIHRyZWUgYXMgZ2V0dGVyVHlwZSBhYm92ZSwgc28gaXQgb25seSBldmVyIHJlcG9ydHMgYSBib3VuZGFyeSBmb3IgYXR0cmlidXRlc1xuICAvLyB0aGF0IGFjdHVhbGx5IHdlbnQgdGhyb3VnaCB0aGF0IGNvbXB1dGVkLWNvbGxlY3Rpb24gYnJhbmNoIC0gcGxhaW4gZ2V0dGVycyBmb3JcbiAgLy8gb3JkaW5hcnkgdG9rZW5pemFibGUgdHlwZXMgKGUuZy4gbGlzdChzdHJpbmcpKSBhcmUgbmV2ZXIgZmxhZ2dlZC5cbiAgcHVibGljIGdldCBzdG9yZWRDbGFzc0JvdW5kYXJ5S2luZCgpOiBcImNvbGxhcHNlZFwiIHwgXCJmYWxsYmFja1wiIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5mb3JjZVBsYWluR2V0dGVyVHlwZSB8fCB0aGlzLmlzUHJvdmlkZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZS5oYXNSZWZlcmVuY2VDbGFzcykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbXB1dGVkICYmXG4gICAgICAhdGhpcy5pc0Fzc2lnbmFibGUgJiZcbiAgICAgICghdGhpcy50eXBlLmlzVG9rZW5pemFibGUgfHwgdGhpcy50eXBlLnR5cGVNb2RlbFR5cGUgPT09IFwibWFwXCIpXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy50eXBlLmlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSkge1xuICAgICAgICByZXR1cm4gXCJmYWxsYmFja1wiO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvbHZlZFN0b3JlZENsYXNzID0gKHRoaXMudHlwZSBhcyBDb2xsZWN0aW9uQXR0cmlidXRlVHlwZU1vZGVsKVxuICAgICAgICAucmVzb2x2ZWRTdG9yZWRDbGFzcztcbiAgICAgIGlmIChyZXNvbHZlZFN0b3JlZENsYXNzPy5jb2xsYXBzZWQpIHtcbiAgICAgICAgcmV0dXJuIFwiY29sbGFwc2VkXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdG9yZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBc3NpZ25hYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXR0ZXJUeXBlKCk6IFNldHRlclR5cGUge1xuICAgIGlmICghdGhpcy5pc1N0b3JlZCkge1xuICAgICAgcmV0dXJuIHsgX3R5cGU6IFwibm9uZVwiIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCIsXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZS5pbnB1dFR5cGVEZWZpbml0aW9uLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX3R5cGU6IFwic2V0XCIsXG4gICAgICB0eXBlOiBgJHt0aGlzLnR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn0ke1xuICAgICAgICB0aGlzLmlzUHJvdmlkZXIgPyBcIiB8IHVuZGVmaW5lZFwiIDogXCJcIlxuICAgICAgfWAsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBBdHRyaWJ1dGVNb2RlbC5lc2NhcGVOYW1lKHRoaXMuX25hbWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlc2NhcGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVzY2FwZUF0dHJpYnV0ZU5hbWUobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0aW9uPy5yZXBsYWNlKC8nJycvZ2ksIFwiYGBgXCIpO1xuICB9XG5cbiAgcHVibGljIGdldFJlZmVyZW5jZWRUeXBlcyhpc0NvbmZpZ1N0cnVjdDogYm9vbGVhbik6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhdHRUeXBlU3RydWN0ID0gdGhpcy50eXBlLnN0cnVjdDtcbiAgICBpZiAoIWF0dFR5cGVTdHJ1Y3QpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAodGhpcy5pc0Fzc2lnbmFibGUpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5uYW1lKTtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5tYXBwZXJOYW1lKTtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5oY2xNYXBwZXJOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhYXR0VHlwZVN0cnVjdC5pc1NpbmdsZUl0ZW0gJiZcbiAgICAgIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcImxpc3RcIiB8fFxuICAgICAgICBhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcInNldFwiKVxuICAgICkge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lmxpc3ROYW1lKTtcbiAgICB9IGVsc2UgaWYgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibWFwXCIpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5tYXBOYW1lKTtcbiAgICB9IGVsc2UgaWYgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibWFwbGlzdFwiKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubWFwTGlzdE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJtYXBzZXRcIikge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm1hcExpc3ROYW1lKTtcbiAgICB9IGVsc2UgaWYgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibGlzdG1hcFwiKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubGlzdE1hcE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJzZXRtYXBcIikge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lmxpc3RNYXBOYW1lKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJsaXN0bGlzdFwiIHx8XG4gICAgICBhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcImxpc3RzZXRcIiB8fFxuICAgICAgYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJzZXRsaXN0XCIgfHxcbiAgICAgIGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT0gXCJzZXRzZXRcIlxuICAgICkge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lmxpc3RMaXN0TmFtZSk7XG4gICAgfSBlbHNlIGlmICghaXNDb25maWdTdHJ1Y3QpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5vdXRwdXRSZWZlcmVuY2VOYW1lKTtcbiAgICB9XG4gICAgLy8gb3RoZXIgdHlwZXMgb2YgbmVzdGVkIGNvbGxlY3Rpb25zIGFyZW4ndCBzdXBwb3J0ZWRcblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MapAttributeTypeModel = exports.SetAttributeTypeModel = exports.ListAttributeTypeModel = exports.StructAttributeTypeModel = exports.SimpleAttributeTypeModel = exports.SkippedAttributeTypeModel =
|
|
3
|
+
exports.MapAttributeTypeModel = exports.SetAttributeTypeModel = exports.ListAttributeTypeModel = exports.StructAttributeTypeModel = exports.SimpleAttributeTypeModel = exports.SkippedAttributeTypeModel = void 0;
|
|
4
|
+
exports.describeTerraformType = describeTerraformType;
|
|
4
5
|
const util_1 = require("../../../util");
|
|
5
6
|
const supported_stored_classes_1 = require("./supported-stored-classes");
|
|
6
7
|
// Describes the Terraform type of an attribute as its `list(...)`/`set(...)`/`map(...)`
|
|
@@ -26,7 +27,6 @@ function describeTerraformType(model) {
|
|
|
26
27
|
: model.storedClassType;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
exports.describeTerraformType = describeTerraformType;
|
|
30
30
|
class SkippedAttributeTypeModel {
|
|
31
31
|
constructor() { }
|
|
32
32
|
get typeModelType() {
|
|
@@ -459,4 +459,4 @@ class MapAttributeTypeModel {
|
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
461
|
exports.MapAttributeTypeModel = MapAttributeTypeModel;
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXR5cGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvYXR0cmlidXRlLXR5cGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esd0NBQThEO0FBQzlELHlFQUFvRTtBQWlCcEUsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2Riw0RUFBNEU7QUFDNUUsMEZBQTBGO0FBQzFGLFNBQWdCLHFCQUFxQixDQUFDLEtBQXlCO0lBQzdELFFBQVEsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTTtZQUNULE9BQU8sUUFBUSxxQkFBcUIsQ0FDakMsS0FBc0MsQ0FBQyxXQUFXLENBQ3BELEdBQUcsQ0FBQztRQUNQLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxxQkFBcUIsQ0FDaEMsS0FBc0MsQ0FBQyxXQUFXLENBQ3BELEdBQUcsQ0FBQztRQUNQLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxxQkFBcUIsQ0FDaEMsS0FBc0MsQ0FBQyxXQUFXLENBQ3BELEdBQUcsQ0FBQztRQUNQLEtBQUssUUFBUTtZQUNYLE9BQU8sUUFBUSxDQUFDO1FBQ2xCO1lBQ0UsbUZBQW1GO1lBQ25GLG9GQUFvRjtZQUNwRixxQ0FBcUM7WUFDckMsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVM7Z0JBQ3hDLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7QUFDSCxDQUFDO0FBeEJELHNEQXdCQztBQUVELE1BQWEseUJBQXlCO0lBQ3BDLGdCQUFlLENBQUM7SUFFaEIsSUFBSSxhQUFhO1FBQ2YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLEtBQUssQ0FB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SUFDckUsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sdUJBQXVCLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEdBQUcsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxTQUFTO2dCQUNaLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsc0ZBQXNGO0lBQ3RGLElBQUksd0JBQXdCO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUE1RkQsc0RBNEZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFN0cnVjdCB9IGZyb20gXCIuL3N0cnVjdFwiO1xuaW1wb3J0IHsgdXBwZXJjYXNlRmlyc3QsIGRvd25jYXNlRmlyc3QgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbFwiO1xuaW1wb3J0IHsgcmVzb2x2ZVN0b3JlZENsYXNzTmFtZSB9IGZyb20gXCIuL3N1cHBvcnRlZC1zdG9yZWQtY2xhc3Nlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIHJlYWRvbmx5IHN0cnVjdD86IFN0cnVjdDsgLy8gY29tcGxleCBvYmplY3QgdHlwZSBjb250YWluZWQgd2l0aGluIHRoZSB0eXBlXG4gIHJlYWRvbmx5IGlzQ29tcGxleDogYm9vbGVhbjsgLy8gYmFzaWNhbGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhIHN0cnVjdFxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZyk6IHN0cmluZzsgLy8gaW5pdGlhbGl6ZXIgZm9yIGtlZXBpbmcgY2xhc3MgbmVlZGVkIHRvIGtlZXAgdHJhY2sgb2YgcmVmZXJlbmNlIGFjY2Vzc1xuICByZWFkb25seSBzdG9yZWRDbGFzc1R5cGU6IHN0cmluZzsgLy8gdXNlZCBtYWlubHkgYnkgY29sbGVjdGlvbiB0eXBlcyB0byBnZW5lcmF0ZSB0aGVpciBzdG9yZWQgY2xhc3MgaW5pdGlhbGl6ZXJcbiAgcmVhZG9ubHkgaW5wdXRUeXBlRGVmaW5pdGlvbjogc3RyaW5nOyAvLyB0aGlzIGlzIHRoZSB0eXBlIHVzZWQgZm9yIGlucHV0dGluZyB2YWx1ZXNcbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKTogc3RyaW5nOyAvLyB0aGlzIGlzIGZvciBnZXR0aW5nIHJlZmVyZW5jZSBmb3Igc2ltcGxlIHR5cGVzXG4gIHJlYWRvbmx5IHRvVGVycmFmb3JtRnVuY3Rpb246IHN0cmluZzsgLy8gdGhpcyBpcyBmb3IgY29udmVydGluZyBpbnB1dCB2YWx1ZXMgdG8gVGVycmFmb3JtIHN5bnRheFxuICByZWFkb25seSB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uOiBzdHJpbmc7IC8vIHRoaXMgaXMgZm9yIGNvbnZlcnRpbmcgaW5wdXQgdmFsdWVzIHRvIFRlcnJhZm9ybSBzeW50YXggaW4gSENMXG4gIHJlYWRvbmx5IHR5cGVNb2RlbFR5cGU6IHN0cmluZzsgLy8gc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgaW5zdGFuY2VvZlxuICByZWFkb25seSBoYXNSZWZlcmVuY2VDbGFzczogYm9vbGVhbjsgLy8gdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBzdG9yZWRfY2xhc3MgZ2V0dGVyIHNob3VsZCBiZSB1c2VkXG4gIHJlYWRvbmx5IGlzVG9rZW5pemFibGU6IGJvb2xlYW47IC8vIGNhbiB0aGUgdHlwZSBiZSByZXByZXNlbnRlZCBieSBhIHRva2VuIHR5cGVcbiAgcmVhZG9ubHkgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlOiBib29sZWFuOyAvLyB0cnVlIHdoZW4gbm8gXCJjZGt0bi48TmFtZT5cIiBzdG9yZWQgY2xhc3MgKG5vdCBldmVuIGEgY29sbGFwc2VkIG5lYXJlc3QtQW55IHdyYXBwZXIpIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyB0eXBlXG59XG5cbi8vIERlc2NyaWJlcyB0aGUgVGVycmFmb3JtIHR5cGUgb2YgYW4gYXR0cmlidXRlIGFzIGl0cyBgbGlzdCguLi4pYC9gc2V0KC4uLilgL2BtYXAoLi4uKWBcbi8vIGNvbXBvc2VkIG5vdGF0aW9uIChtYXRjaGluZyBob3cgVGVycmFmb3JtIGl0c2VsZiBkZXNjcmliZXMgbmVzdGVkIGNvbGxlY3Rpb24gdHlwZXMpLFxuLy8gZm9yIHVzZSBpbiBnZW5lcmF0ZWQgSlNEb2MuIFVzZWQgb25seSBmb3IgY29sbGFwc2VkL2ZhbGxiYWNrIGdldHRlcnMgKHNlZVxuLy8gQXR0cmlidXRlc0VtaXR0ZXIpIHNvIGl0IG5ldmVyIG5lZWRzIHRvIGJlIGV4aGF1c3RpdmUvcGVyZmVjdGx5IHN0YWJsZSBmb3IgZXZlcnkgc2hhcGUuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVUZXJyYWZvcm1UeXBlKG1vZGVsOiBBdHRyaWJ1dGVUeXBlTW9kZWwpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG1vZGVsLnR5cGVNb2RlbFR5cGUpIHtcbiAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgcmV0dXJuIGBsaXN0KCR7ZGVzY3JpYmVUZXJyYWZvcm1UeXBlKFxuICAgICAgICAobW9kZWwgYXMgQ29sbGVjdGlvbkF0dHJpYnV0ZVR5cGVNb2RlbCkuZWxlbWVudFR5cGUsXG4gICAgICApfSlgO1xuICAgIGNhc2UgXCJzZXRcIjpcbiAgICAgIHJldHVybiBgc2V0KCR7ZGVzY3JpYmVUZXJyYWZvcm1UeXBlKFxuICAgICAgICAobW9kZWwgYXMgQ29sbGVjdGlvbkF0dHJpYnV0ZVR5cGVNb2RlbCkuZWxlbWVudFR5cGUsXG4gICAgICApfSlgO1xuICAgIGNhc2UgXCJtYXBcIjpcbiAgICAgIHJldHVybiBgbWFwKCR7ZGVzY3JpYmVUZXJyYWZvcm1UeXBlKFxuICAgICAgICAobW9kZWwgYXMgQ29sbGVjdGlvbkF0dHJpYnV0ZVR5cGVNb2RlbCkuZWxlbWVudFR5cGUsXG4gICAgICApfSlgO1xuICAgIGNhc2UgXCJzdHJ1Y3RcIjpcbiAgICAgIHJldHVybiBcIm9iamVjdFwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBDb3ZlcnMgYm90aCBTaW1wbGVBdHRyaWJ1dGVUeXBlTW9kZWwgKHN0b3JlZENsYXNzVHlwZSBpcyB0aGUgVGVycmFmb3JtIHByaW1pdGl2ZVxuICAgICAgLy8gbmFtZSwgZS5nLiBcInN0cmluZ1wiIHwgXCJudW1iZXJcIiB8IFwiYm9vbGVhblwiIHwgXCJhbnlcIikgYW5kIFNraXBwZWRBdHRyaWJ1dGVUeXBlTW9kZWxcbiAgICAgIC8vIChzdG9yZWRDbGFzc1R5cGUgaXMgYWx3YXlzIFwiYW55XCIpLlxuICAgICAgcmV0dXJuIG1vZGVsLnN0b3JlZENsYXNzVHlwZSA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgPyBcImJvb2xcIlxuICAgICAgICA6IG1vZGVsLnN0b3JlZENsYXNzVHlwZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2tpcHBlZEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzaW1wbGVcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBpc0NvbXBsZXgoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihfbmFtZTogc3RyaW5nKSB7XG4gICAgLy8gbm90IHVzZWRcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGdldCBzdG9yZWRDbGFzc1R5cGUoKSB7XG4gICAgcmV0dXJuIFwiYW55XCI7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlRGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4gXCJhbnlcIjtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCcke25hbWV9JylgO1xuICB9XG5cbiAgZ2V0IHRvVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGBjZGt0bi5hbnlUb1RlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLmFueVRvSGNsVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNUb2tlbml6YWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlQXR0cmlidXRlVHlwZU1vZGVsIGltcGxlbWVudHMgQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZykge31cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzaW1wbGVcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBpc0NvbXBsZXgoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihfbmFtZTogc3RyaW5nKSB7XG4gICAgLy8gbm90IHVzZWRcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGdldCBzdG9yZWRDbGFzc1R5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gXCJib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGVcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgICB9XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYHRoaXMuZ2V0JHt1cHBlcmNhc2VGaXJzdCh0aGlzLnR5cGUpfUF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uJHt0aGlzLnR5cGV9VG9UZXJyYWZvcm1gO1xuICB9XG5cbiAgZ2V0IHRvSGNsVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGBjZGt0bi4ke3RoaXMudHlwZX1Ub0hjbFRlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RydWN0QXR0cmlidXRlVHlwZU1vZGVsIGltcGxlbWVudHMgQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHN0cnVjdDogU3RydWN0KSB7fVxuXG4gIGdldCB0eXBlTW9kZWxUeXBlKCkge1xuICAgIHJldHVybiBcInN0cnVjdFwiO1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0cnVjdC5vdXRwdXRSZWZlcmVuY2VOYW1lfSh0aGlzLCBcIiR7bmFtZX1cIilgO1xuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJ1Y3QubmFtZTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0cnVjdC5uYW1lO1xuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVGhpcyBzaG91bG4ndCBhY3R1YWxseSBiZSBjYWxsZWRcbiAgICByZXR1cm4gYHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgJHtkb3duY2FzZUZpcnN0KHRoaXMuc3RydWN0Lm5hbWUpfVRvVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgJHtkb3duY2FzZUZpcnN0KHRoaXMuc3RydWN0Lm5hbWUpfVRvSGNsVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc1N0b3JlZENsYXNzVW5hdmFpbGFibGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkF0dHJpYnV0ZVR5cGVNb2RlbCBleHRlbmRzIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIGVsZW1lbnRUeXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWw7XG4gIC8vIFJlc29sdmVzIHRoZSBcImNka3RuLjxuYW1lPlwiIHN0b3JlZCBjbGFzcyB0byBpbnN0YW50aWF0ZSBmb3IgdGhpcyAobm9uLWNvbXBsZXgpXG4gIC8vIGNvbGxlY3Rpb24gdHlwZSwgYW5kIHdoZXRoZXIgdGhhdCByZXNvbHV0aW9uIGNvbGxhcHNlZCBhIGRlZXBlciwgdW5zdXBwb3J0ZWQgbmVzdGluZ1xuICAvLyBpbnRvIHRoZSBuZWFyZXN0IHR5cGVkIFwiQW55XCItd3JhcHBlci4gdW5kZWZpbmVkIG9ubHkgZGVmZW5zaXZlbHkgLSBzZWVcbiAgLy8gcmVzb2x2ZVN0b3JlZENsYXNzTmFtZSBpbiBzdXBwb3J0ZWQtc3RvcmVkLWNsYXNzZXMudHMuXG4gIHJlYWRvbmx5IHJlc29sdmVkU3RvcmVkQ2xhc3M6XG4gICAgfCB7IG5hbWU6IHN0cmluZzsgY29sbGFwc2VkOiBib29sZWFuIH1cbiAgICB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBDb2xsZWN0aW9uQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRUeXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWwsXG4gICAgcHVibGljIHJlYWRvbmx5IGlzU2luZ2xlSXRlbTogYm9vbGVhbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQmxvY2s6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmICh0aGlzLnN0cnVjdCkge1xuICAgICAgdGhpcy5zdHJ1Y3QuaXNTaW5nbGVJdGVtID0gdGhpcy5pc1NpbmdsZUl0ZW0gfHwgZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwibGlzdFwiO1xuICB9XG5cbiAgZ2V0IHN0cnVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5zdHJ1Y3Q7XG4gIH1cblxuICBnZXQgaXNDb21wbGV4KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gYG5ldyAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfU91dHB1dFJlZmVyZW5jZSh0aGlzLCBcIiR7bmFtZX1cIilgO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0b3JlZENsYXNzVHlwZX0odGhpcywgXCIke25hbWV9XCIsIGZhbHNlKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYG5ldyBjZGt0bi4ke3RoaXMucmVzb2x2ZWRTdG9yZWRDbGFzcyEubmFtZX0odGhpcywgXCIke25hbWV9XCIsIGZhbHNlKWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9TGlzdGA7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRTdG9yZWRDbGFzcygpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVN0b3JlZENsYXNzTmFtZShcbiAgICAgIHRoaXMuc3RvcmVkQ2xhc3NUeXBlLFxuICAgICAgdGhpcy5lbGVtZW50VHlwZS50eXBlTW9kZWxUeXBlLFxuICAgICk7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlRGVmaW5pdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb247XG4gICAgfSBlbHNlIGlmICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBcIkFycmF5PGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZT4gfCBjZGt0bi5JUmVzb2x2YWJsZVwiO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1bXSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUudHlwZU1vZGVsVHlwZSAhPT0gXCJzaW1wbGVcIikge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn1bXSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn1bXWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gYHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIGB0aGlzLmdldE51bWJlckxpc3RBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlcigke3RoaXMuZWxlbWVudFR5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IHRvSGNsVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlckhjbCgke3RoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IGhhc1JlZmVyZW5jZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzU2luZ2xlSXRlbSB8fCB0aGlzLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXggKHN0cnVjdCkgZWxlbWVudHMgZ2VuZXJhdGUgdGhlaXIgb3duIGNsYXNzIGluIHRoZSBwcm92aWRlciBvdXRwdXQsIHNvIHRoZXlcbiAgLy8gYXJlIGFsd2F5cyBmaW5lLiBPdGhlcndpc2UgYSBzdG9yZWQgY2xhc3MgaXMgb25seSBlbWl0dGVkIGlmIHJlc29sdmVkU3RvcmVkQ2xhc3NcbiAgLy8gZmluZHMgb25lIC0gc2VlIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIgYWJvdmUuIE5vdGU6IGhhc1JlZmVyZW5jZUNsYXNzICh3aGljaFxuICAvLyB0cmlnZ2VycyBhIHN0b3JlZF9jbGFzcyBnZXR0ZXIpIGlzIG9ubHkgZXZlciB0cnVlIGhlcmUgd2hlbiBpc1NpbmdsZUl0ZW0gb3IgaXNDb21wbGV4XG4gIC8vIGlzIHRydWUsIGFuZCBpc1NpbmdsZUl0ZW0gaXMgb25seSBzZXQgZm9yIHN0cnVjdC9ibG9jayBuZXN0aW5nICh3aGljaCBpcyBhbHNvXG4gIC8vIGlzQ29tcGxleCksIHNvIHRoaXMgY2hlY2sgb25seSBuZWVkcyB0byBndWFyZCB0aGUgbm9uLWNvbXBsZXgsIG5vbi1zaW5nbGUtaXRlbSBjYXNlLlxuICAvL1xuICAvLyBzdG9yZWRDbGFzc1R5cGUgaXMgaXRzZWxmIGJ1aWx0IHVwIHJlY3Vyc2l2ZWx5IChlbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUgaXNcbiAgLy8gY29tcG9zZWQgdGhlIHNhbWUgd2F5IGZvciBuZXN0ZWQgY29sbGVjdGlvbnMpLCBzbyBpdCBhbHJlYWR5IGZ1bGx5IGVuY29kZXMgdGhlXG4gIC8vIGVudGlyZSBuZXN0ZWQgY2hhaW4gaW4gb25lIHN0cmluZyAoZS5nLiBtYXAobWFwKGxpc3Qoc3RyaW5nKSkpIGNvbXBvc2VzIGFsbCB0aGUgd2F5XG4gIC8vIHVwIHRvIFwic3RyaW5nTGlzdE1hcE1hcFwiKS4gcmVzb2x2ZWRTdG9yZWRDbGFzcyBmaXJzdCBjaGVja3MgdGhpcyB0eXBlJ3Mgb3duIGNvbXBvc2VkXG4gIC8vIG5hbWUgKGUuZy4gXCJTdHJpbmdMaXN0TWFwTWFwXCIpIGFnYWluc3QgdGhlIGZpeGVkIHNldCBvZiBoYW5kLXdyaXR0ZW4gY29yZSBjbGFzc2VzOyBpZlxuICAvLyB0aGF0IG5hbWUgZG9lc24ndCBleGlzdCwgaXQgZmFsbHMgYmFjayB0byB0aGUgbmVhcmVzdCB0eXBlZCBcIkFueVwiLXdyYXBwZXIgdGhhdCBzdGlsbFxuICAvLyBlbmNvZGVzIHRoaXMgdHlwZSdzIG93biBsYXllciBhbmQgaXRzIGVsZW1lbnQncyBsYXllciAoZS5nLiBcIkFueU1hcE1hcFwiKSwgY29sbGFwc2luZ1xuICAvLyBvbmx5IHRoZSB1bnN1cHBvcnRlZCBpbm5lciBzaGFwZSB3aGlsZSBwcmVzZXJ2aW5nIHR5cGVkIG5hdmlnYXRpb24gZm9yIHRoZSBvdXRlclxuICAvLyBsYXllcnM7IG9ubHkgaWYgbmVpdGhlciBleGlzdHMgZG9lcyBpdCBmYWxsIHRocm91Z2ggdG8gdGhlIHBsYWluLCB1bnR5cGVkIGdldHRlciAoc2VlXG4gIC8vIEF0dHJpYnV0ZU1vZGVsLmdldHRlclR5cGUpLiBJdCBtdXN0IE5PVCBhbHNvIE9SIGluXG4gIC8vIGVsZW1lbnRUeXBlLmlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSwgc2luY2UgYW4gaW5uZXIgZWxlbWVudCdzIHVuLWNvbXBvc2VkIG5hbWUgKGUuZy5cbiAgLy8gXCJTdHJpbmdMaXN0XCIgZm9yIGEgcGxhaW4gbGlzdChzdHJpbmcpIG5lc3RlZCBpbnNpZGUgYSBtYXApIGlzIG5ldmVyIHNlcGFyYXRlbHlcbiAgLy8gaW5zdGFudGlhdGVkIGFuZCBpcyBpcnJlbGV2YW50IG9uIGl0cyBvd247IE9SaW5nIGl0IGluIHdvdWxkIHByb2R1Y2UgZmFsc2UgcG9zaXRpdmVzXG4gIC8vIHRoYXQgcmVncmVzcyBzdXBwb3J0ZWQgbmVzdGluZ3Mgc3VjaCBhcyBtYXAobGlzdChzdHJpbmcpKSA9PiBjZGt0bi5TdHJpbmdMaXN0TWFwLlxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFN0b3JlZENsYXNzID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTaW5nbGVJdGVtOiBib29sZWFuLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCbG9jazogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKHRoaXMuc3RydWN0KSB7XG4gICAgICB0aGlzLnN0cnVjdC5pc1NpbmdsZUl0ZW0gPSB0aGlzLmlzU2luZ2xlSXRlbSB8fCBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzZXRcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc3RydWN0O1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1PdXRwdXRSZWZlcmVuY2UodGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICAgIHJldHVybiBgbmV3ICR7dGhpcy5zdG9yZWRDbGFzc1R5cGV9KHRoaXMsIFwiJHtuYW1lfVwiLCB0cnVlKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYG5ldyBjZGt0bi4ke3RoaXMucmVzb2x2ZWRTdG9yZWRDbGFzcyEubmFtZX0odGhpcywgXCIke25hbWV9XCIsIHRydWUpYDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1MaXN0YDtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFN0b3JlZENsYXNzKCkge1xuICAgIHJldHVybiByZXNvbHZlU3RvcmVkQ2xhc3NOYW1lKFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgICB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIFwiQXJyYXk8Ym9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlPiB8IGNka3RuLklSZXNvbHZhYmxlXCI7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfVtdIHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50VHlwZS50eXBlTW9kZWxUeXBlICE9PSBcInNpbXBsZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufVtdIHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufVtdYDtcbiAgICB9XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlKSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIHJldHVybiBgY2RrdG4uRm4udG9saXN0KHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnJHtuYW1lfScpKWA7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBgY2RrdG4uVG9rZW4uYXNOdW1iZXJMaXN0KGNka3RuLkZuLnRvbGlzdCh0aGlzLmdldE51bWJlckxpc3RBdHRyaWJ1dGUoJyR7bmFtZX0nKSkpYDtcbiAgICB9XG5cbiAgICAvLyBUb2tlbi5hc0FueSBpcyByZXF1aXJlZCBiZWNhdXNlIHRvbGlzdCByZXR1cm5zIGFuIEFycmF5IGVuY29kZWQgdG9rZW4gd2hpY2ggdGhlIGxpc3RNYXBwZXJcbiAgICAvLyB3b3VsZCB0cnkgdG8gbWFwIG92ZXIgd2hlbiB0aGlzIGlzIHBhc3NlZCB0byBhbm90aGVyIHJlc291cmNlLiBXaXRoIFRva2VuLmFzQW55KCkgaXQgaXMgbGVmdFxuICAgIC8vIGFzIGlzIGJ5IHRoZSBsaXN0TWFwcGVyIGFuZCBpcyBsYXRlciBwcm9wZXJseSByZXNvbHZlZCB0byBhIHJlZmVyZW5jZVxuICAgIC8vICh0aGlzIG9ubHkgd29ya3MgaW4gVHlwZVNjcmlwdCBjdXJyZW50bHksIHNhbWUgYXMgZm9yIHJlZmVyZW5jaW5nIGxpc3RzXG4gICAgLy8gW3NlZSBcImludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoLi4uKVwiIGZ1cnRoZXIgYmVsb3ddKVxuICAgIHJldHVybiBgY2RrdG4uVG9rZW4uYXNBbnkoY2RrdG4uRm4udG9saXN0KHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpKSlgO1xuICB9XG5cbiAgZ2V0IHRvVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS50b1RlcnJhZm9ybUZ1bmN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYGNka3RuLmxpc3RNYXBwZXIoJHt0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb259LCAke3RoaXMuaXNCbG9ja30pYDtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnRvSGNsVGVycmFmb3JtRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlckhjbCgke3RoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IGhhc1JlZmVyZW5jZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzU2luZ2xlSXRlbSB8fCB0aGlzLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlZSBjb21tZW50IG9uIExpc3RBdHRyaWJ1dGVUeXBlTW9kZWwuaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlIGFib3ZlIC0gc2FtZVxuICAvLyByZWFzb25pbmcgYXBwbGllcyBoZXJlLlxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFN0b3JlZENsYXNzID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hcEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCkge31cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJtYXBcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc3RydWN0O1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0b3JlZENsYXNzVHlwZX0odGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGBuZXcgY2RrdG4uJHt0aGlzLnJlc29sdmVkU3RvcmVkQ2xhc3MhLm5hbWV9KHRoaXMsIFwiJHtuYW1lfVwiKWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9TWFwYDtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFN0b3JlZENsYXNzKCkge1xuICAgIHJldHVybiByZXNvbHZlU3RvcmVkQ2xhc3NOYW1lKFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgICB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIC8vIG1hcCBvZiBib29sZWFucyBoYXMgdG9rZW4gc3VwcG9ydCwgYnV0IGJvb2xlYW5zIGRvbid0XG4gICAgaWYgKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICgke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfSB8IGNka3RuLklSZXNvbHZhYmxlKSB9YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX0gfSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUudHlwZU1vZGVsVHlwZSAhPT0gXCJzaW1wbGVcIikge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufSB9IHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX0gfWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29tcGxleCAmJiB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUgIT09IFwic2ltcGxlXCIpIHtcbiAgICAgIHJldHVybiBgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCcke25hbWV9JylgO1xuICAgIH1cblxuICAgIHJldHVybiBgdGhpcy5nZXQke3VwcGVyY2FzZUZpcnN0KFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgKX1BdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLmhhc2hNYXBwZXIoJHt0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb259KWA7XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLmhhc2hNYXBwZXJIY2woJHt0aGlzLmVsZW1lbnRUeXBlLnRvSGNsVGVycmFmb3JtRnVuY3Rpb259KWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wbGV4O1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJhbnlcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VlIGNvbW1lbnQgb24gTGlzdEF0dHJpYnV0ZVR5cGVNb2RlbC5pc1N0b3JlZENsYXNzVW5hdmFpbGFibGUgYWJvdmUgLSBzYW1lXG4gIC8vIHJlYXNvbmluZyBhcHBsaWVzIGhlcmUgKE1hcEF0dHJpYnV0ZVR5cGVNb2RlbC5oYXNSZWZlcmVuY2VDbGFzcyBpcyBqdXN0IGlzQ29tcGxleCkuXG4gIGdldCBpc1N0b3JlZENsYXNzVW5hdmFpbGFibGUoKSB7XG4gICAgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc29sdmVkU3RvcmVkQ2xhc3MgPT09IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXR5cGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvYXR0cmlidXRlLXR5cGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBLHNEQXdCQztBQTlDRCx3Q0FBOEQ7QUFDOUQseUVBQW9FO0FBaUJwRSx3RkFBd0Y7QUFDeEYsdUZBQXVGO0FBQ3ZGLDRFQUE0RTtBQUM1RSwwRkFBMEY7QUFDMUYsU0FBZ0IscUJBQXFCLENBQUMsS0FBeUI7SUFDN0QsUUFBUSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxRQUFRLHFCQUFxQixDQUNqQyxLQUFzQyxDQUFDLFdBQVcsQ0FDcEQsR0FBRyxDQUFDO1FBQ1AsS0FBSyxLQUFLO1lBQ1IsT0FBTyxPQUFPLHFCQUFxQixDQUNoQyxLQUFzQyxDQUFDLFdBQVcsQ0FDcEQsR0FBRyxDQUFDO1FBQ1AsS0FBSyxLQUFLO1lBQ1IsT0FBTyxPQUFPLHFCQUFxQixDQUNoQyxLQUFzQyxDQUFDLFdBQVcsQ0FDcEQsR0FBRyxDQUFDO1FBQ1AsS0FBSyxRQUFRO1lBQ1gsT0FBTyxRQUFRLENBQUM7UUFDbEI7WUFDRSxtRkFBbUY7WUFDbkYsb0ZBQW9GO1lBQ3BGLHFDQUFxQztZQUNyQyxPQUFPLEtBQUssQ0FBQyxlQUFlLEtBQUssU0FBUztnQkFDeEMsQ0FBQyxDQUFDLE1BQU07Z0JBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFhLHlCQUF5QjtJQUNwQyxnQkFBZSxDQUFDO0lBRWhCLElBQUksYUFBYTtRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENB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O0lBQ3JFLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLHVCQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixHQUFHLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLHNGQUFzRjtJQUN0RixJQUFJLHdCQUF3QjtRQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBNUZELHNEQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBTdHJ1Y3QgfSBmcm9tIFwiLi9zdHJ1Y3RcIjtcbmltcG9ydCB7IHVwcGVyY2FzZUZpcnN0LCBkb3duY2FzZUZpcnN0IH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxcIjtcbmltcG9ydCB7IHJlc29sdmVTdG9yZWRDbGFzc05hbWUgfSBmcm9tIFwiLi9zdXBwb3J0ZWQtc3RvcmVkLWNsYXNzZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICByZWFkb25seSBzdHJ1Y3Q/OiBTdHJ1Y3Q7IC8vIGNvbXBsZXggb2JqZWN0IHR5cGUgY29udGFpbmVkIHdpdGhpbiB0aGUgdHlwZVxuICByZWFkb25seSBpc0NvbXBsZXg6IGJvb2xlYW47IC8vIGJhc2ljYWxseSB0aGUgc2FtZSBhcyBoYXZpbmcgYSBzdHJ1Y3RcbiAgZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihuYW1lOiBzdHJpbmcpOiBzdHJpbmc7IC8vIGluaXRpYWxpemVyIGZvciBrZWVwaW5nIGNsYXNzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHJlZmVyZW5jZSBhY2Nlc3NcbiAgcmVhZG9ubHkgc3RvcmVkQ2xhc3NUeXBlOiBzdHJpbmc7IC8vIHVzZWQgbWFpbmx5IGJ5IGNvbGxlY3Rpb24gdHlwZXMgdG8gZ2VuZXJhdGUgdGhlaXIgc3RvcmVkIGNsYXNzIGluaXRpYWxpemVyXG4gIHJlYWRvbmx5IGlucHV0VHlwZURlZmluaXRpb246IHN0cmluZzsgLy8gdGhpcyBpcyB0aGUgdHlwZSB1c2VkIGZvciBpbnB1dHRpbmcgdmFsdWVzXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZyk6IHN0cmluZzsgLy8gdGhpcyBpcyBmb3IgZ2V0dGluZyByZWZlcmVuY2UgZm9yIHNpbXBsZSB0eXBlc1xuICByZWFkb25seSB0b1RlcnJhZm9ybUZ1bmN0aW9uOiBzdHJpbmc7IC8vIHRoaXMgaXMgZm9yIGNvbnZlcnRpbmcgaW5wdXQgdmFsdWVzIHRvIFRlcnJhZm9ybSBzeW50YXhcbiAgcmVhZG9ubHkgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbjogc3RyaW5nOyAvLyB0aGlzIGlzIGZvciBjb252ZXJ0aW5nIGlucHV0IHZhbHVlcyB0byBUZXJyYWZvcm0gc3ludGF4IGluIEhDTFxuICByZWFkb25seSB0eXBlTW9kZWxUeXBlOiBzdHJpbmc7IC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gdXNlIGluc3RhbmNlb2ZcbiAgcmVhZG9ubHkgaGFzUmVmZXJlbmNlQ2xhc3M6IGJvb2xlYW47IC8vIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3RvcmVkX2NsYXNzIGdldHRlciBzaG91bGQgYmUgdXNlZFxuICByZWFkb25seSBpc1Rva2VuaXphYmxlOiBib29sZWFuOyAvLyBjYW4gdGhlIHR5cGUgYmUgcmVwcmVzZW50ZWQgYnkgYSB0b2tlbiB0eXBlXG4gIHJlYWRvbmx5IGlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZTogYm9vbGVhbjsgLy8gdHJ1ZSB3aGVuIG5vIFwiY2RrdG4uPE5hbWU+XCIgc3RvcmVkIGNsYXNzIChub3QgZXZlbiBhIGNvbGxhcHNlZCBuZWFyZXN0LUFueSB3cmFwcGVyKSBpcyBhdmFpbGFibGUgZm9yIHRoaXMgdHlwZVxufVxuXG4vLyBEZXNjcmliZXMgdGhlIFRlcnJhZm9ybSB0eXBlIG9mIGFuIGF0dHJpYnV0ZSBhcyBpdHMgYGxpc3QoLi4uKWAvYHNldCguLi4pYC9gbWFwKC4uLilgXG4vLyBjb21wb3NlZCBub3RhdGlvbiAobWF0Y2hpbmcgaG93IFRlcnJhZm9ybSBpdHNlbGYgZGVzY3JpYmVzIG5lc3RlZCBjb2xsZWN0aW9uIHR5cGVzKSxcbi8vIGZvciB1c2UgaW4gZ2VuZXJhdGVkIEpTRG9jLiBVc2VkIG9ubHkgZm9yIGNvbGxhcHNlZC9mYWxsYmFjayBnZXR0ZXJzIChzZWVcbi8vIEF0dHJpYnV0ZXNFbWl0dGVyKSBzbyBpdCBuZXZlciBuZWVkcyB0byBiZSBleGhhdXN0aXZlL3BlcmZlY3RseSBzdGFibGUgZm9yIGV2ZXJ5IHNoYXBlLlxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlVGVycmFmb3JtVHlwZShtb2RlbDogQXR0cmlidXRlVHlwZU1vZGVsKTogc3RyaW5nIHtcbiAgc3dpdGNoIChtb2RlbC50eXBlTW9kZWxUeXBlKSB7XG4gICAgY2FzZSBcImxpc3RcIjpcbiAgICAgIHJldHVybiBgbGlzdCgke2Rlc2NyaWJlVGVycmFmb3JtVHlwZShcbiAgICAgICAgKG1vZGVsIGFzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwpLmVsZW1lbnRUeXBlLFxuICAgICAgKX0pYDtcbiAgICBjYXNlIFwic2V0XCI6XG4gICAgICByZXR1cm4gYHNldCgke2Rlc2NyaWJlVGVycmFmb3JtVHlwZShcbiAgICAgICAgKG1vZGVsIGFzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwpLmVsZW1lbnRUeXBlLFxuICAgICAgKX0pYDtcbiAgICBjYXNlIFwibWFwXCI6XG4gICAgICByZXR1cm4gYG1hcCgke2Rlc2NyaWJlVGVycmFmb3JtVHlwZShcbiAgICAgICAgKG1vZGVsIGFzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwpLmVsZW1lbnRUeXBlLFxuICAgICAgKX0pYDtcbiAgICBjYXNlIFwic3RydWN0XCI6XG4gICAgICByZXR1cm4gXCJvYmplY3RcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gQ292ZXJzIGJvdGggU2ltcGxlQXR0cmlidXRlVHlwZU1vZGVsIChzdG9yZWRDbGFzc1R5cGUgaXMgdGhlIFRlcnJhZm9ybSBwcmltaXRpdmVcbiAgICAgIC8vIG5hbWUsIGUuZy4gXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiYW55XCIpIGFuZCBTa2lwcGVkQXR0cmlidXRlVHlwZU1vZGVsXG4gICAgICAvLyAoc3RvcmVkQ2xhc3NUeXBlIGlzIGFsd2F5cyBcImFueVwiKS5cbiAgICAgIHJldHVybiBtb2RlbC5zdG9yZWRDbGFzc1R5cGUgPT09IFwiYm9vbGVhblwiXG4gICAgICAgID8gXCJib29sXCJcbiAgICAgICAgOiBtb2RlbC5zdG9yZWRDbGFzc1R5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNraXBwZWRBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwic2ltcGxlXCI7XG4gIH1cblxuICBnZXQgc3RydWN0KCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaXNDb21wbGV4KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIoX25hbWU6IHN0cmluZykge1xuICAgIC8vIG5vdCB1c2VkXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiBcImFueVwiO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIFwiYW55XCI7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uYW55VG9UZXJyYWZvcm1gO1xuICB9XG5cbiAgZ2V0IHRvSGNsVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGBjZGt0bi5hbnlUb0hjbFRlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0eXBlOiBzdHJpbmcpIHt9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwic2ltcGxlXCI7XG4gIH1cblxuICBnZXQgc3RydWN0KCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaXNDb21wbGV4KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIoX25hbWU6IHN0cmluZykge1xuICAgIC8vIG5vdCB1c2VkXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlRGVmaW5pdGlvbigpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIFwiYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGB0aGlzLmdldCR7dXBwZXJjYXNlRmlyc3QodGhpcy50eXBlKX1BdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLiR7dGhpcy50eXBlfVRvVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uJHt0aGlzLnR5cGV9VG9IY2xUZXJyYWZvcm1gO1xuICB9XG5cbiAgZ2V0IGhhc1JlZmVyZW5jZUNsYXNzKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IGlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cnVjdEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzdHJ1Y3Q6IFN0cnVjdCkge31cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzdHJ1Y3RcIjtcbiAgfVxuXG4gIGdldCBpc0NvbXBsZXgoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBgbmV3ICR7dGhpcy5zdHJ1Y3Qub3V0cHV0UmVmZXJlbmNlTmFtZX0odGhpcywgXCIke25hbWV9XCIpYDtcbiAgfVxuXG4gIGdldCBzdG9yZWRDbGFzc1R5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RydWN0Lm5hbWU7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlRGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJ1Y3QubmFtZTtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIC8vIFRoaXMgc2hvdWxuJ3QgYWN0dWFsbHkgYmUgY2FsbGVkXG4gICAgcmV0dXJuIGB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYCR7ZG93bmNhc2VGaXJzdCh0aGlzLnN0cnVjdC5uYW1lKX1Ub1RlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYCR7ZG93bmNhc2VGaXJzdCh0aGlzLnN0cnVjdC5uYW1lKX1Ub0hjbFRlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgaXNUb2tlbml6YWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwgZXh0ZW5kcyBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBlbGVtZW50VHlwZTogQXR0cmlidXRlVHlwZU1vZGVsO1xuICAvLyBSZXNvbHZlcyB0aGUgXCJjZGt0bi48bmFtZT5cIiBzdG9yZWQgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIHRoaXMgKG5vbi1jb21wbGV4KVxuICAvLyBjb2xsZWN0aW9uIHR5cGUsIGFuZCB3aGV0aGVyIHRoYXQgcmVzb2x1dGlvbiBjb2xsYXBzZWQgYSBkZWVwZXIsIHVuc3VwcG9ydGVkIG5lc3RpbmdcbiAgLy8gaW50byB0aGUgbmVhcmVzdCB0eXBlZCBcIkFueVwiLXdyYXBwZXIuIHVuZGVmaW5lZCBvbmx5IGRlZmVuc2l2ZWx5IC0gc2VlXG4gIC8vIHJlc29sdmVTdG9yZWRDbGFzc05hbWUgaW4gc3VwcG9ydGVkLXN0b3JlZC1jbGFzc2VzLnRzLlxuICByZWFkb25seSByZXNvbHZlZFN0b3JlZENsYXNzOlxuICAgIHsgbmFtZTogc3RyaW5nOyBjb2xsYXBzZWQ6IGJvb2xlYW4gfSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBDb2xsZWN0aW9uQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRUeXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWwsXG4gICAgcHVibGljIHJlYWRvbmx5IGlzU2luZ2xlSXRlbTogYm9vbGVhbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQmxvY2s6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmICh0aGlzLnN0cnVjdCkge1xuICAgICAgdGhpcy5zdHJ1Y3QuaXNTaW5nbGVJdGVtID0gdGhpcy5pc1NpbmdsZUl0ZW0gfHwgZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwibGlzdFwiO1xuICB9XG5cbiAgZ2V0IHN0cnVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5zdHJ1Y3Q7XG4gIH1cblxuICBnZXQgaXNDb21wbGV4KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gYG5ldyAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfU91dHB1dFJlZmVyZW5jZSh0aGlzLCBcIiR7bmFtZX1cIilgO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0b3JlZENsYXNzVHlwZX0odGhpcywgXCIke25hbWV9XCIsIGZhbHNlKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYG5ldyBjZGt0bi4ke3RoaXMucmVzb2x2ZWRTdG9yZWRDbGFzcyEubmFtZX0odGhpcywgXCIke25hbWV9XCIsIGZhbHNlKWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9TGlzdGA7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRTdG9yZWRDbGFzcygpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVN0b3JlZENsYXNzTmFtZShcbiAgICAgIHRoaXMuc3RvcmVkQ2xhc3NUeXBlLFxuICAgICAgdGhpcy5lbGVtZW50VHlwZS50eXBlTW9kZWxUeXBlLFxuICAgICk7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlRGVmaW5pdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb247XG4gICAgfSBlbHNlIGlmICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBcIkFycmF5PGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZT4gfCBjZGt0bi5JUmVzb2x2YWJsZVwiO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1bXSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUudHlwZU1vZGVsVHlwZSAhPT0gXCJzaW1wbGVcIikge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn1bXSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn1bXWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gYHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIGB0aGlzLmdldE51bWJlckxpc3RBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlcigke3RoaXMuZWxlbWVudFR5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IHRvSGNsVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlckhjbCgke3RoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IGhhc1JlZmVyZW5jZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzU2luZ2xlSXRlbSB8fCB0aGlzLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXggKHN0cnVjdCkgZWxlbWVudHMgZ2VuZXJhdGUgdGhlaXIgb3duIGNsYXNzIGluIHRoZSBwcm92aWRlciBvdXRwdXQsIHNvIHRoZXlcbiAgLy8gYXJlIGFsd2F5cyBmaW5lLiBPdGhlcndpc2UgYSBzdG9yZWQgY2xhc3MgaXMgb25seSBlbWl0dGVkIGlmIHJlc29sdmVkU3RvcmVkQ2xhc3NcbiAgLy8gZmluZHMgb25lIC0gc2VlIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIgYWJvdmUuIE5vdGU6IGhhc1JlZmVyZW5jZUNsYXNzICh3aGljaFxuICAvLyB0cmlnZ2VycyBhIHN0b3JlZF9jbGFzcyBnZXR0ZXIpIGlzIG9ubHkgZXZlciB0cnVlIGhlcmUgd2hlbiBpc1NpbmdsZUl0ZW0gb3IgaXNDb21wbGV4XG4gIC8vIGlzIHRydWUsIGFuZCBpc1NpbmdsZUl0ZW0gaXMgb25seSBzZXQgZm9yIHN0cnVjdC9ibG9jayBuZXN0aW5nICh3aGljaCBpcyBhbHNvXG4gIC8vIGlzQ29tcGxleCksIHNvIHRoaXMgY2hlY2sgb25seSBuZWVkcyB0byBndWFyZCB0aGUgbm9uLWNvbXBsZXgsIG5vbi1zaW5nbGUtaXRlbSBjYXNlLlxuICAvL1xuICAvLyBzdG9yZWRDbGFzc1R5cGUgaXMgaXRzZWxmIGJ1aWx0IHVwIHJlY3Vyc2l2ZWx5IChlbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUgaXNcbiAgLy8gY29tcG9zZWQgdGhlIHNhbWUgd2F5IGZvciBuZXN0ZWQgY29sbGVjdGlvbnMpLCBzbyBpdCBhbHJlYWR5IGZ1bGx5IGVuY29kZXMgdGhlXG4gIC8vIGVudGlyZSBuZXN0ZWQgY2hhaW4gaW4gb25lIHN0cmluZyAoZS5nLiBtYXAobWFwKGxpc3Qoc3RyaW5nKSkpIGNvbXBvc2VzIGFsbCB0aGUgd2F5XG4gIC8vIHVwIHRvIFwic3RyaW5nTGlzdE1hcE1hcFwiKS4gcmVzb2x2ZWRTdG9yZWRDbGFzcyBmaXJzdCBjaGVja3MgdGhpcyB0eXBlJ3Mgb3duIGNvbXBvc2VkXG4gIC8vIG5hbWUgKGUuZy4gXCJTdHJpbmdMaXN0TWFwTWFwXCIpIGFnYWluc3QgdGhlIGZpeGVkIHNldCBvZiBoYW5kLXdyaXR0ZW4gY29yZSBjbGFzc2VzOyBpZlxuICAvLyB0aGF0IG5hbWUgZG9lc24ndCBleGlzdCwgaXQgZmFsbHMgYmFjayB0byB0aGUgbmVhcmVzdCB0eXBlZCBcIkFueVwiLXdyYXBwZXIgdGhhdCBzdGlsbFxuICAvLyBlbmNvZGVzIHRoaXMgdHlwZSdzIG93biBsYXllciBhbmQgaXRzIGVsZW1lbnQncyBsYXllciAoZS5nLiBcIkFueU1hcE1hcFwiKSwgY29sbGFwc2luZ1xuICAvLyBvbmx5IHRoZSB1bnN1cHBvcnRlZCBpbm5lciBzaGFwZSB3aGlsZSBwcmVzZXJ2aW5nIHR5cGVkIG5hdmlnYXRpb24gZm9yIHRoZSBvdXRlclxuICAvLyBsYXllcnM7IG9ubHkgaWYgbmVpdGhlciBleGlzdHMgZG9lcyBpdCBmYWxsIHRocm91Z2ggdG8gdGhlIHBsYWluLCB1bnR5cGVkIGdldHRlciAoc2VlXG4gIC8vIEF0dHJpYnV0ZU1vZGVsLmdldHRlclR5cGUpLiBJdCBtdXN0IE5PVCBhbHNvIE9SIGluXG4gIC8vIGVsZW1lbnRUeXBlLmlzU3RvcmVkQ2xhc3NVbmF2YWlsYWJsZSwgc2luY2UgYW4gaW5uZXIgZWxlbWVudCdzIHVuLWNvbXBvc2VkIG5hbWUgKGUuZy5cbiAgLy8gXCJTdHJpbmdMaXN0XCIgZm9yIGEgcGxhaW4gbGlzdChzdHJpbmcpIG5lc3RlZCBpbnNpZGUgYSBtYXApIGlzIG5ldmVyIHNlcGFyYXRlbHlcbiAgLy8gaW5zdGFudGlhdGVkIGFuZCBpcyBpcnJlbGV2YW50IG9uIGl0cyBvd247IE9SaW5nIGl0IGluIHdvdWxkIHByb2R1Y2UgZmFsc2UgcG9zaXRpdmVzXG4gIC8vIHRoYXQgcmVncmVzcyBzdXBwb3J0ZWQgbmVzdGluZ3Mgc3VjaCBhcyBtYXAobGlzdChzdHJpbmcpKSA9PiBjZGt0bi5TdHJpbmdMaXN0TWFwLlxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFN0b3JlZENsYXNzID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTaW5nbGVJdGVtOiBib29sZWFuLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCbG9jazogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKHRoaXMuc3RydWN0KSB7XG4gICAgICB0aGlzLnN0cnVjdC5pc1NpbmdsZUl0ZW0gPSB0aGlzLmlzU2luZ2xlSXRlbSB8fCBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzZXRcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc3RydWN0O1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1PdXRwdXRSZWZlcmVuY2UodGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICAgIHJldHVybiBgbmV3ICR7dGhpcy5zdG9yZWRDbGFzc1R5cGV9KHRoaXMsIFwiJHtuYW1lfVwiLCB0cnVlKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYG5ldyBjZGt0bi4ke3RoaXMucmVzb2x2ZWRTdG9yZWRDbGFzcyEubmFtZX0odGhpcywgXCIke25hbWV9XCIsIHRydWUpYDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1MaXN0YDtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFN0b3JlZENsYXNzKCkge1xuICAgIHJldHVybiByZXNvbHZlU3RvcmVkQ2xhc3NOYW1lKFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgICB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIFwiQXJyYXk8Ym9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlPiB8IGNka3RuLklSZXNvbHZhYmxlXCI7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfVtdIHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50VHlwZS50eXBlTW9kZWxUeXBlICE9PSBcInNpbXBsZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufVtdIHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufVtdYDtcbiAgICB9XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlKSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIHJldHVybiBgY2RrdG4uRm4udG9saXN0KHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnJHtuYW1lfScpKWA7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBgY2RrdG4uVG9rZW4uYXNOdW1iZXJMaXN0KGNka3RuLkZuLnRvbGlzdCh0aGlzLmdldE51bWJlckxpc3RBdHRyaWJ1dGUoJyR7bmFtZX0nKSkpYDtcbiAgICB9XG5cbiAgICAvLyBUb2tlbi5hc0FueSBpcyByZXF1aXJlZCBiZWNhdXNlIHRvbGlzdCByZXR1cm5zIGFuIEFycmF5IGVuY29kZWQgdG9rZW4gd2hpY2ggdGhlIGxpc3RNYXBwZXJcbiAgICAvLyB3b3VsZCB0cnkgdG8gbWFwIG92ZXIgd2hlbiB0aGlzIGlzIHBhc3NlZCB0byBhbm90aGVyIHJlc291cmNlLiBXaXRoIFRva2VuLmFzQW55KCkgaXQgaXMgbGVmdFxuICAgIC8vIGFzIGlzIGJ5IHRoZSBsaXN0TWFwcGVyIGFuZCBpcyBsYXRlciBwcm9wZXJseSByZXNvbHZlZCB0byBhIHJlZmVyZW5jZVxuICAgIC8vICh0aGlzIG9ubHkgd29ya3MgaW4gVHlwZVNjcmlwdCBjdXJyZW50bHksIHNhbWUgYXMgZm9yIHJlZmVyZW5jaW5nIGxpc3RzXG4gICAgLy8gW3NlZSBcImludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoLi4uKVwiIGZ1cnRoZXIgYmVsb3ddKVxuICAgIHJldHVybiBgY2RrdG4uVG9rZW4uYXNBbnkoY2RrdG4uRm4udG9saXN0KHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpKSlgO1xuICB9XG5cbiAgZ2V0IHRvVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS50b1RlcnJhZm9ybUZ1bmN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYGNka3RuLmxpc3RNYXBwZXIoJHt0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb259LCAke3RoaXMuaXNCbG9ja30pYDtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnRvSGNsVGVycmFmb3JtRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlckhjbCgke3RoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICB9XG5cbiAgZ2V0IGhhc1JlZmVyZW5jZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzU2luZ2xlSXRlbSB8fCB0aGlzLmlzQ29tcGxleDtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlZSBjb21tZW50IG9uIExpc3RBdHRyaWJ1dGVUeXBlTW9kZWwuaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlIGFib3ZlIC0gc2FtZVxuICAvLyByZWFzb25pbmcgYXBwbGllcyBoZXJlLlxuICBnZXQgaXNTdG9yZWRDbGFzc1VuYXZhaWxhYmxlKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFN0b3JlZENsYXNzID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hcEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCkge31cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJtYXBcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc3RydWN0O1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0b3JlZENsYXNzVHlwZX0odGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGBuZXcgY2RrdG4uJHt0aGlzLnJlc29sdmVkU3RvcmVkQ2xhc3MhLm5hbWV9KHRoaXMsIFwiJHtuYW1lfVwiKWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9TWFwYDtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFN0b3JlZENsYXNzKCkge1xuICAgIHJldHVybiByZXNvbHZlU3RvcmVkQ2xhc3NOYW1lKFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgICB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIC8vIG1hcCBvZiBib29sZWFucyBoYXMgdG9rZW4gc3VwcG9ydCwgYnV0IGJvb2xlYW5zIGRvbid0XG4gICAgaWYgKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICgke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfSB8IGNka3RuLklSZXNvbHZhYmxlKSB9YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX0gfSB8IGNka3RuLklSZXNvbHZhYmxlYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudFR5cGUudHlwZU1vZGVsVHlwZSAhPT0gXCJzaW1wbGVcIikge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICR7dGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufSB9IHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX0gfWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29tcGxleCAmJiB0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUgIT09IFwic2ltcGxlXCIpIHtcbiAgICAgIHJldHVybiBgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCcke25hbWV9JylgO1xuICAgIH1cblxuICAgIHJldHVybiBgdGhpcy5nZXQke3VwcGVyY2FzZUZpcnN0KFxuICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgKX1BdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLmhhc2hNYXBwZXIoJHt0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb259KWA7XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLmhhc2hNYXBwZXJIY2woJHt0aGlzLmVsZW1lbnRUeXBlLnRvSGNsVGVycmFmb3JtRnVuY3Rpb259KWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wbGV4O1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJhbnlcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VlIGNvbW1lbnQgb24gTGlzdEF0dHJpYnV0ZVR5cGVNb2RlbC5pc1N0b3JlZENsYXNzVW5hdmFpbGFibGUgYWJvdmUgLSBzYW1lXG4gIC8vIHJlYXNvbmluZyBhcHBsaWVzIGhlcmUgKE1hcEF0dHJpYnV0ZVR5cGVNb2RlbC5oYXNSZWZlcmVuY2VDbGFzcyBpcyBqdXN0IGlzQ29tcGxleCkuXG4gIGdldCBpc1N0b3JlZENsYXNzVW5hdmFpbGFibGUoKSB7XG4gICAgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc29sdmVkU3RvcmVkQ2xhc3MgPT09IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|