@cdktn/provider-schema 0.25.0-pre.3 → 0.25.0-pre.30
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/build/__tests__/cache.test.js +18 -8
- package/build/__tests__/provider-schema.test.js +59 -8
- package/build/__tests__/provider-schema.unit.test.js +242 -1
- package/build/__tests__/read-emission-gap-warning.unit.test.js +18 -8
- package/build/cache.js +19 -10
- package/build/emission-check.js +22 -12
- package/build/provider-schema.d.ts +16 -1
- package/build/provider-schema.d.ts.map +1 -1
- package/build/provider-schema.js +210 -16
- package/build/read.js +3 -3
- package/build/util.d.ts +0 -3
- package/build/util.d.ts.map +1 -1
- package/build/util.js +20 -10
- package/package.json +5 -4
- package/src/__tests__/__snapshots__/provider-schema.test.ts.snap +69 -0
- package/src/__tests__/fixtures/local-json-module-provider-aliases/module.tf.json +21 -0
- package/src/__tests__/fixtures/local-mixed-module-provider-aliases/aliases.tf.json +10 -0
- package/src/__tests__/fixtures/local-mixed-module-provider-aliases/module.tf +22 -0
- package/src/__tests__/fixtures/local-module-provider-aliases/module.tf +24 -0
|
@@ -17,13 +17,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
17
17
|
}) : function(o, v) {
|
|
18
18
|
o["default"] = v;
|
|
19
19
|
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || function (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
27
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
38
|
const fs = __importStar(require("fs-extra"));
|
|
29
39
|
const os = __importStar(require("os"));
|
|
@@ -74,4 +84,4 @@ describe("cachedAccess", () => {
|
|
|
74
84
|
expect(files[0]).not.toContain("undefined");
|
|
75
85
|
});
|
|
76
86
|
});
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY2FjaGUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkMsNkNBQStCO0FBQy9CLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0Isb0NBQXdDO0FBRXhDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLElBQUksUUFBZ0IsQ0FBQztJQUVyQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsUUFBUSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBQSxvQkFBWSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakUsTUFBTSxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBUyxDQUFDLENBQUM7UUFFakUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMs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QUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjYWNoZWRBY2Nlc3MgfSBmcm9tIFwiLi4vY2FjaGVcIjtcblxuZGVzY3JpYmUoXCJjYWNoZWRBY2Nlc3NcIiwgKCkgPT4ge1xuICBsZXQgY2FjaGVEaXI6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjYWNoZURpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJwcm92aWRlci1zY2hlbWEtY2FjaGUtXCIpKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBmcy5yZW1vdmVTeW5jKGNhY2hlRGlyKTtcbiAgfSk7XG5cbiAgaXQoXCJ3cml0ZXMgdG8gYSBzdWZmaXgtcXVhbGlmaWVkIGNhY2hlIGZpbGUgd2hlbiBhIGtleVN1ZmZpeCBpcyBnaXZlblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvZHVjZXIgPSBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoeyBoZWxsbzogXCJ3b3JsZFwiIH0pO1xuICAgIGNvbnN0IGFjY2VzcyA9IGNhY2hlZEFjY2Vzcyhwcm9kdWNlciwgY2FjaGVEaXIsIFwidGVycmFmb3JtLTEuN1wiKTtcblxuICAgIGF3YWl0IGFjY2Vzcyh7IGZxbjogXCJoYXNoaWNvcnAvbnVsbFwiLCB2ZXJzaW9uOiBcIjMuMS4wXCIgfSBhcyBhbnkpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhjYWNoZURpcik7XG4gICAgZXhwZWN0KGZpbGVzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KGZpbGVzWzBdKS50b0NvbnRhaW4oXCJ0ZXJyYWZvcm0tMS43XCIpO1xuICB9KTtcblxuICBpdChcImtlZXBzIGRpc3RpbmN0IGNhY2hlIGZpbGVzIGZvciBkaXN0aW5jdCBzdWZmaXhlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvZHVjZXJBID0gamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHsgdjogXCJhXCIgfSk7XG4gICAgY29uc3QgcHJvZHVjZXJCID0gamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHsgdjogXCJiXCIgfSk7XG5cbiAgICBjb25zdCBpbnB1dCA9IHsgZnFuOiBcImhhc2hpY29ycC9udWxsXCIsIHZlcnNpb246IFwiMy4xLjBcIiB9IGFzIGFueTtcblxuICAgIGF3YWl0IGNhY2hlZEFjY2Vzcyhwcm9kdWNlckEsIGNhY2hlRGlyLCBcInRlcnJhZm9ybS0xLjdcIikoaW5wdXQpO1xuICAgIGF3YWl0IGNhY2hlZEFjY2Vzcyhwcm9kdWNlckIsIGNhY2hlRGlyLCBcInRlcnJhZm9ybS0xLjE1XCIpKGlucHV0KTtcblxuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoY2FjaGVEaXIpO1xuICAgIGV4cGVjdChmaWxlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChwcm9kdWNlckEpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICBleHBlY3QocHJvZHVjZXJCKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIGl0KFwiaGl0cyB0aGUgc2FtZSBjYWNoZSBmaWxlIG9uIHJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgc3VmZml4XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9kdWNlciA9IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IHY6IFwiYVwiIH0pO1xuICAgIGNvbnN0IGlucHV0ID0geyBmcW46IFwiaGFzaGljb3JwL251bGxcIiwgdmVyc2lvbjogXCIzLjEuMFwiIH0gYXMgYW55O1xuICAgIGNvbnN0IGFjY2VzcyA9IGNhY2hlZEFjY2Vzcyhwcm9kdWNlciwgY2FjaGVEaXIsIFwidGVycmFmb3JtLTEuN1wiKTtcblxuICAgIGF3YWl0IGFjY2VzcyhpbnB1dCk7XG4gICAgYXdhaXQgYWNjZXNzKGlucHV0KTtcblxuICAgIGV4cGVjdChwcm9kdWNlcikudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGV4cGVjdChmcy5yZWFkZGlyU3luYyhjYWNoZURpcikpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG5cbiAgaXQoXCJzdGF5cyBiYWNrd2FyZC1jb21wYXRpYmxlIHdpdGhvdXQgYSBrZXlTdWZmaXhcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2R1Y2VyID0gamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHsgaGVsbG86IFwid29ybGRcIiB9KTtcbiAgICBjb25zdCBhY2Nlc3MgPSBjYWNoZWRBY2Nlc3MocHJvZHVjZXIsIGNhY2hlRGlyKTtcblxuICAgIGF3YWl0IGFjY2Vzcyh7IGZxbjogXCJoYXNoaWNvcnAvbnVsbFwiLCB2ZXJzaW9uOiBcIjMuMS4wXCIgfSBhcyBhbnkpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhjYWNoZURpcik7XG4gICAgZXhwZWN0KGZpbGVzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KGZpbGVzWzBdKS5ub3QudG9Db250YWluKFwidW5kZWZpbmVkXCIpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -17,13 +17,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
17
17
|
}) : function(o, v) {
|
|
18
18
|
o["default"] = v;
|
|
19
19
|
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || function (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
27
37
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
38
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
39
|
};
|
|
@@ -81,6 +91,27 @@ describe("readSchema", () => {
|
|
|
81
91
|
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
82
92
|
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
83
93
|
}, 120000);
|
|
94
|
+
it("generates a local module that requires provider configuration aliases", async () => {
|
|
95
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
96
|
+
name: "local_module",
|
|
97
|
+
fqn: "local_module",
|
|
98
|
+
source: path.resolve(__dirname, "fixtures", "local-module-provider-aliases"),
|
|
99
|
+
});
|
|
100
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
101
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
102
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
103
|
+
}, 120000);
|
|
104
|
+
it("surfaces the terraform failure when a module cannot be fetched", async () => {
|
|
105
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
106
|
+
name: "local_module",
|
|
107
|
+
fqn: "local_module",
|
|
108
|
+
source: "./this-module-does-not-exist",
|
|
109
|
+
});
|
|
110
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
111
|
+
// the fetch is run tolerantly so a module declaring configuration_aliases
|
|
112
|
+
// gets a second chance - everything else has to keep failing loudly
|
|
113
|
+
await expect((0, provider_schema_1.readModuleSchema)(target)).rejects.toThrow(/get exited with code/);
|
|
114
|
+
}, 120000);
|
|
84
115
|
it("generates a local json module", async () => {
|
|
85
116
|
const module = new commons_1.TerraformModuleConstraint({
|
|
86
117
|
name: "local_module",
|
|
@@ -91,6 +122,26 @@ describe("readSchema", () => {
|
|
|
91
122
|
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
92
123
|
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
93
124
|
}, 120000);
|
|
125
|
+
it("generates a local json module that requires provider configuration aliases", async () => {
|
|
126
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
127
|
+
name: "local_module",
|
|
128
|
+
fqn: "local_module",
|
|
129
|
+
source: path.resolve(__dirname, "fixtures", "local-json-module-provider-aliases"),
|
|
130
|
+
});
|
|
131
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
132
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
133
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
134
|
+
}, 120000);
|
|
135
|
+
it("generates a local module that declares provider configuration aliases across .tf and .tf.json files", async () => {
|
|
136
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
137
|
+
name: "local_module",
|
|
138
|
+
fqn: "local_module",
|
|
139
|
+
source: path.resolve(__dirname, "fixtures", "local-mixed-module-provider-aliases"),
|
|
140
|
+
});
|
|
141
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
142
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
143
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
144
|
+
}, 120000);
|
|
94
145
|
});
|
|
95
146
|
describe("sanitizeProviderSchema", () => {
|
|
96
147
|
it("sanitizes a provider schema", () => {
|
|
@@ -197,4 +248,4 @@ describe("sanitizeProviderSchema", () => {
|
|
|
197
248
|
expect(result).toMatchSnapshot();
|
|
198
249
|
});
|
|
199
250
|
});
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2NoZW1hLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3Byb3ZpZGVyLXNjaGVtYS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLDJDQUE2QjtBQUM3QixrRkFBb0Q7QUFDcEQsNENBT3dCO0FBQ3hCLHdEQUk0QjtBQUU1QixTQUFTLFlBQVksQ0FBQyxLQUFVO0lBQzlCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzVDLHlFQUF5RTtJQUN6RSxpQkFBaUI7SUFDakIsSUFBSSxVQUFVLElBQUksS0FBSztRQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDM0QsSUFBSSxhQUFhLElBQUksS0FBSztRQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztJQUNyRSxPQUFPLElBQUEsK0JBQWUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUMxQixFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQ0FBMkIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUksdUNBQTZCLENBQzlDLFFBQVEsRUFDUixrQkFBUSxDQUFDLFVBQVUsQ0FDcEIsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxvQ0FBa0IsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQyxFQUFFLE1BQU0s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RTt3Q0FDVCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQVE7cUNBQ2xEO2lDQUNGO2dDQUNELFdBQVcsRUFBRSxFQUFFOzZCQUNoQjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLElBQUEsd0NBQXNCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgc3RhYmxlU3RyaW5naWZ5IGZyb20gXCJzYWZlLXN0YWJsZS1zdHJpbmdpZnlcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludCxcbiAgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0LFxuICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldCxcbiAgTGFuZ3VhZ2UsXG4gIFByb3ZpZGVyU2NoZW1hLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7XG4gIHJlYWRNb2R1bGVTY2hlbWEsXG4gIHJlYWRQcm92aWRlclNjaGVtYSxcbiAgc2FuaXRpemVQcm92aWRlclNjaGVtYSxcbn0gZnJvbSBcIi4uL3Byb3ZpZGVyLXNjaGVtYVwiO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZUpzb24odmFsdWU6IGFueSkge1xuICB2YWx1ZVtcImZvcm1hdF92ZXJzaW9uXCJdID0gXCJTVFVCQkVEIFZFUlNJT05cIjtcbiAgLy8gY2xpX25hbWUvY2xpX3ZlcnNpb24gc3RhbXAgd2hhdGV2ZXIgYmluYXJ5IGZldGNoZWQgdGhlIHNjaGVtYSBhbmQgdmFyeVxuICAvLyBieSBlbnZpcm9ubWVudFxuICBpZiAoXCJjbGlfbmFtZVwiIGluIHZhbHVlKSB2YWx1ZVtcImNsaV9uYW1lXCJdID0gXCJTVFVCQkVEIENMSVwiO1xuICBpZiAoXCJjbGlfdmVyc2lvblwiIGluIHZhbHVlKSB2YWx1ZVtcImNsaV92ZXJzaW9uXCJdID0gXCJTVFVCQkVEIFZFUlNJT05cIjtcbiAgcmV0dXJuIHN0YWJsZVN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XG59XG5cbmRlc2NyaWJlKFwicmVhZFNjaGVtYVwiLCAoKSA9PiB7XG4gIGl0KFwiZ2VuZXJhdGVzIGEgc2luZ2xlIHByb3ZpZGVyIHNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50KFwiaGFzaGljb3JwL251bGxAMy4xLjBcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlclByb3ZpZGVyVGFyZ2V0KFxuICAgICAgcHJvdmlkZXIsXG4gICAgICBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZFByb3ZpZGVyU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIHNpbmdsZSBtb2R1bGUgc2NoZW1hXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChcbiAgICAgIFwidGVycmFmb3JtLWF3cy1tb2R1bGVzL2lhbS9hd3MvL21vZHVsZXMvaWFtLWFjY291bnRAMy4xMi4wXCIsXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KG1vZHVsZSwgTGFuZ3VhZ2UuVFlQRVNDUklQVCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBtb3JlIGNvbXBsZXggc2NoZW1hXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChcbiAgICAgIFwidGVycmFmb3JtLWF3cy1tb2R1bGVzL2Vrcy9hd3NANy4wLjFcIixcbiAgICApO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIGxvY2FsIG1vZHVsZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoe1xuICAgICAgbmFtZTogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIGZxbjogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIHNvdXJjZTogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJmaXh0dXJlc1wiLCBcImxvY2FsLW1vZHVsZVwiKSxcbiAgICB9KTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KG1vZHVsZSwgTGFuZ3VhZ2UuVFlQRVNDUklQVCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBsb2NhbCBtb2R1bGUgd2l0aCBpbmxpbmUgY29tbWVudHMgaW4gdHlwZSBjb25zdHJhaW50c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoe1xuICAgICAgbmFtZTogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIGZxbjogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIHNvdXJjZTogcGF0aC5yZXNvbHZlKFxuICAgICAgICBfX2Rpcm5hbWUsXG4gICAgICAgIFwiZml4dHVyZXNcIixcbiAgICAgICAgXCJsb2NhbC1tb2R1bGUtaW5saW5lLWNvbW1lbnRzXCIsXG4gICAgICApLFxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIGxvY2FsIGpzb24gbW9kdWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCh7XG4gICAgICBuYW1lOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgZnFuOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgc291cmNlOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcImZpeHR1cmVzXCIsIFwibG9jYWwtanNvbi1tb2R1bGVcIiksXG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xufSk7XG5cbmRlc2NyaWJlKFwic2FuaXRpemVQcm92aWRlclNjaGVtYVwiLCAoKSA9PiB7XG4gIGl0KFwic2FuaXRpemVzIGEgcHJvdmlkZXIgc2NoZW1hXCIsICgpID0+IHtcbiAgICBjb25zdCBzY2hlbWE6IFByb3ZpZGVyU2NoZW1hID0ge1xuICAgICAgZm9ybWF0X3ZlcnNpb246IFwiMC4xXCIgYXMgY29uc3QsXG4gICAgICBwcm92aWRlcl92ZXJzaW9uczoge1xuICAgICAgICBcInJlZ2lzdHJ5LnRlcnJhZm9ybS5pby9oYXNoaWNvcnAvbnVsbFwiOiBcIjMuMS4wXCIsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgICBcInJlZ2lzdHJ5LnRlcnJhZm9ybS5pby9oYXNoaWNvcnAvbnVsbFwiOiB7XG4gICAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbjoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGluY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiLCBcImxpc3RcIiwgXCJzdHJpbmdcIl0gYXMgYW55LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJzaW5nbGVcIixcbiAgICAgICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlX3NjaGVtYXM6IHtcbiAgICAgICAgICAgIG51bGxfcmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogMCxcbiAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIiwgXCJsaXN0XCIsIFwic3RyaW5nXCJdIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBibG9ja190eXBlczoge1xuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiLCBcImxpc3RcIiwgXCJzdHJpbmdcIl0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhX3NvdXJjZV9zY2hlbWFzOiB7fSxcbiAgICAgICAgICBlcGhlbWVyYWxfcmVzb3VyY2Vfc2NoZW1hczoge1xuICAgICAgICAgICAgbnVsbF9lcGhlbWVyYWw6IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogMCxcbiAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICBjb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIiwgXCJsaXN0XCIsIFwic3RyaW5nXCJdIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBibG9ja190eXBlczoge30sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBzYW5pdGl6ZVByb3ZpZGVyU2NoZW1hKHNjaGVtYSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2NoZW1hLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3Byb3ZpZGVyLXNjaGVtYS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuQywyQ0FBNkI7QUFDN0Isa0ZBQW9EO0FBQ3BELDRDQU93QjtBQUN4Qix3REFJNEI7QUFFNUIsU0FBUyxZQUFZLENBQUMsS0FBVTtJQUM5QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztJQUM1Qyx5RUFBeUU7SUFDekUsaUJBQWlCO0lBQ2pCLElBQUksVUFBVSxJQUFJLEtBQUs7UUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBQzNELElBQUksYUFBYSxJQUFJLEtBQUs7UUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDckUsT0FBTyxJQUFBLCtCQUFlLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDMUIsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUkscUNBQTJCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLHVDQUE2QixDQUM5QyxRQUFRLEVBQ1Isa0JBQVEsQ0FBQyxVQUFVLENBQ3BCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsb0NBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pELENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVYLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLG1DQUF5QixDQUMxQywyREFBMkQsQ0FDNUQsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUkscUNBQTJCLENBQUMsTUFBTSxFQUFFLGtCQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGtDQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFWCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQ0FBeUIsQ0FDMUMscUNBQXFDLENBQ3RDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLHFDQUEyQixDQUFDLE1BQU0sRUFBRSxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQ0FBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRVgsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksbUNBQXlCLENBQUM7WUFDM0MsSUFBSSxFQUFFLGNBQWM7WUFDcEIsR0FBRyxFQUFFLGNBQWM7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUM7U0FDNUQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQ0FBMkIsQ0FBQyxNQUFNLEVBQUUsa0JBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsa0NBQWdCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pELENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVYLEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNqRixNQUFNLE1BQU0sR0FBRyxJQUFJLG1DQUF5QixDQUFDO1lBQzNDLElBQUksRUFBRSxjQUFjO1lBQ3BCLEdBQUcsRUFBRSxjQUFjO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUNsQixTQUFTLEVBQ1QsVUFBVSxFQUNWLDhCQUE4QixDQUMvQjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUkscUNBQTJCLENBQUMsTUFBTSxFQUFFLGtCQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGtDQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFWCxFQUFFLENBQUMsdUVBQXVFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckYsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQ0FBeUIsQ0FBQztZQUMzQyxJQUFJLEVBQUUsY0FBYztZQUNwQixHQUFHLEVBQUUsY0FBYztZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FDbEIsU0FBUyxFQUNULFVBQVUsRUFDViwrQkFBK0IsQ0FDaEM7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFDQUEyQixDQUFDLE1BQU0sRUFBRSxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQ0FBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRVgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlFLE1BQU0sTUFBTSxHQUFHLElBQUksbUNBQXlCLENBQUM7WUFDM0MsSUFBSSxFQUFFLGNBQWM7WUFDcEIsR0FBRyxFQUFFLGNBQWM7WUFDbkIsTUFBTSxFQUFFLDhCQUE4QjtTQUN2QyxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFDQUEyQixDQUFDLE1BQU0sRUFBRSxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVFLDBFQUEwRTtRQUMxRSxvRUFBb0U7UUFDcEUsTUFBTSxNQUFNLENBQUMsSUFBQSxrQ0FBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3BELHNCQUFzQixDQUN2QixDQUFDO0lBQ0osQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRVgsRUFBRSxDQUFDLCtCQUErQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksbUNBQXlCLENBQUM7WUFDM0MsSUFBSSxFQUFFLGNBQWM7WUFDcEIsR0FBRyxFQUFFLGNBQWM7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztTQUNqRSxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFDQUEyQixDQUFDLE1BQU0sRUFBRSxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQ0FBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRVgsRUFBRSxDQUFDLDRFQUE0RSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFGLE1BQU0sTUFBTSxHQUFHLElBQUksbUNBQXlCLENBQUM7WUFDM0MsSUFBSSxFQUFFLGNBQWM7WUFDcEIsR0FBRyxFQUFFLGNBQWM7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQ2xCLFNBQVMsRUFDVCxVQUFVLEVBQ1Ysb0NBQW9DLENBQ3JDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQ0FBMkIsQ0FBQyxNQUFNLEVBQUUsa0JBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsa0NBQWdCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pELENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVYLEVBQUUsQ0FBQyxxR0FBcUcsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuSCxNQUFNLE1BQU0sR0FBRyxJQUFJLG1DQUF5QixDQUFDO1lBQzNDLElBQUksRUFBRSxjQUFjO1lBQ3BCLEdBQUcsRUFBRSxjQUFjO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUNsQixTQUFTLEVBQ1QsVUFBVSxFQUNWLHFDQUFxQyxDQUN0QztTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUkscUNBQTJCLENBQUMsTUFBTSxFQUFFLGtCQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGtDQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDYixDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxNQUFNLE1BQU0sR0FBbUI7WUFDN0IsY0FBYyxFQUFFLEtBQWM7WUFDOUIsaUJBQWlCLEVBQUU7Z0JBQ2pCLHNDQUFzQyxFQUFFLE9BQU87YUFDaEQ7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsc0NBQXNDLEVBQUU7b0JBQ3RDLFFBQVEsRUFBRTt3QkFDUixPQUFPLEVBQUUsQ0FBQzt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsVUFBVSxFQUFFO2dDQUNWLE9BQU8sRUFBRTtvQ0FDUCxJQUFJLEVBQUUsUUFBUTtvQ0FDZCxRQUFRLEVBQUUsSUFBSTtpQ0FDZjtnQ0FDRCxPQUFPLEVBQUU7b0NBQ1AsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztpQ0FDekI7Z0NBQ0QsU0FBUyxFQUFFO29DQUNULElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBUTtpQ0FDbEQ7NkJBQ0Y7NEJBQ0QsV0FBVyxFQUFFO2dDQUNYLFFBQVEsRUFBRTtvQ0FDUixZQUFZLEVBQUUsUUFBUTtvQ0FDdEIsS0FBSyxFQUFFO3dDQUNMLFVBQVUsRUFBRTs0Q0FDVixPQUFPLEVBQUU7Z0RBQ1AsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzs2Q0FDekI7NENBQ0QsU0FBUyxFQUFFO2dEQUNULElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBUTs2Q0FDbEQ7eUNBQ0Y7d0NBQ0QsV0FBVyxFQUFFLEVBQUU7cUNBQ2hCO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO29CQUNELGdCQUFnQixFQUFFO3dCQUNoQixhQUFhLEVBQUU7NEJBQ2IsT0FBTyxFQUFFLENBQUM7NEJBQ1YsS0FBSyxFQUFFO2dDQUNMLFVBQVUsRUFBRTtvQ0FDVixFQUFFLEVBQUU7d0NBQ0YsSUFBSSxFQUFFLFFBQVE7d0NBQ2QsUUFBUSxFQUFFLElBQUk7cUNBQ2Y7b0NBQ0QsT0FBTyxFQUFFO3dDQUNQLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7cUNBQ3pCO29DQUNELFNBQVMsRUFBRTt3Q0FDVCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQVE7cUNBQ2xEO2lDQUNGO2dDQUNELFdBQVcsRUFBRTtvQ0FDWCxRQUFRLEVBQUU7d0NBQ1IsWUFBWSxFQUFFLFFBQVE7d0NBQ3RCLEtBQUssRUFBRTs0Q0FDTCxVQUFVLEVBQUU7Z0RBQ1YsUUFBUSxFQUFFO29EQUNSLElBQUksRUFBRSxRQUFRO29EQUNkLFFBQVEsRUFBRSxJQUFJO2lEQUNmO2dEQUNELE9BQU8sRUFBRTtvREFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2lEQUN6QjtnREFDRCxTQUFTLEVBQUU7b0RBQ1QsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFRO2lEQUNsRDs2Q0FDRjs0Q0FDRCxXQUFXLEVBQUUsRUFBRTt5Q0FDaEI7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsbUJBQW1CLEVBQUUsRUFBRTtvQkFDdkIsMEJBQTBCLEVBQUU7d0JBQzFCLGNBQWMsRUFBRTs0QkFDZCxPQUFPLEVBQUUsQ0FBQzs0QkFDVixLQUFLLEVBQUU7Z0NBQ0wsVUFBVSxFQUFFO29DQUNWLE9BQU8sRUFBRTt3Q0FDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO3FDQUN6QjtvQ0FDRCxTQUFTLEVBQUU7d0NBQ1QsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFRO3FDQUNsRDtpQ0FDRjtnQ0FDRCxXQUFXLEVBQUUsRUFBRTs2QkFDaEI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLHdDQUFzQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHN0YWJsZVN0cmluZ2lmeSBmcm9tIFwic2FmZS1zdGFibGUtc3RyaW5naWZ5XCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50LFxuICBUZXJyYWZvcm1Qcm92aWRlckNvbnN0cmFpbnQsXG4gIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCxcbiAgQ29uc3RydWN0c01ha2VyUHJvdmlkZXJUYXJnZXQsXG4gIExhbmd1YWdlLFxuICBQcm92aWRlclNjaGVtYSxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQge1xuICByZWFkTW9kdWxlU2NoZW1hLFxuICByZWFkUHJvdmlkZXJTY2hlbWEsXG4gIHNhbml0aXplUHJvdmlkZXJTY2hlbWEsXG59IGZyb20gXCIuLi9wcm92aWRlci1zY2hlbWFcIjtcblxuZnVuY3Rpb24gc2FuaXRpemVKc29uKHZhbHVlOiBhbnkpIHtcbiAgdmFsdWVbXCJmb3JtYXRfdmVyc2lvblwiXSA9IFwiU1RVQkJFRCBWRVJTSU9OXCI7XG4gIC8vIGNsaV9uYW1lL2NsaV92ZXJzaW9uIHN0YW1wIHdoYXRldmVyIGJpbmFyeSBmZXRjaGVkIHRoZSBzY2hlbWEgYW5kIHZhcnlcbiAgLy8gYnkgZW52aXJvbm1lbnRcbiAgaWYgKFwiY2xpX25hbWVcIiBpbiB2YWx1ZSkgdmFsdWVbXCJjbGlfbmFtZVwiXSA9IFwiU1RVQkJFRCBDTElcIjtcbiAgaWYgKFwiY2xpX3ZlcnNpb25cIiBpbiB2YWx1ZSkgdmFsdWVbXCJjbGlfdmVyc2lvblwiXSA9IFwiU1RVQkJFRCBWRVJTSU9OXCI7XG4gIHJldHVybiBzdGFibGVTdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xufVxuXG5kZXNjcmliZShcInJlYWRTY2hlbWFcIiwgKCkgPT4ge1xuICBpdChcImdlbmVyYXRlcyBhIHNpbmdsZSBwcm92aWRlciBzY2hlbWFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludChcImhhc2hpY29ycC9udWxsQDMuMS4wXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldChcbiAgICAgIHByb3ZpZGVyLFxuICAgICAgTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRQcm92aWRlclNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBzaW5nbGUgbW9kdWxlIHNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgICBcInRlcnJhZm9ybS1hd3MtbW9kdWxlcy9pYW0vYXdzLy9tb2R1bGVzL2lhbS1hY2NvdW50QDMuMTIuMFwiLFxuICAgICk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgbW9yZSBjb21wbGV4IHNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgICBcInRlcnJhZm9ybS1hd3MtbW9kdWxlcy9la3MvYXdzQDcuMC4xXCIsXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KG1vZHVsZSwgTGFuZ3VhZ2UuVFlQRVNDUklQVCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBsb2NhbCBtb2R1bGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KHtcbiAgICAgIG5hbWU6IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBmcW46IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBzb3VyY2U6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiZml4dHVyZXNcIiwgXCJsb2NhbC1tb2R1bGVcIiksXG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgbG9jYWwgbW9kdWxlIHdpdGggaW5saW5lIGNvbW1lbnRzIGluIHR5cGUgY29uc3RyYWludHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KHtcbiAgICAgIG5hbWU6IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBmcW46IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBzb3VyY2U6IHBhdGgucmVzb2x2ZShcbiAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICBcImZpeHR1cmVzXCIsXG4gICAgICAgIFwibG9jYWwtbW9kdWxlLWlubGluZS1jb21tZW50c1wiLFxuICAgICAgKSxcbiAgICB9KTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KG1vZHVsZSwgTGFuZ3VhZ2UuVFlQRVNDUklQVCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBsb2NhbCBtb2R1bGUgdGhhdCByZXF1aXJlcyBwcm92aWRlciBjb25maWd1cmF0aW9uIGFsaWFzZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KHtcbiAgICAgIG5hbWU6IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBmcW46IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBzb3VyY2U6IHBhdGgucmVzb2x2ZShcbiAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICBcImZpeHR1cmVzXCIsXG4gICAgICAgIFwibG9jYWwtbW9kdWxlLXByb3ZpZGVyLWFsaWFzZXNcIixcbiAgICAgICksXG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwic3VyZmFjZXMgdGhlIHRlcnJhZm9ybSBmYWlsdXJlIHdoZW4gYSBtb2R1bGUgY2Fubm90IGJlIGZldGNoZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KHtcbiAgICAgIG5hbWU6IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBmcW46IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBzb3VyY2U6IFwiLi90aGlzLW1vZHVsZS1kb2VzLW5vdC1leGlzdFwiLFxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcblxuICAgIC8vIHRoZSBmZXRjaCBpcyBydW4gdG9sZXJhbnRseSBzbyBhIG1vZHVsZSBkZWNsYXJpbmcgY29uZmlndXJhdGlvbl9hbGlhc2VzXG4gICAgLy8gZ2V0cyBhIHNlY29uZCBjaGFuY2UgLSBldmVyeXRoaW5nIGVsc2UgaGFzIHRvIGtlZXAgZmFpbGluZyBsb3VkbHlcbiAgICBhd2FpdCBleHBlY3QocmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpKS5yZWplY3RzLnRvVGhyb3coXG4gICAgICAvZ2V0IGV4aXRlZCB3aXRoIGNvZGUvLFxuICAgICk7XG4gIH0sIDEyMDAwMCk7XG5cbiAgaXQoXCJnZW5lcmF0ZXMgYSBsb2NhbCBqc29uIG1vZHVsZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoe1xuICAgICAgbmFtZTogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIGZxbjogXCJsb2NhbF9tb2R1bGVcIixcbiAgICAgIHNvdXJjZTogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJmaXh0dXJlc1wiLCBcImxvY2FsLWpzb24tbW9kdWxlXCIpLFxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIGxvY2FsIGpzb24gbW9kdWxlIHRoYXQgcmVxdWlyZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBhbGlhc2VzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCh7XG4gICAgICBuYW1lOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgZnFuOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgc291cmNlOiBwYXRoLnJlc29sdmUoXG4gICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgXCJmaXh0dXJlc1wiLFxuICAgICAgICBcImxvY2FsLWpzb24tbW9kdWxlLXByb3ZpZGVyLWFsaWFzZXNcIixcbiAgICAgICksXG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgbG9jYWwgbW9kdWxlIHRoYXQgZGVjbGFyZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvbiBhbGlhc2VzIGFjcm9zcyAudGYgYW5kIC50Zi5qc29uIGZpbGVzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCh7XG4gICAgICBuYW1lOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgZnFuOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgc291cmNlOiBwYXRoLnJlc29sdmUoXG4gICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgXCJmaXh0dXJlc1wiLFxuICAgICAgICBcImxvY2FsLW1peGVkLW1vZHVsZS1wcm92aWRlci1hbGlhc2VzXCIsXG4gICAgICApLFxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcbn0pO1xuXG5kZXNjcmliZShcInNhbml0aXplUHJvdmlkZXJTY2hlbWFcIiwgKCkgPT4ge1xuICBpdChcInNhbml0aXplcyBhIHByb3ZpZGVyIHNjaGVtYVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hOiBQcm92aWRlclNjaGVtYSA9IHtcbiAgICAgIGZvcm1hdF92ZXJzaW9uOiBcIjAuMVwiIGFzIGNvbnN0LFxuICAgICAgcHJvdmlkZXJfdmVyc2lvbnM6IHtcbiAgICAgICAgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL251bGxcIjogXCIzLjEuMFwiLFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyX3NjaGVtYXM6IHtcbiAgICAgICAgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL251bGxcIjoge1xuICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiAwLFxuICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHZlcnNpb246IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbmNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIiwgXCJsaXN0XCIsIFwic3RyaW5nXCJdIGFzIGFueSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBibG9ja190eXBlczoge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgICAgICBuZXN0aW5nX21vZGU6IFwic2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGluY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiLCBcImxpc3RcIiwgXCJzdHJpbmdcIl0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZV9zY2hlbWFzOiB7XG4gICAgICAgICAgICBudWxsX3Jlc291cmNlOiB7XG4gICAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHtcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJzaW5nbGVcIixcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIiwgXCJsaXN0XCIsIFwic3RyaW5nXCJdIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlczoge30sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YV9zb3VyY2Vfc2NoZW1hczoge30sXG4gICAgICAgICAgZXBoZW1lcmFsX3Jlc291cmNlX3NjaGVtYXM6IHtcbiAgICAgICAgICAgIG51bGxfZXBoZW1lcmFsOiB7XG4gICAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gc2FuaXRpemVQcm92aWRlclNjaGVtYShzY2hlbWEpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1,11 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) HashiCorp, Inc
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
4
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
38
|
jest.mock("@cdktn/commons", () => ({
|
|
6
39
|
...jest.requireActual("@cdktn/commons"),
|
|
7
40
|
exec: jest.fn(),
|
|
8
41
|
}));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
9
45
|
const commons_1 = require("@cdktn/commons");
|
|
10
46
|
const provider_schema_1 = require("../provider-schema");
|
|
11
47
|
const execMock = commons_1.exec;
|
|
@@ -67,4 +103,209 @@ describe("getFetchingCliVersion", () => {
|
|
|
67
103
|
expect(execMock).toHaveBeenCalledTimes(1);
|
|
68
104
|
});
|
|
69
105
|
});
|
|
70
|
-
|
|
106
|
+
describe("collectModuleProviderAliases", () => {
|
|
107
|
+
it("returns nothing for a module without required_providers", () => {
|
|
108
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)({ variable: { foo: [{}] } })).toEqual([]);
|
|
109
|
+
});
|
|
110
|
+
it("returns nothing for required providers without configuration aliases", () => {
|
|
111
|
+
const parsed = {
|
|
112
|
+
terraform: [
|
|
113
|
+
{ required_providers: [{ aws: { source: "hashicorp/aws" } }] },
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([]);
|
|
117
|
+
});
|
|
118
|
+
it("collects every alias declared across terraform blocks", () => {
|
|
119
|
+
const parsed = {
|
|
120
|
+
terraform: [
|
|
121
|
+
{
|
|
122
|
+
required_providers: [
|
|
123
|
+
{
|
|
124
|
+
aws: {
|
|
125
|
+
source: "hashicorp/aws",
|
|
126
|
+
configuration_aliases: [
|
|
127
|
+
"${aws.global_region}",
|
|
128
|
+
"${aws.secondary}",
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
random: { source: "hashicorp/random" },
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
required_providers: [
|
|
137
|
+
{
|
|
138
|
+
awsx: {
|
|
139
|
+
source: "hashicorp/aws",
|
|
140
|
+
configuration_aliases: ["${awsx.tertiary}"],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([
|
|
148
|
+
{ localName: "aws", alias: "global_region", source: "hashicorp/aws" },
|
|
149
|
+
{ localName: "aws", alias: "secondary", source: "hashicorp/aws" },
|
|
150
|
+
{ localName: "awsx", alias: "tertiary", source: "hashicorp/aws" },
|
|
151
|
+
]);
|
|
152
|
+
});
|
|
153
|
+
it("deduplicates aliases declared in more than one file", () => {
|
|
154
|
+
const declaration = {
|
|
155
|
+
aws: {
|
|
156
|
+
source: "hashicorp/aws",
|
|
157
|
+
configuration_aliases: ["${aws.global_region}"],
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
const parsed = {
|
|
161
|
+
terraform: [{ required_providers: [declaration, declaration] }],
|
|
162
|
+
};
|
|
163
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([
|
|
164
|
+
{ localName: "aws", alias: "global_region", source: "hashicorp/aws" },
|
|
165
|
+
]);
|
|
166
|
+
});
|
|
167
|
+
it("keeps aliases of providers declared without a source", () => {
|
|
168
|
+
const parsed = {
|
|
169
|
+
terraform: {
|
|
170
|
+
required_providers: {
|
|
171
|
+
aws: { configuration_aliases: ["${aws.other}"] },
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([
|
|
176
|
+
{ localName: "aws", alias: "other", source: undefined },
|
|
177
|
+
]);
|
|
178
|
+
});
|
|
179
|
+
it("reads the plain references a .tf.json module declares", () => {
|
|
180
|
+
// hcl2json only wraps HCL expressions in an interpolation; JSON syntax
|
|
181
|
+
// carries the reference as-is, and its blocks come through unwrapped
|
|
182
|
+
const parsed = {
|
|
183
|
+
terraform: {
|
|
184
|
+
required_providers: {
|
|
185
|
+
null: {
|
|
186
|
+
source: "hashicorp/null",
|
|
187
|
+
configuration_aliases: ["null.extra"],
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([
|
|
193
|
+
{ localName: "null", alias: "extra", source: "hashicorp/null" },
|
|
194
|
+
]);
|
|
195
|
+
});
|
|
196
|
+
it("reads aliases a module spread across .tf and .tf.json files", () => {
|
|
197
|
+
// hcl2json merges a .tf.json file into the parsed HCL by recursing into
|
|
198
|
+
// the HCL block array, so the JSON half ends up as a named property on
|
|
199
|
+
// that array rather than another entry in it
|
|
200
|
+
const parsed = {
|
|
201
|
+
terraform: [
|
|
202
|
+
{ required_providers: [{ aws: { source: "hashicorp/aws" } }] },
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
parsed.terraform.required_providers = {
|
|
206
|
+
null: {
|
|
207
|
+
source: "hashicorp/null",
|
|
208
|
+
configuration_aliases: ["null.extra"],
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([
|
|
212
|
+
{ localName: "null", alias: "extra", source: "hashicorp/null" },
|
|
213
|
+
]);
|
|
214
|
+
});
|
|
215
|
+
it("ignores entries that are not provider configuration references", () => {
|
|
216
|
+
const parsed = {
|
|
217
|
+
terraform: {
|
|
218
|
+
required_providers: {
|
|
219
|
+
aws: { configuration_aliases: ["${aws}", "${var.not_an_alias.x}"] },
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
expect((0, provider_schema_1.collectModuleProviderAliases)(parsed)).toEqual([]);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
describe("applyModuleProviderAliases", () => {
|
|
227
|
+
const configWithModule = () => ({
|
|
228
|
+
terraform: {},
|
|
229
|
+
module: { my_module: { source: "./mod" } },
|
|
230
|
+
});
|
|
231
|
+
it("declares the aliased providers and passes them to the module", () => {
|
|
232
|
+
const config = (0, provider_schema_1.applyModuleProviderAliases)(configWithModule(), "my_module", [
|
|
233
|
+
{ localName: "aws", alias: "global_region", source: "hashicorp/aws" },
|
|
234
|
+
{ localName: "aws", alias: "secondary", source: "hashicorp/aws" },
|
|
235
|
+
]);
|
|
236
|
+
expect(config).toEqual({
|
|
237
|
+
terraform: { required_providers: { aws: { source: "hashicorp/aws" } } },
|
|
238
|
+
provider: { aws: [{ alias: "global_region" }, { alias: "secondary" }] },
|
|
239
|
+
module: {
|
|
240
|
+
my_module: {
|
|
241
|
+
source: "./mod",
|
|
242
|
+
providers: {
|
|
243
|
+
"aws.global_region": "aws.global_region",
|
|
244
|
+
"aws.secondary": "aws.secondary",
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
it("omits required_providers for aliases without a declared source", () => {
|
|
251
|
+
const config = (0, provider_schema_1.applyModuleProviderAliases)(configWithModule(), "my_module", [
|
|
252
|
+
{ localName: "aws", alias: "other" },
|
|
253
|
+
]);
|
|
254
|
+
expect(config.terraform.required_providers).toBeUndefined();
|
|
255
|
+
expect(config.provider).toEqual({ aws: [{ alias: "other" }] });
|
|
256
|
+
});
|
|
257
|
+
it("leaves the config untouched when there are no aliases", () => {
|
|
258
|
+
expect((0, provider_schema_1.applyModuleProviderAliases)(configWithModule(), "my_module", [])).toEqual(configWithModule());
|
|
259
|
+
});
|
|
260
|
+
it("leaves the config untouched when the module call is unknown", () => {
|
|
261
|
+
expect((0, provider_schema_1.applyModuleProviderAliases)(configWithModule(), "other_module", [
|
|
262
|
+
{ localName: "aws", alias: "global_region" },
|
|
263
|
+
])).toEqual(configWithModule());
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
describe("packageSubdir", () => {
|
|
267
|
+
it.each([
|
|
268
|
+
["terraform-aws-modules/iam/aws", undefined],
|
|
269
|
+
[
|
|
270
|
+
"terraform-aws-modules/iam/aws//modules/iam-account",
|
|
271
|
+
"modules/iam-account",
|
|
272
|
+
],
|
|
273
|
+
["git::https://github.com/org/repo.git//sub?ref=v1.2.3", "sub"],
|
|
274
|
+
["git::ssh://git@github.com/org/repo.git", undefined],
|
|
275
|
+
["./local/module", undefined],
|
|
276
|
+
])("splits %s", (source, expected) => {
|
|
277
|
+
expect((0, provider_schema_1.packageSubdir)(source)).toEqual(expected);
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
describe("fetchedModuleDir", () => {
|
|
281
|
+
let workdir;
|
|
282
|
+
beforeEach(() => {
|
|
283
|
+
workdir = fs.mkdtempSync(path.join(os.tmpdir(), "fetched-module-dir-"));
|
|
284
|
+
});
|
|
285
|
+
afterEach(() => {
|
|
286
|
+
fs.rmSync(workdir, { recursive: true, force: true });
|
|
287
|
+
});
|
|
288
|
+
function writeManifest(modules) {
|
|
289
|
+
const dir = path.join(workdir, ".terraform", "modules");
|
|
290
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
291
|
+
fs.writeFileSync(path.join(dir, "modules.json"), JSON.stringify({ Modules: modules }));
|
|
292
|
+
}
|
|
293
|
+
it("prefers the directory recorded in the module manifest", () => {
|
|
294
|
+
writeManifest([
|
|
295
|
+
{ Key: "", Dir: "." },
|
|
296
|
+
{ Key: "my_module", Dir: ".terraform/modules/my_module/modules/sub" },
|
|
297
|
+
]);
|
|
298
|
+
expect((0, provider_schema_1.fetchedModuleDir)(workdir, "my_module", "org/name/aws//modules/sub")).toEqual(path.join(workdir, ".terraform", "modules", "my_module", "modules", "sub"));
|
|
299
|
+
});
|
|
300
|
+
it("falls back to the install path when the manifest was not written", () => {
|
|
301
|
+
expect((0, provider_schema_1.fetchedModuleDir)(workdir, "my_module", "org/name/aws//modules/sub")).toEqual(path.join(workdir, ".terraform", "modules", "my_module", "modules", "sub"));
|
|
302
|
+
});
|
|
303
|
+
it("falls back to the install path when the manifest lacks the module", () => {
|
|
304
|
+
writeManifest([{ Key: "", Dir: "." }]);
|
|
305
|
+
expect((0, provider_schema_1.fetchedModuleDir)(workdir, "my_module", "org/name/aws")).toEqual(path.join(workdir, ".terraform", "modules", "my_module"));
|
|
306
|
+
});
|
|
307
|
+
it("reads local modules where they are", () => {
|
|
308
|
+
expect((0, provider_schema_1.fetchedModuleDir)(workdir, "my_module", "../mod", "/abs/path/to/mod")).toEqual("/abs/path/to/mod");
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2NoZW1hLnVuaXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcHJvdmlkZXItc2NoZW1hLnVuaXQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUNoQixDQUFDLENBQUMsQ0FBQztBQUVKLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBRTdCLDRDQUFzQztBQUN0Qyx3REFRNEI7QUFFNUIsTUFBTSxRQUFRLEdBQUcsY0FBNEIsQ0FBQztBQUU5QyxTQUFTLGNBQWMsQ0FBQyxPQUFPLEdBQUcsaUNBQWlDO0lBQ2pFLE1BQU0sR0FBRyxHQUFRLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDbkQsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDckIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBTyxHQUFHLGlDQUFpQztJQUM3RCxNQUFNLEdBQUcsR0FBUSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ25ELEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsSUFBSSxlQUFpQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsZUFBZSxHQUFHLElBQUk7YUFDbkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7YUFDdkIsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVELFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsd0NBQXNCLEVBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25FLFFBQVE7YUFDTCxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkQscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHdDQUFzQixFQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0RCxRQUFRLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUU3QyxNQUFNLE1BQU0sQ0FDVixJQUFBLHdDQUFzQixFQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDaEQsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sTUFBTSxDQUNWLElBQUEsd0NBQXNCLEVBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNoRCxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDckMsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixRQUFRLENBQUMsaUJBQWlCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUVqRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsdUNBQXFCLEdBQUUsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsdUNBQXFCLEdBQUUsQ0FBQztRQUU3QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUM1QyxFQUFFLENBQUMseURBQXlELEVBQUUsR0FBRyxFQUFFO1FBQ2pFLE1BQU0sQ0FBQyxJQUFBLDhDQUE0QixFQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3ZFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0VBQXNFLEVBQUUsR0FBRyxFQUFFO1FBQzlFLE1BQU0sTUFBTSxHQUFHO1lBQ2IsU0FBUyxFQUFFO2dCQUNULEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLEVBQUU7YUFDL0Q7U0FDRixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUEsOENBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sTUFBTSxHQUFHO1lBQ2IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLGtCQUFrQixFQUFFO3dCQUNsQjs0QkFDRSxHQUFHLEVBQUU7Z0NBQ0gsTUFBTSxFQUFFLGVBQWU7Z0NBQ3ZCLHFCQUFxQixFQUFFO29DQUNyQixzQkFBc0I7b0NBQ3RCLGtCQUFrQjtpQ0FDbkI7NkJBQ0Y7NEJBQ0QsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFO3lCQUN2QztxQkFDRjtpQkFDRjtnQkFDRDtvQkFDRSxrQkFBa0IsRUFBRTt3QkFDbEI7NEJBQ0UsSUFBSSxFQUFFO2dDQUNKLE1BQU0sRUFBRSxlQUFlO2dDQUN2QixxQkFBcUIsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzZCQUM1Qzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFBLDhDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25ELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUU7WUFDckUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRTtZQUNqRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFO1NBQ2xFLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtRQUM3RCxNQUFNLFdBQVcsR0FBRztZQUNsQixHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLGVBQWU7Z0JBQ3ZCLHFCQUFxQixFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDaEQ7U0FDRixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUc7WUFDYixTQUFTLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7U0FDaEUsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFBLDhDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25ELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUU7U0FDdEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1FBQzlELE1BQU0sTUFBTSxHQUFHO1lBQ2IsU0FBUyxFQUFFO2dCQUNULGtCQUFrQixFQUFFO29CQUNsQixHQUFHLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2lCQUNqRDthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFBLDhDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25ELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7U0FDeEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELHVFQUF1RTtRQUN2RSxxRUFBcUU7UUFDckUsTUFBTSxNQUFNLEdBQUc7WUFDYixTQUFTLEVBQUU7Z0JBQ1Qsa0JBQWtCLEVBQUU7b0JBQ2xCLElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUUsZ0JBQWdCO3dCQUN4QixxQkFBcUIsRUFBRSxDQUFDLFlBQVksQ0FBQztxQkFDdEM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLENBQUMsSUFBQSw4Q0FBNEIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuRCxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7U0FDaEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsR0FBRyxFQUFFO1FBQ3JFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsNkNBQTZDO1FBQzdDLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2FBQy9EO1NBQ0YsQ0FBQztRQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUc7WUFDcEMsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxnQkFBZ0I7Z0JBQ3hCLHFCQUFxQixFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3RDO1NBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFBLDhDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25ELEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRTtTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7UUFDeEUsTUFBTSxNQUFNLEdBQUc7WUFDYixTQUFTLEVBQUU7Z0JBQ1Qsa0JBQWtCLEVBQUU7b0JBQ2xCLEdBQUcsRUFBRSxFQUFFLHFCQUFxQixFQUFFLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLEVBQUU7aUJBQ3BFO2FBQ0Y7U0FDRixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUEsOENBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7SUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFvQixFQUFFLENBQUMsQ0FBQztRQUMvQyxTQUFTLEVBQUUsRUFBRTtRQUNiLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtLQUMzQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLElBQUEsNENBQTBCLEVBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUU7WUFDekUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRTtZQUNyRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFO1NBQ2xFLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDckIsU0FBUyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtZQUN2RSxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZFLE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLE9BQU87b0JBQ2YsU0FBUyxFQUFFO3dCQUNULG1CQUFtQixFQUFFLG1CQUFtQjt3QkFDeEMsZUFBZSxFQUFFLGVBQWU7cUJBQ2pDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7UUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBQSw0Q0FBMEIsRUFBQyxnQkFBZ0IsRUFBRSxFQUFFLFdBQVcsRUFBRTtZQUN6RSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtTQUNyQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sQ0FDSixJQUFBLDRDQUEwQixFQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUNoRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsR0FBRyxFQUFFO1FBQ3JFLE1BQU0sQ0FDSixJQUFBLDRDQUEwQixFQUFDLGdCQUFnQixFQUFFLEVBQUUsY0FBYyxFQUFFO1lBQzdELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1NBQzdDLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQztRQUM1QztZQUNFLG9EQUFvRDtZQUNwRCxxQkFBcUI7U0FDdEI7UUFDRCxDQUFDLHNEQUFzRCxFQUFFLEtBQUssQ0FBQztRQUMvRCxDQUFDLHdDQUF3QyxFQUFFLFNBQVMsQ0FBQztRQUNyRCxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQztLQUM5QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ25DLE1BQU0sQ0FBQyxJQUFBLCtCQUFhLEVBQUMsTUFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLElBQUksT0FBZSxDQUFDO0lBRXBCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxhQUFhLENBQUMsT0FBdUM7UUFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkMsRUFBRSxDQUFDLGFBQWEsQ0FDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsRUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxHQUFHLEVBQUU7UUFDL0QsYUFBYSxDQUFDO1lBQ1osRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7WUFDckIsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSwwQ0FBMEMsRUFBRTtTQUN0RSxDQUFDLENBQUM7UUFFSCxNQUFNLENBQ0osSUFBQSxrQ0FBZ0IsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQ3BFLENBQUMsT0FBTyxDQUNQLElBQUksQ0FBQyxJQUFJLENBQ1AsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLENBQ04sQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzFFLE1BQU0sQ0FDSixJQUFBLGtDQUFnQixFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FDcEUsQ0FBQyxPQUFPLENBQ1AsSUFBSSxDQUFDLElBQUksQ0FDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssQ0FDTixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7UUFDM0UsYUFBYSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkMsTUFBTSxDQUFDLElBQUEsa0NBQWdCLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLENBQ0osSUFBQSxrQ0FBZ0IsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUNyRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5qZXN0Lm1vY2soXCJAY2RrdG4vY29tbW9uc1wiLCAoKSA9PiAoe1xuICAuLi5qZXN0LnJlcXVpcmVBY3R1YWwoXCJAY2RrdG4vY29tbW9uc1wiKSxcbiAgZXhlYzogamVzdC5mbigpLFxufSkpO1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1Db25maWcsXG4gIGFwcGx5TW9kdWxlUHJvdmlkZXJBbGlhc2VzLFxuICBjb2xsZWN0TW9kdWxlUHJvdmlkZXJBbGlhc2VzLFxuICBmZXRjaGVkTW9kdWxlRGlyLFxuICBnZXRGZXRjaGluZ0NsaVZlcnNpb24sXG4gIHBhY2thZ2VTdWJkaXIsXG4gIHRlcnJhZm9ybUluaXRXaXRoUmV0cnksXG59IGZyb20gXCIuLi9wcm92aWRlci1zY2hlbWFcIjtcblxuY29uc3QgZXhlY01vY2sgPSBleGVjIGFzIHVua25vd24gYXMgamVzdC5Nb2NrO1xuXG5mdW5jdGlvbiB0cmFuc2llbnRFcnJvcihtZXNzYWdlID0gXCI1MDIgQmFkIEdhdGV3YXkgZnJvbSBnaXRodWIuY29tXCIpIHtcbiAgY29uc3QgZXJyOiBhbnkgPSBuZXcgRXJyb3IoXCJub24temVybyBleGl0IGNvZGUgMVwiKTtcbiAgZXJyLnN0ZGVyciA9IG1lc3NhZ2U7XG4gIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGZhdGFsRXJyb3IobWVzc2FnZSA9IFwiRXJyb3I6IEludmFsaWQgcHJvdmlkZXIgdmVyc2lvblwiKSB7XG4gIGNvbnN0IGVycjogYW55ID0gbmV3IEVycm9yKFwibm9uLXplcm8gZXhpdCBjb2RlIDFcIik7XG4gIGVyci5zdGRlcnIgPSBtZXNzYWdlO1xuICByZXR1cm4gZXJyO1xufVxuXG5kZXNjcmliZShcInRlcnJhZm9ybUluaXRXaXRoUmV0cnlcIiwgKCkgPT4ge1xuICBsZXQgY29uc29sZUVycm9yU3B5OiBqZXN0LlNweUluc3RhbmNlO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGV4ZWNNb2NrLm1vY2tSZXNldCgpO1xuICAgIGNvbnNvbGVFcnJvclNweSA9IGplc3RcbiAgICAgIC5zcHlPbihjb25zb2xlLCBcImVycm9yXCIpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgY29uc29sZUVycm9yU3B5Lm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwicmV0dXJucyBpbW1lZGlhdGVseSBvbiBmaXJzdC1hdHRlbXB0IHN1Y2Nlc3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4ZWNNb2NrLm1vY2tSZXNvbHZlZFZhbHVlT25jZShcIm9rXCIpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGVycmFmb3JtSW5pdFdpdGhSZXRyeSh7IGN3ZDogXCIvdG1wL3hcIiB9LCAzLCAwKTtcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJva1wiKTtcbiAgICBleHBlY3QoZXhlY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoXCJyZXRyaWVzIG9uIHRyYW5zaWVudCBzdGRlcnIgYW5kIGV2ZW50dWFsbHkgc3VjY2VlZHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4ZWNNb2NrXG4gICAgICAubW9ja1JlamVjdGVkVmFsdWVPbmNlKHRyYW5zaWVudEVycm9yKCkpXG4gICAgICAubW9ja1JlamVjdGVkVmFsdWVPbmNlKHRyYW5zaWVudEVycm9yKFwiRUNPTk5SRVNFVFwiKSlcbiAgICAgIC5tb2NrUmVzb2x2ZWRWYWx1ZU9uY2UoXCJva1wiKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRlcnJhZm9ybUluaXRXaXRoUmV0cnkoeyBjd2Q6IFwiL3RtcC94XCIgfSwgMywgMCk7XG5cbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwib2tcIik7XG4gICAgZXhwZWN0KGV4ZWNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMyk7XG4gIH0pO1xuXG4gIGl0KFwiZG9lcyBub3QgcmV0cnkgb24gbm9uLXRyYW5zaWVudCBlcnJvcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4ZWNNb2NrLm1vY2tSZWplY3RlZFZhbHVlT25jZShmYXRhbEVycm9yKCkpO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgdGVycmFmb3JtSW5pdFdpdGhSZXRyeSh7IGN3ZDogXCIvdG1wL3hcIiB9LCAzLCAwKSxcbiAgICApLnJlamVjdHMudG9NYXRjaE9iamVjdCh7IHN0ZGVycjogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoXCJJbnZhbGlkXCIpIH0pO1xuXG4gICAgZXhwZWN0KGV4ZWNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIGl0KFwidGhyb3dzIGFmdGVyIGV4aGF1c3RpbmcgcmV0cmllcyBvbiBwZXJzaXN0ZW50IHRyYW5zaWVudCBlcnJvcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4ZWNNb2NrLm1vY2tSZWplY3RlZFZhbHVlKHRyYW5zaWVudEVycm9yKFwiNTAzIFNlcnZpY2UgVW5hdmFpbGFibGVcIikpO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgdGVycmFmb3JtSW5pdFdpdGhSZXRyeSh7IGN3ZDogXCIvdG1wL3hcIiB9LCAzLCAwKSxcbiAgICApLnJlamVjdHMudG9NYXRjaE9iamVjdCh7IHN0ZGVycjogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoXCI1MDNcIikgfSk7XG5cbiAgICBleHBlY3QoZXhlY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygzKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJnZXRGZXRjaGluZ0NsaVZlcnNpb25cIiwgKCkgPT4ge1xuICBpdChcImV4ZWNzIGB0ZXJyYWZvcm0gdmVyc2lvbmAgb25jZSBhbmQgbWVtb2l6ZXMgdGhlIHJlc3VsdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhlY01vY2subW9ja1Jlc2V0KCk7XG4gICAgZXhlY01vY2subW9ja1Jlc29sdmVkVmFsdWUoXCJUZXJyYWZvcm0gdjEuNy41XFxub24gbGludXhfYW1kNjRcXG5cIik7XG5cbiAgICBjb25zdCBmaXJzdCA9IGF3YWl0IGdldEZldGNoaW5nQ2xpVmVyc2lvbigpO1xuICAgIGNvbnN0IHNlY29uZCA9IGF3YWl0IGdldEZldGNoaW5nQ2xpVmVyc2lvbigpO1xuXG4gICAgZXhwZWN0KGZpcnN0KS50b0VxdWFsKHsgbmFtZTogXCJ0ZXJyYWZvcm1cIiwgdmVyc2lvbjogXCIxLjcuNVwiIH0pO1xuICAgIGV4cGVjdChzZWNvbmQpLnRvQmUoZmlyc3QpO1xuICAgIGV4cGVjdChleGVjTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcImNvbGxlY3RNb2R1bGVQcm92aWRlckFsaWFzZXNcIiwgKCkgPT4ge1xuICBpdChcInJldHVybnMgbm90aGluZyBmb3IgYSBtb2R1bGUgd2l0aG91dCByZXF1aXJlZF9wcm92aWRlcnNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjb2xsZWN0TW9kdWxlUHJvdmlkZXJBbGlhc2VzKHsgdmFyaWFibGU6IHsgZm9vOiBbe31dIH0gfSkpLnRvRXF1YWwoXG4gICAgICBbXSxcbiAgICApO1xuICB9KTtcblxuICBpdChcInJldHVybnMgbm90aGluZyBmb3IgcmVxdWlyZWQgcHJvdmlkZXJzIHdpdGhvdXQgY29uZmlndXJhdGlvbiBhbGlhc2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSB7XG4gICAgICB0ZXJyYWZvcm06IFtcbiAgICAgICAgeyByZXF1aXJlZF9wcm92aWRlcnM6IFt7IGF3czogeyBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiIH0gfV0gfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGV4cGVjdChjb2xsZWN0TW9kdWxlUHJvdmlkZXJBbGlhc2VzKHBhcnNlZCkpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdChcImNvbGxlY3RzIGV2ZXJ5IGFsaWFzIGRlY2xhcmVkIGFjcm9zcyB0ZXJyYWZvcm0gYmxvY2tzXCIsICgpID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSB7XG4gICAgICB0ZXJyYWZvcm06IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlcXVpcmVkX3Byb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhd3M6IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fYWxpYXNlczogW1xuICAgICAgICAgICAgICAgICAgXCIke2F3cy5nbG9iYWxfcmVnaW9ufVwiLFxuICAgICAgICAgICAgICAgICAgXCIke2F3cy5zZWNvbmRhcnl9XCIsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmFuZG9tOiB7IHNvdXJjZTogXCJoYXNoaWNvcnAvcmFuZG9tXCIgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHJlcXVpcmVkX3Byb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhd3N4OiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBcImhhc2hpY29ycC9hd3NcIixcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIiR7YXdzeC50ZXJ0aWFyeX1cIl0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBleHBlY3QoY29sbGVjdE1vZHVsZVByb3ZpZGVyQWxpYXNlcyhwYXJzZWQpKS50b0VxdWFsKFtcbiAgICAgIHsgbG9jYWxOYW1lOiBcImF3c1wiLCBhbGlhczogXCJnbG9iYWxfcmVnaW9uXCIsIHNvdXJjZTogXCJoYXNoaWNvcnAvYXdzXCIgfSxcbiAgICAgIHsgbG9jYWxOYW1lOiBcImF3c1wiLCBhbGlhczogXCJzZWNvbmRhcnlcIiwgc291cmNlOiBcImhhc2hpY29ycC9hd3NcIiB9LFxuICAgICAgeyBsb2NhbE5hbWU6IFwiYXdzeFwiLCBhbGlhczogXCJ0ZXJ0aWFyeVwiLCBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiIH0sXG4gICAgXSk7XG4gIH0pO1xuXG4gIGl0KFwiZGVkdXBsaWNhdGVzIGFsaWFzZXMgZGVjbGFyZWQgaW4gbW9yZSB0aGFuIG9uZSBmaWxlXCIsICgpID0+IHtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHtcbiAgICAgIGF3czoge1xuICAgICAgICBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiLFxuICAgICAgICBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIiR7YXdzLmdsb2JhbF9yZWdpb259XCJdLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHBhcnNlZCA9IHtcbiAgICAgIHRlcnJhZm9ybTogW3sgcmVxdWlyZWRfcHJvdmlkZXJzOiBbZGVjbGFyYXRpb24sIGRlY2xhcmF0aW9uXSB9XSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbGxlY3RNb2R1bGVQcm92aWRlckFsaWFzZXMocGFyc2VkKSkudG9FcXVhbChbXG4gICAgICB7IGxvY2FsTmFtZTogXCJhd3NcIiwgYWxpYXM6IFwiZ2xvYmFsX3JlZ2lvblwiLCBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiIH0sXG4gICAgXSk7XG4gIH0pO1xuXG4gIGl0KFwia2VlcHMgYWxpYXNlcyBvZiBwcm92aWRlcnMgZGVjbGFyZWQgd2l0aG91dCBhIHNvdXJjZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0ge1xuICAgICAgdGVycmFmb3JtOiB7XG4gICAgICAgIHJlcXVpcmVkX3Byb3ZpZGVyczoge1xuICAgICAgICAgIGF3czogeyBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIiR7YXdzLm90aGVyfVwiXSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbGxlY3RNb2R1bGVQcm92aWRlckFsaWFzZXMocGFyc2VkKSkudG9FcXVhbChbXG4gICAgICB7IGxvY2FsTmFtZTogXCJhd3NcIiwgYWxpYXM6IFwib3RoZXJcIiwgc291cmNlOiB1bmRlZmluZWQgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWFkcyB0aGUgcGxhaW4gcmVmZXJlbmNlcyBhIC50Zi5qc29uIG1vZHVsZSBkZWNsYXJlc1wiLCAoKSA9PiB7XG4gICAgLy8gaGNsMmpzb24gb25seSB3cmFwcyBIQ0wgZXhwcmVzc2lvbnMgaW4gYW4gaW50ZXJwb2xhdGlvbjsgSlNPTiBzeW50YXhcbiAgICAvLyBjYXJyaWVzIHRoZSByZWZlcmVuY2UgYXMtaXMsIGFuZCBpdHMgYmxvY2tzIGNvbWUgdGhyb3VnaCB1bndyYXBwZWRcbiAgICBjb25zdCBwYXJzZWQgPSB7XG4gICAgICB0ZXJyYWZvcm06IHtcbiAgICAgICAgcmVxdWlyZWRfcHJvdmlkZXJzOiB7XG4gICAgICAgICAgbnVsbDoge1xuICAgICAgICAgICAgc291cmNlOiBcImhhc2hpY29ycC9udWxsXCIsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIm51bGwuZXh0cmFcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGV4cGVjdChjb2xsZWN0TW9kdWxlUHJvdmlkZXJBbGlhc2VzKHBhcnNlZCkpLnRvRXF1YWwoW1xuICAgICAgeyBsb2NhbE5hbWU6IFwibnVsbFwiLCBhbGlhczogXCJleHRyYVwiLCBzb3VyY2U6IFwiaGFzaGljb3JwL251bGxcIiB9LFxuICAgIF0pO1xuICB9KTtcblxuICBpdChcInJlYWRzIGFsaWFzZXMgYSBtb2R1bGUgc3ByZWFkIGFjcm9zcyAudGYgYW5kIC50Zi5qc29uIGZpbGVzXCIsICgpID0+IHtcbiAgICAvLyBoY2wyanNvbiBtZXJnZXMgYSAudGYuanNvbiBmaWxlIGludG8gdGhlIHBhcnNlZCBIQ0wgYnkgcmVjdXJzaW5nIGludG9cbiAgICAvLyB0aGUgSENMIGJsb2NrIGFycmF5LCBzbyB0aGUgSlNPTiBoYWxmIGVuZHMgdXAgYXMgYSBuYW1lZCBwcm9wZXJ0eSBvblxuICAgIC8vIHRoYXQgYXJyYXkgcmF0aGVyIHRoYW4gYW5vdGhlciBlbnRyeSBpbiBpdFxuICAgIGNvbnN0IHBhcnNlZDogYW55ID0ge1xuICAgICAgdGVycmFmb3JtOiBbXG4gICAgICAgIHsgcmVxdWlyZWRfcHJvdmlkZXJzOiBbeyBhd3M6IHsgc291cmNlOiBcImhhc2hpY29ycC9hd3NcIiB9IH1dIH0sXG4gICAgICBdLFxuICAgIH07XG4gICAgcGFyc2VkLnRlcnJhZm9ybS5yZXF1aXJlZF9wcm92aWRlcnMgPSB7XG4gICAgICBudWxsOiB7XG4gICAgICAgIHNvdXJjZTogXCJoYXNoaWNvcnAvbnVsbFwiLFxuICAgICAgICBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIm51bGwuZXh0cmFcIl0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBleHBlY3QoY29sbGVjdE1vZHVsZVByb3ZpZGVyQWxpYXNlcyhwYXJzZWQpKS50b0VxdWFsKFtcbiAgICAgIHsgbG9jYWxOYW1lOiBcIm51bGxcIiwgYWxpYXM6IFwiZXh0cmFcIiwgc291cmNlOiBcImhhc2hpY29ycC9udWxsXCIgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoXCJpZ25vcmVzIGVudHJpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0ge1xuICAgICAgdGVycmFmb3JtOiB7XG4gICAgICAgIHJlcXVpcmVkX3Byb3ZpZGVyczoge1xuICAgICAgICAgIGF3czogeyBjb25maWd1cmF0aW9uX2FsaWFzZXM6IFtcIiR7YXdzfVwiLCBcIiR7dmFyLm5vdF9hbl9hbGlhcy54fVwiXSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbGxlY3RNb2R1bGVQcm92aWRlckFsaWFzZXMocGFyc2VkKSkudG9FcXVhbChbXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiYXBwbHlNb2R1bGVQcm92aWRlckFsaWFzZXNcIiwgKCkgPT4ge1xuICBjb25zdCBjb25maWdXaXRoTW9kdWxlID0gKCk6IFRlcnJhZm9ybUNvbmZpZyA9PiAoe1xuICAgIHRlcnJhZm9ybToge30sXG4gICAgbW9kdWxlOiB7IG15X21vZHVsZTogeyBzb3VyY2U6IFwiLi9tb2RcIiB9IH0sXG4gIH0pO1xuXG4gIGl0KFwiZGVjbGFyZXMgdGhlIGFsaWFzZWQgcHJvdmlkZXJzIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgbW9kdWxlXCIsICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBhcHBseU1vZHVsZVByb3ZpZGVyQWxpYXNlcyhjb25maWdXaXRoTW9kdWxlKCksIFwibXlfbW9kdWxlXCIsIFtcbiAgICAgIHsgbG9jYWxOYW1lOiBcImF3c1wiLCBhbGlhczogXCJnbG9iYWxfcmVnaW9uXCIsIHNvdXJjZTogXCJoYXNoaWNvcnAvYXdzXCIgfSxcbiAgICAgIHsgbG9jYWxOYW1lOiBcImF3c1wiLCBhbGlhczogXCJzZWNvbmRhcnlcIiwgc291cmNlOiBcImhhc2hpY29ycC9hd3NcIiB9LFxuICAgIF0pO1xuXG4gICAgZXhwZWN0KGNvbmZpZykudG9FcXVhbCh7XG4gICAgICB0ZXJyYWZvcm06IHsgcmVxdWlyZWRfcHJvdmlkZXJzOiB7IGF3czogeyBzb3VyY2U6IFwiaGFzaGljb3JwL2F3c1wiIH0gfSB9LFxuICAgICAgcHJvdmlkZXI6IHsgYXdzOiBbeyBhbGlhczogXCJnbG9iYWxfcmVnaW9uXCIgfSwgeyBhbGlhczogXCJzZWNvbmRhcnlcIiB9XSB9LFxuICAgICAgbW9kdWxlOiB7XG4gICAgICAgIG15X21vZHVsZToge1xuICAgICAgICAgIHNvdXJjZTogXCIuL21vZFwiLFxuICAgICAgICAgIHByb3ZpZGVyczoge1xuICAgICAgICAgICAgXCJhd3MuZ2xvYmFsX3JlZ2lvblwiOiBcImF3cy5nbG9iYWxfcmVnaW9uXCIsXG4gICAgICAgICAgICBcImF3cy5zZWNvbmRhcnlcIjogXCJhd3Muc2Vjb25kYXJ5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwib21pdHMgcmVxdWlyZWRfcHJvdmlkZXJzIGZvciBhbGlhc2VzIHdpdGhvdXQgYSBkZWNsYXJlZCBzb3VyY2VcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGFwcGx5TW9kdWxlUHJvdmlkZXJBbGlhc2VzKGNvbmZpZ1dpdGhNb2R1bGUoKSwgXCJteV9tb2R1bGVcIiwgW1xuICAgICAgeyBsb2NhbE5hbWU6IFwiYXdzXCIsIGFsaWFzOiBcIm90aGVyXCIgfSxcbiAgICBdKTtcblxuICAgIGV4cGVjdChjb25maWcudGVycmFmb3JtLnJlcXVpcmVkX3Byb3ZpZGVycykudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb25maWcucHJvdmlkZXIpLnRvRXF1YWwoeyBhd3M6IFt7IGFsaWFzOiBcIm90aGVyXCIgfV0gfSk7XG4gIH0pO1xuXG4gIGl0KFwibGVhdmVzIHRoZSBjb25maWcgdW50b3VjaGVkIHdoZW4gdGhlcmUgYXJlIG5vIGFsaWFzZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFwcGx5TW9kdWxlUHJvdmlkZXJBbGlhc2VzKGNvbmZpZ1dpdGhNb2R1bGUoKSwgXCJteV9tb2R1bGVcIiwgW10pLFxuICAgICkudG9FcXVhbChjb25maWdXaXRoTW9kdWxlKCkpO1xuICB9KTtcblxuICBpdChcImxlYXZlcyB0aGUgY29uZmlnIHVudG91Y2hlZCB3aGVuIHRoZSBtb2R1bGUgY2FsbCBpcyB1bmtub3duXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBhcHBseU1vZHVsZVByb3ZpZGVyQWxpYXNlcyhjb25maWdXaXRoTW9kdWxlKCksIFwib3RoZXJfbW9kdWxlXCIsIFtcbiAgICAgICAgeyBsb2NhbE5hbWU6IFwiYXdzXCIsIGFsaWFzOiBcImdsb2JhbF9yZWdpb25cIiB9LFxuICAgICAgXSksXG4gICAgKS50b0VxdWFsKGNvbmZpZ1dpdGhNb2R1bGUoKSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwicGFja2FnZVN1YmRpclwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIFtcInRlcnJhZm9ybS1hd3MtbW9kdWxlcy9pYW0vYXdzXCIsIHVuZGVmaW5lZF0sXG4gICAgW1xuICAgICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvaWFtL2F3cy8vbW9kdWxlcy9pYW0tYWNjb3VudFwiLFxuICAgICAgXCJtb2R1bGVzL2lhbS1hY2NvdW50XCIsXG4gICAgXSxcbiAgICBbXCJnaXQ6Omh0dHBzOi8vZ2l0aHViLmNvbS9vcmcvcmVwby5naXQvL3N1Yj9yZWY9djEuMi4zXCIsIFwic3ViXCJdLFxuICAgIFtcImdpdDo6c3NoOi8vZ2l0QGdpdGh1Yi5jb20vb3JnL3JlcG8uZ2l0XCIsIHVuZGVmaW5lZF0sXG4gICAgW1wiLi9sb2NhbC9tb2R1bGVcIiwgdW5kZWZpbmVkXSxcbiAgXSkoXCJzcGxpdHMgJXNcIiwgKHNvdXJjZSwgZXhwZWN0ZWQpID0+IHtcbiAgICBleHBlY3QocGFja2FnZVN1YmRpcihzb3VyY2UgYXMgc3RyaW5nKSkudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiZmV0Y2hlZE1vZHVsZURpclwiLCAoKSA9PiB7XG4gIGxldCB3b3JrZGlyOiBzdHJpbmc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgd29ya2RpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJmZXRjaGVkLW1vZHVsZS1kaXItXCIpKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBmcy5ybVN5bmMod29ya2RpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICBmdW5jdGlvbiB3cml0ZU1hbmlmZXN0KG1vZHVsZXM6IHsgS2V5OiBzdHJpbmc7IERpcjogc3RyaW5nIH1bXSkge1xuICAgIGNvbnN0IGRpciA9IHBhdGguam9pbih3b3JrZGlyLCBcIi50ZXJyYWZvcm1cIiwgXCJtb2R1bGVzXCIpO1xuICAgIGZzLm1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oZGlyLCBcIm1vZHVsZXMuanNvblwiKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgTW9kdWxlczogbW9kdWxlcyB9KSxcbiAgICApO1xuICB9XG5cbiAgaXQoXCJwcmVmZXJzIHRoZSBkaXJlY3RvcnkgcmVjb3JkZWQgaW4gdGhlIG1vZHVsZSBtYW5pZmVzdFwiLCAoKSA9PiB7XG4gICAgd3JpdGVNYW5pZmVzdChbXG4gICAgICB7IEtleTogXCJcIiwgRGlyOiBcIi5cIiB9LFxuICAgICAgeyBLZXk6IFwibXlfbW9kdWxlXCIsIERpcjogXCIudGVycmFmb3JtL21vZHVsZXMvbXlfbW9kdWxlL21vZHVsZXMvc3ViXCIgfSxcbiAgICBdKTtcblxuICAgIGV4cGVjdChcbiAgICAgIGZldGNoZWRNb2R1bGVEaXIod29ya2RpciwgXCJteV9tb2R1bGVcIiwgXCJvcmcvbmFtZS9hd3MvL21vZHVsZXMvc3ViXCIpLFxuICAgICkudG9FcXVhbChcbiAgICAgIHBhdGguam9pbihcbiAgICAgICAgd29ya2RpcixcbiAgICAgICAgXCIudGVycmFmb3JtXCIsXG4gICAgICAgIFwibW9kdWxlc1wiLFxuICAgICAgICBcIm15X21vZHVsZVwiLFxuICAgICAgICBcIm1vZHVsZXNcIixcbiAgICAgICAgXCJzdWJcIixcbiAgICAgICksXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJmYWxscyBiYWNrIHRvIHRoZSBpbnN0YWxsIHBhdGggd2hlbiB0aGUgbWFuaWZlc3Qgd2FzIG5vdCB3cml0dGVuXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBmZXRjaGVkTW9kdWxlRGlyKHdvcmtkaXIsIFwibXlfbW9kdWxlXCIsIFwib3JnL25hbWUvYXdzLy9tb2R1bGVzL3N1YlwiKSxcbiAgICApLnRvRXF1YWwoXG4gICAgICBwYXRoLmpvaW4oXG4gICAgICAgIHdvcmtkaXIsXG4gICAgICAgIFwiLnRlcnJhZm9ybVwiLFxuICAgICAgICBcIm1vZHVsZXNcIixcbiAgICAgICAgXCJteV9tb2R1bGVcIixcbiAgICAgICAgXCJtb2R1bGVzXCIsXG4gICAgICAgIFwic3ViXCIsXG4gICAgICApLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KFwiZmFsbHMgYmFjayB0byB0aGUgaW5zdGFsbCBwYXRoIHdoZW4gdGhlIG1hbmlmZXN0IGxhY2tzIHRoZSBtb2R1bGVcIiwgKCkgPT4ge1xuICAgIHdyaXRlTWFuaWZlc3QoW3sgS2V5OiBcIlwiLCBEaXI6IFwiLlwiIH1dKTtcblxuICAgIGV4cGVjdChmZXRjaGVkTW9kdWxlRGlyKHdvcmtkaXIsIFwibXlfbW9kdWxlXCIsIFwib3JnL25hbWUvYXdzXCIpKS50b0VxdWFsKFxuICAgICAgcGF0aC5qb2luKHdvcmtkaXIsIFwiLnRlcnJhZm9ybVwiLCBcIm1vZHVsZXNcIiwgXCJteV9tb2R1bGVcIiksXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWFkcyBsb2NhbCBtb2R1bGVzIHdoZXJlIHRoZXkgYXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBmZXRjaGVkTW9kdWxlRGlyKHdvcmtkaXIsIFwibXlfbW9kdWxlXCIsIFwiLi4vbW9kXCIsIFwiL2Ficy9wYXRoL3RvL21vZFwiKSxcbiAgICApLnRvRXF1YWwoXCIvYWJzL3BhdGgvdG8vbW9kXCIpO1xuICB9KTtcbn0pO1xuIl19
|