@cdktn/hcl2cdk 0.24.0-pre.81 → 0.24.0-pre.84
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/index.d.ts +10 -10
- package/build/index.js +2 -2
- package/build/schema.d.ts +25 -237
- package/build/schema.js +13 -13
- package/package.json +8 -8
- package/src/index.ts +1 -1
- package/src/schema.ts +12 -12
package/build/index.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { isRegistryModule } from "@cdktn/provider-generator";
|
|
2
2
|
import * as rosetta from "jsii-rosetta";
|
|
3
|
-
import * as z from "zod";
|
|
4
3
|
import { attributeNameToCdktfName } from "./generation";
|
|
5
4
|
import { replaceCsharpImports, replaceGoImports, replaceJavaImports, replacePythonImports } from "./jsii-rosetta-workarounds";
|
|
6
5
|
import { ProviderSchema } from "@cdktn/commons";
|
|
7
6
|
export declare const CODE_MARKER = "// define resources here";
|
|
8
7
|
export declare function getParsedHcl(hcl: string): Promise<{
|
|
9
|
-
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
10
8
|
data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
11
9
|
import?: {
|
|
12
10
|
to: string;
|
|
@@ -14,15 +12,17 @@ export declare function getParsedHcl(hcl: string): Promise<{
|
|
|
14
12
|
provider?: any;
|
|
15
13
|
}[] | undefined;
|
|
16
14
|
locals?: Record<string, any>[] | undefined;
|
|
17
|
-
module?: Record<string,
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
module?: Record<string, {
|
|
16
|
+
[x: string]: unknown;
|
|
17
|
+
source: string;
|
|
18
|
+
}[]> | undefined;
|
|
20
19
|
output?: Record<string, {
|
|
21
|
-
sensitive?: boolean | undefined;
|
|
22
20
|
value?: any;
|
|
23
21
|
description?: string | undefined;
|
|
22
|
+
sensitive?: boolean | undefined;
|
|
24
23
|
depends_on?: string | undefined;
|
|
25
24
|
}[]> | undefined;
|
|
25
|
+
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
26
26
|
resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
27
27
|
terraform?: {
|
|
28
28
|
required_version?: string | undefined;
|
|
@@ -33,15 +33,15 @@ export declare function getParsedHcl(hcl: string): Promise<{
|
|
|
33
33
|
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
34
34
|
}[] | undefined;
|
|
35
35
|
variable?: Record<string, {
|
|
36
|
-
sensitive?: boolean | undefined;
|
|
37
36
|
type?: string | undefined;
|
|
37
|
+
default?: any;
|
|
38
38
|
description?: string | undefined;
|
|
39
|
+
sensitive?: boolean | undefined;
|
|
40
|
+
nullable?: boolean | undefined;
|
|
39
41
|
validation?: {
|
|
40
42
|
error_message: string;
|
|
41
|
-
condition
|
|
43
|
+
condition: any;
|
|
42
44
|
}[] | undefined;
|
|
43
|
-
default?: any;
|
|
44
|
-
nullable?: boolean | undefined;
|
|
45
45
|
}[]> | undefined;
|
|
46
46
|
}>;
|
|
47
47
|
export declare function parseProviderRequirements(hcl: string): Promise<Record<string, string>>;
|
package/build/index.js
CHANGED
|
@@ -69,7 +69,7 @@ async function getParsedHcl(hcl) {
|
|
|
69
69
|
catch (err) {
|
|
70
70
|
throw new Error(`Error: HCL-JSON does not conform to schema. This is not expected, please file a bug under https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug%2C+new%2C+feature%2Fconvert&template=bug-report.yml&title=
|
|
71
71
|
Please include this information:
|
|
72
|
-
${JSON.stringify(err.
|
|
72
|
+
${JSON.stringify(err.issues)}`);
|
|
73
73
|
}
|
|
74
74
|
return plan;
|
|
75
75
|
}
|
|
@@ -361,4 +361,4 @@ async function convertProject(combinedHcl, { language, providerSchema }) {
|
|
|
361
361
|
};
|
|
362
362
|
}
|
|
363
363
|
exports.convertProject = convertProject;
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUF3QztBQUN4QyxrRUFJbUM7QUFna0IxQixpR0Fua0JQLHFDQUFnQixPQW1rQk87QUE5akJ6QixnREFBa0M7QUFDbEMsd0RBQWdDO0FBQ2hDLDJDQUE2QjtBQUM3QiwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDJDQUEyQztBQUMzQyxzREFBd0M7QUFHeEMscUNBQWtDO0FBQ2xDLDZDQUFrRDtBQUNsRCw2Q0Flc0I7QUFFdEIsMkNBS3FCO0FBQ3JCLHlDQUFxRDtBQUNyRCxtQ0FBaUM7QUFFakMsNkNBQXdEO0FBeWhCN0IseUdBemhCbEIscUNBQXdCLE9BeWhCa0I7QUF4aEJuRCx5RUFLb0M7QUFFcEMsMkNBQTRDO0FBRS9CLFFBQUEsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVztJQUM1QyxjQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLHlDQUF5QztJQUN6QyxJQUFJLElBQTZCLENBQUM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBSyxFQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixrU0FBa1MsQ0FDblMsQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxJQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUNILElBQUksR0FBRyxlQUFNLENBQUMs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LEVBQUU7WUFDdkMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDekMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBakNELHdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7XG4gIGlzUmVnaXN0cnlNb2R1bGUsXG4gIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yLFxuICBDb2RlTWFrZXIsXG59IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCAqIGFzIHQgZnJvbSBcIkBiYWJlbC90eXBlc1wiO1xuaW1wb3J0IHByZXR0aWVyIGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tIFwiZ2xvYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcbmltcG9ydCAqIGFzIHJvc2V0dGEgZnJvbSBcImpzaWktcm9zZXR0YVwiO1xuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgZmluZFVzZWRSZWZlcmVuY2VzIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHtcbiAgYmFja2VuZFRvRXhwcmVzc2lvbixcbiAgZ2VuLFxuICBsb2NhbCxcbiAgbW9kdWxlSW1wb3J0cyxcbiAgbW9kdWxlcyxcbiAgb3V0cHV0LFxuICBwcm92aWRlcixcbiAgcmVzb3VyY2UsXG4gIHZhcmlhYmxlLFxuICB3cmFwQ29kZUluQ29uc3RydWN0b3IsXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIsXG4gIGJ1aWxkSW1wb3J0cyxcbiAgZ2VuZXJhdGVDb25maWdUeXBlLFxuICBpbXBvcnRzLFxufSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLCBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZm9yRWFjaFByb3ZpZGVyLFxuICBmb3JFYWNoR2xvYmFsLFxuICBmb3JFYWNoTmFtZXNwYWNlZCxcbiAgcmVzb3VyY2VTdGF0cyxcbn0gZnJvbSBcIi4vaXRlcmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRQcm92aWRlclJlcXVpcmVtZW50cyB9IGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRlFQTiB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQgeyBhdHRyaWJ1dGVOYW1lVG9DZGt0Zk5hbWUgfSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQge1xuICByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgcmVwbGFjZUdvSW1wb3J0cyxcbiAgcmVwbGFjZUphdmFJbXBvcnRzLFxuICByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbn0gZnJvbSBcIi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5pbXBvcnQgeyBQcm92aWRlclNjaGVtYSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZm9yRWFjaEltcG9ydCB9IGZyb20gXCIuL2l0ZXJhdGlvblwiO1xuXG5leHBvcnQgY29uc3QgQ09ERV9NQVJLRVIgPSBcIi8vIGRlZmluZSByZXNvdXJjZXMgaGVyZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkSGNsKGhjbDogc3RyaW5nKSB7XG4gIGxvZ2dlci5kZWJ1ZyhgUGFyc2luZyBIQ0w6ICR7aGNsfWApO1xuICAvLyBHZXQgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEhDTFxuICBsZXQganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRyeSB7XG4gICAganNvbiA9IGF3YWl0IHBhcnNlKFwidGVycmFmb3JtLnRmXCIsIGhjbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhDTDogJHtlcnJ9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9yOiBDb3VsZCBub3QgcGFyc2UgSENMLCB0aGlzIG1lYW5zIGVpdGhlciB0aGF0IHRoZSBIQ0wgcGFzc2VkIGlzIGludmFsaWQgb3IgdGhhdCB5b3UgZm91bmQgYSBidWcuIElmIHRoZSBIQ0wgc2VlbXMgdmFsaWQsIHBsZWFzZSBmaWxlIGEgYnVnIHVuZGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1idWclMkMrbmV3JTJDK2ZlYXR1cmUlMkZjb252ZXJ0JnRlbXBsYXRlPWJ1Zy1yZXBvcnQueW1sJnRpdGxlPWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBtYXRjaGVzIHRoZSBleHBlY3RlZCBzdHJ1Y3R1cmVcbiAgbGV0IHBsYW46IHouaW5mZXI8dHlwZW9mIHNjaGVtYT47XG4gIHRyeSB7XG4gICAgcGxhbiA9IHNjaGVtYS5wYXJzZShqc29uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogSENMLUpTT04gZG9lcyBub3QgY29uZm9ybSB0byBzY2hlbWEuIFRoaXMgaXMgbm90IGV4cGVjdGVkLCBwbGVhc2UgZmlsZSBhIGJ1ZyB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJTJDK25ldyUyQytmZWF0dXJlJTJGY29udmVydCZ0ZW1wbGF0ZT1idWctcmVwb3J0LnltbCZ0aXRsZT1cblBsZWFzZSBpbmNsdWRlIHRoaXMgaW5mb3JtYXRpb246XG4ke0pTT04uc3RyaW5naWZ5KChlcnIgYXMgei5ab2RFcnJvcikuZXJyb3JzKX1gKTtcbiAgfVxuXG4gIHJldHVybiBwbGFuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQcm92aWRlclJlcXVpcmVtZW50cyhoY2w6IHN0cmluZykge1xuICBsb2dnZXIuZGVidWcoXCJQYXJzaW5nIHByb3ZpZGVyIHJlcXVpcmVtZW50c1wiKTtcbiAgY29uc3QgcGxhbiA9IGF3YWl0IGdldFBhcnNlZEhjbChoY2wpO1xuICByZXR1cm4gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VG9UeXBlc2NyaXB0KFxuICBoY2w6IHN0cmluZyxcbiAgcHJvdmlkZXJTY2hlbWE6IFByb3ZpZGVyU2NoZW1hLFxuICBjb2RlQ29udGFpbmVyOiBzdHJpbmcsXG4pIHtcbiAgbG9nZ2VyLmRlYnVnKFwiQ29udmVydGluZyB0byB0eXBlc2NyaXB0XCIpO1xuICBjb25zdCBwbGFuID0gYXdhaXQgZ2V0UGFyc2VkSGNsKGhjbCk7XG5cbiAgLy8gRWFjaCBrZXkgaW4gdGhlIHNjb3BlIG5lZWRzIHRvIGJlIHVuaXF1ZSwgdGhlcmVmb3JlIHdlIHNhdmUgdGhlbSBpbiBhIHNldFxuICAvLyBFYWNoIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHVuaXF1ZSBhcyB3ZWxsLCB3ZSBzYXZlIHRoZW0gaW4gYSByZWNvcmQgc28gd2UgY2FuIGlkZW50aWZ5IGlmIHR3byB2YXJpYWJsZXMgYXJlIHRoZSBzYW1lXG4gIGNvbnN0IHNjb3BlOiBQcm9ncmFtU2NvcGUgPSB7XG4gICAgcHJvdmlkZXJTY2hlbWEsXG4gICAgcHJvdmlkZXJHZW5lcmF0b3I6IE9iamVjdC5rZXlzKFxuICAgICAgcHJvdmlkZXJTY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSxcbiAgICApLnJlZHVjZSgoY2FycnksIGZxcG4pID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyR2VuZXJhdG9yID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yKFxuICAgICAgICBuZXcgQ29kZU1ha2VyKCksXG4gICAgICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgICAgKTtcbiAgICAgIHByb3ZpZGVyR2VuZXJhdG9yLmJ1aWxkUmVzb3VyY2VNb2RlbHMoZnFwbiBhcyBGUVBOKTsgLy8gY2FuJ3QgdXNlIHRoYXQgdHlwZSBvbiB0aGUga2V5cyB5ZXQsIHNpbmNlIHdlIGFyZSBub3Qgb24gVFMgPj00LjQgeWV0IDpzYWRjYXQ6XG4gICAgICByZXR1cm4geyAuLi5jYXJyeSwgW2ZxcG5dOiBwcm92aWRlckdlbmVyYXRvciB9O1xuICAgIH0sIHt9KSxcbiAgICBjb25zdHJ1Y3RzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB2YXJpYWJsZXM6IHt9LFxuICAgIGhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb246IGZhbHNlLFxuICAgIG5vZGVJZHM6IFtdLFxuICAgIGltcG9ydGFibGVzOiBbXSxcbiAgICB0b3BMZXZlbENvbmZpZzoge30sXG4gIH07XG5cbiAgY29uc3QgZ3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaDx7XG4gICAgY29kZTogKFxuICAgICAgZzogRGlyZWN0ZWRHcmFwaDxhbnk+LFxuICAgICkgPT4gUHJvbWlzZTxBcnJheTx0LlN0YXRlbWVudCB8IHQuVmFyaWFibGVEZWNsYXJhdGlvbj4+O1xuICB9PigpO1xuXG4gIC8vIEdldCBhbGwgaXRlbXMgaW4gdGhlIEpTT04gYXMgYSBtYXAgb2YgaWQgdG8gZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIEFTVFxuICAvLyBXZSB3aWxsIHVzZSB0aGlzIHRvIGNvbnN0cnVjdCB0aGUgbm9kZXMgZm9yIGEgZGVwZW5kZW5jeSBncmFwaFxuICAvLyBXZSBuZWVkIHRvIHVzZSBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSB0aGUgc2FtZSBub2RlIGhhcyBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gaWYgaXQncyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgb25lXG4gIGNvbnN0IG5vZGVNYXA6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgY29kZTogKFxuICAgICAgICBnOiB0eXBlb2YgZ3JhcGgsXG4gICAgICApID0+IFByb21pc2U8QXJyYXk8dC5TdGF0ZW1lbnQgfCB0LlZhcmlhYmxlRGVjbGFyYXRpb24+PjtcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1cbiAgPiA9IHtcbiAgICAuLi5mb3JFYWNoUHJvdmlkZXIoc2NvcGUsIHBsYW4ucHJvdmlkZXIsIHByb3ZpZGVyKSxcbiAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcInZhclwiLCBwbGFuLnZhcmlhYmxlLCB2YXJpYWJsZSksXG4gICAgLy8gbG9jYWxzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICBzY29wZSxcbiAgICAgIFwibG9jYWxcIixcbiAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgID8gcGxhbi5sb2NhbHMucmVkdWNlKChjYXJyeSwgbG9jYWxzKSA9PiAoeyAuLi5jYXJyeSwgLi4ubG9jYWxzIH0pLCB7fSlcbiAgICAgICAgOiB7fSxcbiAgICAgIGxvY2FsLFxuICAgICksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJvdXRcIiwgcGxhbi5vdXRwdXQsIG91dHB1dCksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJtb2R1bGVcIiwgcGxhbi5tb2R1bGUsIG1vZHVsZXMpLFxuICAgIC4uLmZvckVhY2hJbXBvcnQoc2NvcGUsIFwiaW1wb3J0XCIsIHBsYW4uaW1wb3J0LCBpbXBvcnRzKSxcbiAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5yZXNvdXJjZSwgcmVzb3VyY2UpLFxuICAgIC4uLmZvckVhY2hOYW1lc3BhY2VkKHNjb3BlLCBwbGFuLmRhdGEsIHJlc291cmNlLCBcImRhdGFcIiksXG4gIH07XG5cbiAgLy8gQWRkIGFsbCBub2RlcyB0byB0aGUgZGVwZW5kZW5jeSBncmFwaCBzbyB3ZSBjYW4gZGV0ZWN0IGlmIGFuIGVkZ2UgaXMgYWRkZWQgZm9yIGFuIHVua25vd24gbGlua1xuICBPYmplY3QuZW50cmllcyhub2RlTWFwKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEFkZGluZyBub2RlICcke2tleX0nIHRvIGdyYXBoYCk7XG4gICAgZ3JhcGguYWRkTm9kZShrZXksIHZhbHVlKTtcbiAgfSk7XG5cbiAgLy8gRmluZGluZyByZWZlcmVuY2VzIGJlY29tZXMgZWFzaWVyIG9mIHRoZSB0byBiZSByZWZlcmVuY2VkIGlkcyBhcmUgYWxyZWFkeSBrbm93blxuICBjb25zdCBub2RlSWRzID0gT2JqZWN0LmtleXMobm9kZU1hcCk7XG4gIHNjb3BlLm5vZGVJZHMgPSBub2RlSWRzO1xuICBhc3luYyBmdW5jdGlvbiBhZGRFZGdlcyhpZDogc3RyaW5nLCB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jaykge1xuICAgIChhd2FpdCBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgdmFsdWUpKS5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWdyYXBoLmhhc0RpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQpICYmXG4gICAgICAgIGdyYXBoLmhhc05vZGUocmVmLnJlZmVyZW5jZWUuaWQpIC8vIGluIGNhc2UgdGhlIHJlZmVyZW5jZWUgaXMgYSBkeW5hbWljIHZhcmlhYmxlXG4gICAgICApIHtcbiAgICAgICAgaWYgKCFncmFwaC5oYXNOb2RlKGlkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgZGVwZW5kZW5jeSBncmFwaCBpcyBleHBlY3RlZCB0byBsaW5rIGZyb20gJHtcbiAgICAgICAgICAgICAgcmVmLnJlZmVyZW5jZWUuaWRcbiAgICAgICAgICAgIH0gdG8gJHtpZH0gYnV0ICR7aWR9IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgVGhlc2Ugbm9kZXMgZXhpc3Q6ICR7Z3JhcGgubm9kZXMoKS5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBncmFwaCBzaG91bGQgaGF2ZSBubyBzZWxmLXJlZmVyZW5jZXNcbiAgICAgICAgaWYgKGlkID09PSByZWYucmVmZXJlbmNlZS5pZCkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU2tpcHBpbmcgc2VsZi1yZWZlcmVuY2UgZm9yICR7aWR9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBBZGRpbmcgZWRnZSBmcm9tICR7cmVmLnJlZmVyZW5jZWUuaWR9IHRvICR7aWR9YCk7XG4gICAgICAgIGdyYXBoLmFkZERpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQsIHsgcmVmIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gV2UgcmVjdXJzaXZlbHkgaW5zcGVjdCBlYWNoIHJlc291cmNlIHZhbHVlIHRvIGZpbmQgcmVmZXJlbmNlcyB0byBvdGhlciB2YWx1ZXNcbiAgLy8gV2UgYWRkIHRoZXNlIHRvIGEgZGVwZW5kZW5jeSBncmFwaCBzbyB0aGF0IHRoZSBwcm9ncmFtbWluZyBjb2RlIGhhcyB0aGUgcmlnaHQgb3JkZXJcbiAgYXN5bmMgZnVuY3Rpb24gYWRkR2xvYmFsRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX2tleTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdmFsdWU6IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4gICkge1xuICAgIGF3YWl0IGFkZEVkZ2VzKGlkLCB2YWx1ZSk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gYWRkUHJvdmlkZXJFZGdlcyhcbiAgICBfc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBhZGROYW1lc3BhY2VkRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX3R5cGU6IHN0cmluZyxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIE9iamVjdC52YWx1ZXMoe1xuICAgICAgLi4uZm9yRWFjaFByb3ZpZGVyKHNjb3BlLCBwbGFuLnByb3ZpZGVyLCBhZGRQcm92aWRlckVkZ2VzKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwidmFyXCIsIHBsYW4udmFyaWFibGUsIGFkZEdsb2JhbEVkZ2VzKSxcbiAgICAgIC8vIGxvY2FscyBhcmUgYSBzcGVjaWFsIGNhc2VcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBcImxvY2FsXCIsXG4gICAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgICAgPyBwbGFuLmxvY2Fscy5yZWR1Y2UoKGNhcnJ5LCBsb2NhbHMpID0+ICh7IC4uLmNhcnJ5LCAuLi5sb2NhbHMgfSksIHt9KVxuICAgICAgICAgIDoge30sXG4gICAgICAgIGFkZEdsb2JhbEVkZ2VzLFxuICAgICAgKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwib3V0XCIsIHBsYW4ub3V0cHV0LCBhZGRHbG9iYWxFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcIm1vZHVsZVwiLCBwbGFuLm1vZHVsZSwgYWRkR2xvYmFsRWRnZXMpLFxuICAgICAgLi4uZm9yRWFjaE5hbWVzcGFjZWQoc2NvcGUsIHBsYW4ucmVzb3VyY2UsIGFkZE5hbWVzcGFjZWRFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5kYXRhLCBhZGROYW1lc3BhY2VkRWRnZXMsIFwiZGF0YVwiKSxcbiAgICB9KS5tYXAoKHsgY29kZTogYWRkRWRnZXNUb0dyYXBoIH0pID0+IGFkZEVkZ2VzVG9HcmFwaChncmFwaCkpLFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhgR3JhcGg6ICR7SlNPTi5zdHJpbmdpZnkoZ3JhcGgsIG51bGwsIDIpfWApO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIHRvIGFzc2VtYmxlIHRoZSB0eXBlc2NyaXB0IGNvZGVgKTtcbiAgLy8gV2UgdHJhdmVyc2UgdGhlIGRlcGVuZGVuY3kgZ3JhcGggdG8gZ2V0IHRoZSB1bm9yZGVyZWQgSlNPTiBub2RlcyBpbnRvIGFuIG9yZGVyZWQgYXJyYXlcbiAgLy8gd2hlcmUgbm8gbm9kZSBpcyByZWZlcmVuY2VkIGJlZm9yZSBpdCdzIGRlZmluZWRcbiAgLy8gQXMgd2UgY2hlY2sgdGhhdCB0aGUgbm9kZXMgb24gYm90aCBlbmRzIG9mIGFuIGVkZ2UgZXhpc3Qgd2UgY2FuIGJlIHN1cmVcbiAgLy8gdGhhdCBubyBpbmZpbml0ZSBsb29wIGV4aXN0cywgdGhlcmUgY2FuIGJlIG5vIHN0cmF5IGRlcGVuZGVuY3kgb24gYSBub2RlXG4gIGNvbnN0IGV4cHJlc3Npb25zOiB0LlN0YXRlbWVudFtdID0gW107XG4gIGxldCBub2Rlc1RvVmlzaXQgPSBbLi4ubm9kZUlkc107XG4gIC8vIFRoaXMgZW5zdXJlcyB3ZSBkZXRlY3QgY3ljbGVzIGFuZCBkb24ndCBlbmQgdXAgaW4gYW4gZW5kbGVzcyBsb29wXG4gIGxldCBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uID0gMDtcbiAgZG8ge1xuICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSAwO1xuXG4gICAgLy8gRmluZCBuZXh0IG5vZGVzIHRvIHZpc2l0XG4gICAgY29uc3Qgbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzID0gZ3JhcGgubWFwTm9kZXMoKG5vZGVJZCwgeyBjb2RlIH0pID0+IHtcbiAgICAgIGlmICghbm9kZXNUb1Zpc2l0LmluY2x1ZGVzKG5vZGVJZCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdW5yZXNvbHZlZERlcGVuZGVuY2llcyA9IGdyYXBoXG4gICAgICAgIC5pbk5laWdoYm9ycyhub2RlSWQpXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IG5vZGVzVG9WaXNpdC5pbmNsdWRlcyhpdGVtKSk7XG5cbiAgICAgIGlmICh1bnJlc29sdmVkRGVwZW5kZW5jaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBub2Rlc1RvVmlzaXQgPSBub2Rlc1RvVmlzaXQuZmlsdGVyKChpZCkgPT4gbm9kZUlkICE9PSBpZCk7XG4gICAgICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uICsgMTtcblxuICAgICAgICBsb2dnZXIuZGVidWcoYFZpc2l0aW5nIG5vZGUgJHtub2RlSWR9YCk7XG4gICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIC8vIEdlbmVyYXRlIHRoZSBjb2RlIGZvciB0aGUgbm9kZXNcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2Ygbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzKSB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICBleHByZXNzaW9ucy5wdXNoKC4uLihhd2FpdCBjb2RlKGdyYXBoKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGAke25vZGVzVG9WaXNpdC5sZW5ndGh9IHVudmlzaXRlZCBub2RlczogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfSB3aGlsZSAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDAgJiYgbm9kZXNWaXNpdGVkVGhpc0l0ZXJhdGlvbiAhPSAwKTtcblxuICBpZiAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVGhlcmUgYXJlICR7XG4gICAgICAgIG5vZGVzVG9WaXNpdC5sZW5ndGhcbiAgICAgIH0gdGVycmFmb3JtIGVsZW1lbnRzIHRoYXQgY291bGQgbm90IGJlIHZpc2l0ZWQuXG4gICAgICBUaGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjeWNsZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaC5cbiAgICAgIFRoZXNlIG5vZGVzIGFyZTogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtub2Rlc1RvVmlzaXQubGVuZ3RofSB1bnZpc2l0ZWQgbm9kZXM6ICR7bm9kZXNUb1Zpc2l0LmpvaW4oXCIsIFwiKX1gLFxuICApO1xuXG4gIGNvbnN0IGJhY2tlbmRFeHByZXNzaW9ucyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBsYW4udGVycmFmb3JtPy5tYXAoKHRlcnJhZm9ybSkgPT5cbiAgICAgICAgYmFja2VuZFRvRXhwcmVzc2lvbihzY29wZSwgdGVycmFmb3JtLmJhY2tlbmQpLFxuICAgICAgKSB8fCBbUHJvbWlzZS5yZXNvbHZlKFtdKV0sXG4gICAgKVxuICApLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IFsuLi5jYXJyeSwgLi4uaXRlbV0sIFtdKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYFVzaW5nIHRoZXNlIGJhY2tlbmQgZXhwcmVzc2lvbnM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBiYWNrZW5kRXhwcmVzc2lvbnMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgY29sbGVjdCBhbGwgbW9kdWxlIHNvdXJjZXNcbiAgY29uc3QgbW9kdWxlUmVxdWlyZW1lbnRzID0gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3QudmFsdWVzKHBsYW4ubW9kdWxlIHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgIChjYXJyeSwgbW9kdWxlQmxvY2spID0+IFtcbiAgICAgICAgICAuLi5jYXJyeSxcbiAgICAgICAgICAuLi5tb2R1bGVCbG9jay5yZWR1Y2UoXG4gICAgICAgICAgICAoYXJyLCB7IHNvdXJjZSwgdmVyc2lvbiB9KSA9PiBbXG4gICAgICAgICAgICAgIC4uLmFycixcbiAgICAgICAgICAgICAgdmVyc2lvbiA/IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAgOiBzb3VyY2UsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICApIHx8IFtdLFxuICAgICksXG4gIF07XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBGb3VuZCB0aGVzZSBtb2R1bGVzOiAke0pTT04uc3RyaW5naWZ5KG1vZHVsZVJlcXVpcmVtZW50cywgbnVsbCwgMil9YCxcbiAgKTtcblxuICBpZiAoT2JqZWN0LmtleXMocGxhbi52YXJpYWJsZSB8fCB7fSkubGVuZ3RoID4gMCAmJiBleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRlcnJhZm9ybSBWYXJpYWJsZXMgYXJlIG5vdCBhbHdheXMgdGhlIGJlc3QgZml0IGZvciBnZXR0aW5nIGlucHV0cyBpbiB0aGUgY29udGV4dCBvZiBUZXJyYWZvcm0gQ0RLLlxuWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL2Nka3RuLmlvL2RvY3MvY29uY2VwdHMvdmFyaWFibGVzLWFuZC1vdXRwdXRzI2lucHV0LXZhcmlhYmxlc2AsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyUmVxdWlyZW1lbnRzID0gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgRm91bmQgdGhlc2UgcHJvdmlkZXIgcmVxdWlyZW1lbnRzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgcHJvdmlkZXJSZXF1aXJlbWVudHMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgYWRkIGEgY29tbWVudCBpZiB0aGVyZSBhcmUgcHJvdmlkZXJzIHdpdGggbWlzc2luZyBzY2hlbWEgaW5mb3JtYXRpb25cbiAgY29uc3QgcHJvdmlkZXJzTGFja2luZ1NjaGVtYSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyUmVxdWlyZW1lbnRzKS5maWx0ZXIoXG4gICAgKHByb3ZpZGVyTmFtZSkgPT5cbiAgICAgIHByb3ZpZGVyTmFtZSAhPT0gXCJ0ZXJyYWZvcm1cIiAmJlxuICAgICAgIU9iamVjdC5rZXlzKHByb3ZpZGVyU2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLnNvbWUoKHNjaGVtYU5hbWUpID0+XG4gICAgICAgIHNjaGVtYU5hbWUuZW5kc1dpdGgocHJvdmlkZXJOYW1lKSxcbiAgICAgICksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtcbiAgICAgIHByb3ZpZGVyc0xhY2tpbmdTY2hlbWEubGVuZ3RoXG4gICAgfSBwcm92aWRlcnMgbGFjayBzY2hlbWEgaW5mb3JtYXRpb246ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFwiLCBcIil9YCxcbiAgKTtcblxuICBpZiAocHJvdmlkZXJzTGFja2luZ1NjaGVtYS5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRoZSBmb2xsb3dpbmcgcHJvdmlkZXJzIGFyZSBtaXNzaW5nIHNjaGVtYSBpbmZvcm1hdGlvbiBhbmQgbWlnaHQgbmVlZCBtYW51YWwgYWRqdXN0bWVudHMgdG8gc3ludGhlc2l6ZSBjb3JyZWN0bHk6ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFxuICAgICAgICBcIiwgXCIsXG4gICAgICApfS5cbkZvciBhIG1vcmUgcHJlY2lzZSBjb252ZXJzaW9uIHBsZWFzZSB1c2UgdGhlIC0tcHJvdmlkZXIgZmxhZyBpbiBjb252ZXJ0LmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFsd2F5cyBhZGQgY29uc3RydWN0c1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkNvbnN0cnVjdFwiLFxuICAgIHByb3ZpZGVyOiBcImNvbnN0cnVjdHNcIixcbiAgfSk7XG5cbiAgaWYgKHNjb3BlLmhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb24pIHtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiVG9rZW5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgc3BlY2lmaWMgaW1wb3J0IGZvciBjb2RlQ29udGFpbmVyXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIoc2NvcGUsIGNvZGVDb250YWluZXIpO1xuICBjb25zdCBjb25zdHJ1Y3RJbXBvcnRzID0gYnVpbGRJbXBvcnRzKHNjb3BlLmltcG9ydGFibGVzKTtcblxuICBjb25zdCBjb2RlID0gWy4uLihiYWNrZW5kRXhwcmVzc2lvbnMgfHwgW10pLCAuLi5leHByZXNzaW9uc107XG4gIGNvbnN0IGNvbmZpZ1R5cGVOYW1lID1cbiAgICBPYmplY3Qua2V5cyhzY29wZS50b3BMZXZlbENvbmZpZykubGVuZ3RoID4gMCA/IFwiTXlDb25maWdcIiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjbGFzc0NvbmZpZyA9IGNvbmZpZ1R5cGVOYW1lXG4gICAgPyBbZ2VuZXJhdGVDb25maWdUeXBlKGNvbmZpZ1R5cGVOYW1lLCBzY29wZS50b3BMZXZlbENvbmZpZyldXG4gICAgOiBbXTtcblxuICAvLyBXZSBzcGxpdCB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgc28gdGhhdCB1c2VycyBjYW4gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB3aGF0IHRvIGluc2VydCB3aGVyZVxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBpbXBvcnRzIGFuZCBjb2RlIGJlY2F1c2Ugcm9zZXR0YSB3b24ndCBiZSBhYmxlIHRvIHRyYW5zbGF0ZSB0aGVtXG4gICAgYWxsOiBhd2FpdCBnZW4oW1xuICAgICAgLi4uY29uc3RydWN0SW1wb3J0cyxcbiAgICAgIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpLFxuICAgICAgLi4uY2xhc3NDb25maWcsXG4gICAgICB3cmFwQ29kZUluQ29uc3RydWN0b3IoXG4gICAgICAgIGNvZGVDb250YWluZXIsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIFwiTXlDb252ZXJ0ZWRDb2RlXCIsXG4gICAgICAgIGNvbmZpZ1R5cGVOYW1lLFxuICAgICAgKSxcbiAgICBdKSxcbiAgICBpbXBvcnRzOiBhd2FpdCBnZW4oWy4uLmNvbnN0cnVjdEltcG9ydHMsIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpXSksXG4gICAgY29kZTogYXdhaXQgZ2VuKGNvZGUpLFxuICAgIHByb3ZpZGVyczogT2JqZWN0LmVudHJpZXMocHJvdmlkZXJSZXF1aXJlbWVudHMpLm1hcCgoW3NvdXJjZSwgdmVyc2lvbl0pID0+XG4gICAgICB2ZXJzaW9uID09PSBcIipcIiA/IHNvdXJjZSA6IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAsXG4gICAgKSxcbiAgICBtb2R1bGVzOiBtb2R1bGVSZXF1aXJlbWVudHMsXG4gICAgLy8gV2UgdHJhY2sgc29tZSB1c2FnZSBkYXRhIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyB1c2VkXG4gICAgc3RhdHM6IHtcbiAgICAgIG51bWJlck9mTW9kdWxlczogbW9kdWxlUmVxdWlyZW1lbnRzLmxlbmd0aCxcbiAgICAgIG51bWJlck9mUHJvdmlkZXJzOiBPYmplY3Qua2V5cyhwcm92aWRlclJlcXVpcmVtZW50cykubGVuZ3RoLFxuICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZVN0YXRzKHBsYW4ucmVzb3VyY2UgfHwge30pLFxuICAgICAgZGF0YTogcmVzb3VyY2VTdGF0cyhwbGFuLmRhdGEgfHwge30pLFxuICAgICAgY29udmVydGVkTGluZXM6IGhjbC5zcGxpdChcIlxcblwiKS5sZW5ndGgsXG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBGaWxlID0geyBjb250ZW50czogc3RyaW5nOyBmaWxlTmFtZTogc3RyaW5nIH07XG5jb25zdCB0cmFuc2xhdG9ycyA9IHtcbiAgcHl0aG9uOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuUHl0aG9uVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbiAgfSxcbiAgamF2YToge1xuICAgIHZpc2l0b3I6ICgpID0+IG5ldyByb3NldHRhLkphdmFWaXNpdG9yKCksXG4gICAgcG9zdFRyYW5zbGF0aW9uTXV0YXRpb246IHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgfSxcbiAgY3NoYXJwOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuQ1NoYXJwVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgfSxcbiAgZ286IHtcbiAgICB2aXNpdG9yOiAoKSA9PiBuZXcgcm9zZXR0YS5Hb1Zpc2l0b3IoKSxcbiAgICBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbjogcmVwbGFjZUdvSW1wb3J0cyxcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHRyYW5zbGF0b3JGb3JMYW5ndWFnZShsYW5ndWFnZToga2V5b2YgdHlwZW9mIHRyYW5zbGF0b3JzKSB7XG4gIHJldHVybiAoZmlsZTogRmlsZSwgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3I6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB7IHZpc2l0b3IsIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uIH0gPSB0cmFuc2xhdG9yc1tsYW5ndWFnZV07XG4gICAgY29uc3QgeyB0cmFuc2xhdGlvbiwgZGlhZ25vc3RpY3MgfSA9IHJvc2V0dGEudHJhbnNsYXRlVHlwZVNjcmlwdChcbiAgICAgIGZpbGUsXG4gICAgICB2aXNpdG9yKCksXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciA/IHsgaW5jbHVkZUNvbXBpbGVyRGlhZ25vc3RpY3M6IHRydWUgfSA6IHt9LFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciAmJlxuICAgICAgZGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnKSA9PiBkaWFnLmlzRXJyb3IpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ291bGQgbm90IHRyYW5zbGF0ZSBUUyB0byAke2xhbmd1YWdlfTpcXG4ke2ZpbGUuY29udGVudHN9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgdHJhbnNsYXRlIFRTIHRvICR7bGFuZ3VhZ2V9OiAke2RpYWdub3N0aWNzXG4gICAgICAgICAgLm1hcCgoZGlhZykgPT4gZGlhZy5mb3JtYXR0ZWRNZXNzYWdlKVxuICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbih0cmFuc2xhdGlvbik7XG4gIH07XG59XG5cbnR5cGUgQ29udmVydE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgdG8gY29udmVydCB0b1xuICAgKi9cbiAgbGFuZ3VhZ2U6IGtleW9mIHR5cGVvZiB0cmFuc2xhdG9ycyB8IFwidHlwZXNjcmlwdFwiO1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIHNjaGVtYSB0byB1c2UgZm9yIGNvbnZlcnNpb25cbiAgICovXG4gIHByb3ZpZGVyU2NoZW1hOiBQcm92aWRlclNjaGVtYTtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGNsYXNzIHRvIGV4dGVuZCBmcm9tLiBEZWZhdWx0cyB0byBgY29uc3RydWN0cy5Db25zdHJ1Y3RgXG4gICAqL1xuICBjb2RlQ29udGFpbmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdHJhbnNsYXRpb24gZmFpbHNcbiAgICogRGVmYXVsdHMgdG8gZmFsc2VcbiAgICovXG4gIHRocm93T25UcmFuc2xhdGlvbkVycm9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KFxuICBoY2w6IHN0cmluZyxcbiAge1xuICAgIGxhbmd1YWdlLFxuICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgIHRocm93T25UcmFuc2xhdGlvbkVycm9yID0gZmFsc2UsXG4gICAgY29kZUNvbnRhaW5lciA9IFwiY2RrdG4uVGVycmFmb3JtU3RhY2tcIixcbiAgfTogQ29udmVydE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBcInRlcnJhZm9ybS50ZlwiO1xuICBjb25zdCB0cmFuc2xhdGVyID1cbiAgICBsYW5ndWFnZSA9PT0gXCJ0eXBlc2NyaXB0XCJcbiAgICAgID8gKGZpbGU6IEZpbGUsIF90aHJvd09uVHJhbnNsYXRpb25FcnJvcjogYm9vbGVhbikgPT4gZmlsZS5jb250ZW50c1xuICAgICAgOiB0cmFuc2xhdG9yRm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIGlmICghdHJhbnNsYXRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGxhbmd1YWdlIHVzZWQ6IFwiICsgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgY29uc3QgdHNDb2RlID0gYXdhaXQgY29udmVydFRvVHlwZXNjcmlwdChoY2wsIHByb3ZpZGVyU2NoZW1hLCBjb2RlQ29udGFpbmVyKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnRzQ29kZSxcbiAgICBhbGw6IHRyYW5zbGF0ZXIoXG4gICAgICB7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmFsbCB9LFxuICAgICAgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3IsXG4gICAgKSxcbiAgICBpbXBvcnRzOiB0cmFuc2xhdGVyKHsgZmlsZU5hbWUsIGNvbnRlbnRzOiB0c0NvZGUuaW1wb3J0cyB9LCBmYWxzZSksXG4gICAgY29kZTogdHJhbnNsYXRlcih7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmNvZGUgfSwgZmFsc2UpLFxuICAgIHN0YXRzOiB7IC4uLnRzQ29kZS5zdGF0cywgbGFuZ3VhZ2UgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlcnJhZm9ybUNvbmZpZ0Zyb21EaXIoaW1wb3J0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUoaW1wb3J0UGF0aCk7XG4gIGNvbnN0IGZpbGVDb250ZW50cyA9IGdsb2JcbiAgICAuc3luYyhcIi4vKi50ZlwiLCB7IGN3ZDogYWJzUGF0aCB9KVxuICAgIC5tYXAoKHApID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUoYWJzUGF0aCwgcCksIFwidXRmOFwiKSk7XG5cbiAgcmV0dXJuIGZpbGVDb250ZW50cy5qb2luKFwiXFxuXCIpO1xufVxuXG50eXBlIENka3RmSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICB0ZXJyYWZvcm1Qcm92aWRlcnM6IGFueVtdO1xuICB0ZXJyYWZvcm1Nb2R1bGVzOiBhbnlbXTtcbn07XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udmVydFByb2plY3QoXG4gIGNvbWJpbmVkSGNsOiBzdHJpbmcsXG4gIHsgbGFuZ3VhZ2UsIHByb3ZpZGVyU2NoZW1hIH06IENvbnZlcnRPcHRpb25zLFxuKSB7XG4gIGlmIChsYW5ndWFnZSAhPT0gXCJ0eXBlc2NyaXB0XCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBsYW5ndWFnZSB1c2VkOiBcIiArIGxhbmd1YWdlKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbXBvcnRzLFxuICAgIGNvZGUsXG4gICAgcHJvdmlkZXJzLFxuICAgIG1vZHVsZXM6IHRmTW9kdWxlcyxcbiAgICBzdGF0cyxcbiAgfSA9IGF3YWl0IGNvbnZlcnQoY29tYmluZWRIY2wsIHtcbiAgICBsYW5ndWFnZSxcbiAgICBwcm92aWRlclNjaGVtYSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiAoaW5wdXRNYWluRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRNYWluRmlsZSA9IFtpbXBvcnRzLCBpbnB1dE1haW5GaWxlXS5qb2luKFwiXFxuXCIpO1xuICAgICAgY29uc3Qgb3V0cHV0TWFpbkZpbGUgPSBpbXBvcnRNYWluRmlsZS5yZXBsYWNlKENPREVfTUFSS0VSLCBjb2RlKTtcbiAgICAgIHJldHVybiBwcmV0dGllci5mb3JtYXQob3V0cHV0TWFpbkZpbGUsIHsgcGFyc2VyOiBcImJhYmVsXCIgfSk7XG4gICAgfSxcbiAgICBjZGt0Zkpzb246IChpbnB1dENka3RmSnNvbjogQ2RrdGZKc29uKSA9PiB7XG4gICAgICBjb25zdCBjZGt0Zkpzb24gPSB7IC4uLmlucHV0Q2RrdGZKc29uIH07XG4gICAgICBjZGt0Zkpzb24udGVycmFmb3JtUHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICAgICAgY2RrdGZKc29uLnRlcnJhZm9ybU1vZHVsZXMgPSB0Zk1vZHVsZXM7XG4gICAgICByZXR1cm4gY2RrdGZKc29uO1xuICAgIH0sXG4gICAgc3RhdHMsXG4gIH07XG59XG5cbmV4cG9ydCB7IGlzUmVnaXN0cnlNb2R1bGUsIGF0dHJpYnV0ZU5hbWVUb0Nka3RmTmFtZSB9O1xuIl19
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUF3QztBQUN4QyxrRUFJbUM7QUFna0IxQixpR0Fua0JQLHFDQUFnQixPQW1rQk87QUE5akJ6QixnREFBa0M7QUFDbEMsd0RBQWdDO0FBQ2hDLDJDQUE2QjtBQUM3QiwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDJDQUEyQztBQUMzQyxzREFBd0M7QUFHeEMscUNBQWtDO0FBQ2xDLDZDQUFrRDtBQUNsRCw2Q0Flc0I7QUFFdEIsMkNBS3FCO0FBQ3JCLHlDQUFxRDtBQUNyRCxtQ0FBaUM7QUFFakMsNkNBQXdEO0FBeWhCN0IseUdBemhCbEIscUNBQXdCLE9BeWhCa0I7QUF4aEJuRCx5RUFLb0M7QUFFcEMsMkNBQTRDO0FBRS9CLFFBQUEsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVztJQUM1QyxjQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLHlDQUF5QztJQUN6QyxJQUFJLElBQTZCLENBQUM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBSyxFQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixrU0FBa1MsQ0FDblMsQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxJQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUNILElBQUksR0FBRyxlQUFNLENBQUMs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LEVBQUU7WUFDdkMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDekMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBakNELHdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7XG4gIGlzUmVnaXN0cnlNb2R1bGUsXG4gIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yLFxuICBDb2RlTWFrZXIsXG59IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCAqIGFzIHQgZnJvbSBcIkBiYWJlbC90eXBlc1wiO1xuaW1wb3J0IHByZXR0aWVyIGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tIFwiZ2xvYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcbmltcG9ydCAqIGFzIHJvc2V0dGEgZnJvbSBcImpzaWktcm9zZXR0YVwiO1xuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgZmluZFVzZWRSZWZlcmVuY2VzIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHtcbiAgYmFja2VuZFRvRXhwcmVzc2lvbixcbiAgZ2VuLFxuICBsb2NhbCxcbiAgbW9kdWxlSW1wb3J0cyxcbiAgbW9kdWxlcyxcbiAgb3V0cHV0LFxuICBwcm92aWRlcixcbiAgcmVzb3VyY2UsXG4gIHZhcmlhYmxlLFxuICB3cmFwQ29kZUluQ29uc3RydWN0b3IsXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIsXG4gIGJ1aWxkSW1wb3J0cyxcbiAgZ2VuZXJhdGVDb25maWdUeXBlLFxuICBpbXBvcnRzLFxufSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLCBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZm9yRWFjaFByb3ZpZGVyLFxuICBmb3JFYWNoR2xvYmFsLFxuICBmb3JFYWNoTmFtZXNwYWNlZCxcbiAgcmVzb3VyY2VTdGF0cyxcbn0gZnJvbSBcIi4vaXRlcmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRQcm92aWRlclJlcXVpcmVtZW50cyB9IGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRlFQTiB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQgeyBhdHRyaWJ1dGVOYW1lVG9DZGt0Zk5hbWUgfSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQge1xuICByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgcmVwbGFjZUdvSW1wb3J0cyxcbiAgcmVwbGFjZUphdmFJbXBvcnRzLFxuICByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbn0gZnJvbSBcIi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5pbXBvcnQgeyBQcm92aWRlclNjaGVtYSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZm9yRWFjaEltcG9ydCB9IGZyb20gXCIuL2l0ZXJhdGlvblwiO1xuXG5leHBvcnQgY29uc3QgQ09ERV9NQVJLRVIgPSBcIi8vIGRlZmluZSByZXNvdXJjZXMgaGVyZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkSGNsKGhjbDogc3RyaW5nKSB7XG4gIGxvZ2dlci5kZWJ1ZyhgUGFyc2luZyBIQ0w6ICR7aGNsfWApO1xuICAvLyBHZXQgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEhDTFxuICBsZXQganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRyeSB7XG4gICAganNvbiA9IGF3YWl0IHBhcnNlKFwidGVycmFmb3JtLnRmXCIsIGhjbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhDTDogJHtlcnJ9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9yOiBDb3VsZCBub3QgcGFyc2UgSENMLCB0aGlzIG1lYW5zIGVpdGhlciB0aGF0IHRoZSBIQ0wgcGFzc2VkIGlzIGludmFsaWQgb3IgdGhhdCB5b3UgZm91bmQgYSBidWcuIElmIHRoZSBIQ0wgc2VlbXMgdmFsaWQsIHBsZWFzZSBmaWxlIGEgYnVnIHVuZGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1idWclMkMrbmV3JTJDK2ZlYXR1cmUlMkZjb252ZXJ0JnRlbXBsYXRlPWJ1Zy1yZXBvcnQueW1sJnRpdGxlPWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBtYXRjaGVzIHRoZSBleHBlY3RlZCBzdHJ1Y3R1cmVcbiAgbGV0IHBsYW46IHouaW5mZXI8dHlwZW9mIHNjaGVtYT47XG4gIHRyeSB7XG4gICAgcGxhbiA9IHNjaGVtYS5wYXJzZShqc29uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogSENMLUpTT04gZG9lcyBub3QgY29uZm9ybSB0byBzY2hlbWEuIFRoaXMgaXMgbm90IGV4cGVjdGVkLCBwbGVhc2UgZmlsZSBhIGJ1ZyB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJTJDK25ldyUyQytmZWF0dXJlJTJGY29udmVydCZ0ZW1wbGF0ZT1idWctcmVwb3J0LnltbCZ0aXRsZT1cblBsZWFzZSBpbmNsdWRlIHRoaXMgaW5mb3JtYXRpb246XG4ke0pTT04uc3RyaW5naWZ5KChlcnIgYXMgei5ab2RFcnJvcikuaXNzdWVzKX1gKTtcbiAgfVxuXG4gIHJldHVybiBwbGFuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQcm92aWRlclJlcXVpcmVtZW50cyhoY2w6IHN0cmluZykge1xuICBsb2dnZXIuZGVidWcoXCJQYXJzaW5nIHByb3ZpZGVyIHJlcXVpcmVtZW50c1wiKTtcbiAgY29uc3QgcGxhbiA9IGF3YWl0IGdldFBhcnNlZEhjbChoY2wpO1xuICByZXR1cm4gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VG9UeXBlc2NyaXB0KFxuICBoY2w6IHN0cmluZyxcbiAgcHJvdmlkZXJTY2hlbWE6IFByb3ZpZGVyU2NoZW1hLFxuICBjb2RlQ29udGFpbmVyOiBzdHJpbmcsXG4pIHtcbiAgbG9nZ2VyLmRlYnVnKFwiQ29udmVydGluZyB0byB0eXBlc2NyaXB0XCIpO1xuICBjb25zdCBwbGFuID0gYXdhaXQgZ2V0UGFyc2VkSGNsKGhjbCk7XG5cbiAgLy8gRWFjaCBrZXkgaW4gdGhlIHNjb3BlIG5lZWRzIHRvIGJlIHVuaXF1ZSwgdGhlcmVmb3JlIHdlIHNhdmUgdGhlbSBpbiBhIHNldFxuICAvLyBFYWNoIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHVuaXF1ZSBhcyB3ZWxsLCB3ZSBzYXZlIHRoZW0gaW4gYSByZWNvcmQgc28gd2UgY2FuIGlkZW50aWZ5IGlmIHR3byB2YXJpYWJsZXMgYXJlIHRoZSBzYW1lXG4gIGNvbnN0IHNjb3BlOiBQcm9ncmFtU2NvcGUgPSB7XG4gICAgcHJvdmlkZXJTY2hlbWEsXG4gICAgcHJvdmlkZXJHZW5lcmF0b3I6IE9iamVjdC5rZXlzKFxuICAgICAgcHJvdmlkZXJTY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSxcbiAgICApLnJlZHVjZSgoY2FycnksIGZxcG4pID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyR2VuZXJhdG9yID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yKFxuICAgICAgICBuZXcgQ29kZU1ha2VyKCksXG4gICAgICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgICAgKTtcbiAgICAgIHByb3ZpZGVyR2VuZXJhdG9yLmJ1aWxkUmVzb3VyY2VNb2RlbHMoZnFwbiBhcyBGUVBOKTsgLy8gY2FuJ3QgdXNlIHRoYXQgdHlwZSBvbiB0aGUga2V5cyB5ZXQsIHNpbmNlIHdlIGFyZSBub3Qgb24gVFMgPj00LjQgeWV0IDpzYWRjYXQ6XG4gICAgICByZXR1cm4geyAuLi5jYXJyeSwgW2ZxcG5dOiBwcm92aWRlckdlbmVyYXRvciB9O1xuICAgIH0sIHt9KSxcbiAgICBjb25zdHJ1Y3RzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB2YXJpYWJsZXM6IHt9LFxuICAgIGhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb246IGZhbHNlLFxuICAgIG5vZGVJZHM6IFtdLFxuICAgIGltcG9ydGFibGVzOiBbXSxcbiAgICB0b3BMZXZlbENvbmZpZzoge30sXG4gIH07XG5cbiAgY29uc3QgZ3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaDx7XG4gICAgY29kZTogKFxuICAgICAgZzogRGlyZWN0ZWRHcmFwaDxhbnk+LFxuICAgICkgPT4gUHJvbWlzZTxBcnJheTx0LlN0YXRlbWVudCB8IHQuVmFyaWFibGVEZWNsYXJhdGlvbj4+O1xuICB9PigpO1xuXG4gIC8vIEdldCBhbGwgaXRlbXMgaW4gdGhlIEpTT04gYXMgYSBtYXAgb2YgaWQgdG8gZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIEFTVFxuICAvLyBXZSB3aWxsIHVzZSB0aGlzIHRvIGNvbnN0cnVjdCB0aGUgbm9kZXMgZm9yIGEgZGVwZW5kZW5jeSBncmFwaFxuICAvLyBXZSBuZWVkIHRvIHVzZSBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSB0aGUgc2FtZSBub2RlIGhhcyBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gaWYgaXQncyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgb25lXG4gIGNvbnN0IG5vZGVNYXA6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgY29kZTogKFxuICAgICAgICBnOiB0eXBlb2YgZ3JhcGgsXG4gICAgICApID0+IFByb21pc2U8QXJyYXk8dC5TdGF0ZW1lbnQgfCB0LlZhcmlhYmxlRGVjbGFyYXRpb24+PjtcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1cbiAgPiA9IHtcbiAgICAuLi5mb3JFYWNoUHJvdmlkZXIoc2NvcGUsIHBsYW4ucHJvdmlkZXIsIHByb3ZpZGVyKSxcbiAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcInZhclwiLCBwbGFuLnZhcmlhYmxlLCB2YXJpYWJsZSksXG4gICAgLy8gbG9jYWxzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICBzY29wZSxcbiAgICAgIFwibG9jYWxcIixcbiAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgID8gcGxhbi5sb2NhbHMucmVkdWNlKChjYXJyeSwgbG9jYWxzKSA9PiAoeyAuLi5jYXJyeSwgLi4ubG9jYWxzIH0pLCB7fSlcbiAgICAgICAgOiB7fSxcbiAgICAgIGxvY2FsLFxuICAgICksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJvdXRcIiwgcGxhbi5vdXRwdXQsIG91dHB1dCksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJtb2R1bGVcIiwgcGxhbi5tb2R1bGUsIG1vZHVsZXMpLFxuICAgIC4uLmZvckVhY2hJbXBvcnQoc2NvcGUsIFwiaW1wb3J0XCIsIHBsYW4uaW1wb3J0LCBpbXBvcnRzKSxcbiAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5yZXNvdXJjZSwgcmVzb3VyY2UpLFxuICAgIC4uLmZvckVhY2hOYW1lc3BhY2VkKHNjb3BlLCBwbGFuLmRhdGEsIHJlc291cmNlLCBcImRhdGFcIiksXG4gIH07XG5cbiAgLy8gQWRkIGFsbCBub2RlcyB0byB0aGUgZGVwZW5kZW5jeSBncmFwaCBzbyB3ZSBjYW4gZGV0ZWN0IGlmIGFuIGVkZ2UgaXMgYWRkZWQgZm9yIGFuIHVua25vd24gbGlua1xuICBPYmplY3QuZW50cmllcyhub2RlTWFwKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEFkZGluZyBub2RlICcke2tleX0nIHRvIGdyYXBoYCk7XG4gICAgZ3JhcGguYWRkTm9kZShrZXksIHZhbHVlKTtcbiAgfSk7XG5cbiAgLy8gRmluZGluZyByZWZlcmVuY2VzIGJlY29tZXMgZWFzaWVyIG9mIHRoZSB0byBiZSByZWZlcmVuY2VkIGlkcyBhcmUgYWxyZWFkeSBrbm93blxuICBjb25zdCBub2RlSWRzID0gT2JqZWN0LmtleXMobm9kZU1hcCk7XG4gIHNjb3BlLm5vZGVJZHMgPSBub2RlSWRzO1xuICBhc3luYyBmdW5jdGlvbiBhZGRFZGdlcyhpZDogc3RyaW5nLCB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jaykge1xuICAgIChhd2FpdCBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgdmFsdWUpKS5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWdyYXBoLmhhc0RpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQpICYmXG4gICAgICAgIGdyYXBoLmhhc05vZGUocmVmLnJlZmVyZW5jZWUuaWQpIC8vIGluIGNhc2UgdGhlIHJlZmVyZW5jZWUgaXMgYSBkeW5hbWljIHZhcmlhYmxlXG4gICAgICApIHtcbiAgICAgICAgaWYgKCFncmFwaC5oYXNOb2RlKGlkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgZGVwZW5kZW5jeSBncmFwaCBpcyBleHBlY3RlZCB0byBsaW5rIGZyb20gJHtcbiAgICAgICAgICAgICAgcmVmLnJlZmVyZW5jZWUuaWRcbiAgICAgICAgICAgIH0gdG8gJHtpZH0gYnV0ICR7aWR9IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgVGhlc2Ugbm9kZXMgZXhpc3Q6ICR7Z3JhcGgubm9kZXMoKS5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBncmFwaCBzaG91bGQgaGF2ZSBubyBzZWxmLXJlZmVyZW5jZXNcbiAgICAgICAgaWYgKGlkID09PSByZWYucmVmZXJlbmNlZS5pZCkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU2tpcHBpbmcgc2VsZi1yZWZlcmVuY2UgZm9yICR7aWR9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBBZGRpbmcgZWRnZSBmcm9tICR7cmVmLnJlZmVyZW5jZWUuaWR9IHRvICR7aWR9YCk7XG4gICAgICAgIGdyYXBoLmFkZERpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQsIHsgcmVmIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gV2UgcmVjdXJzaXZlbHkgaW5zcGVjdCBlYWNoIHJlc291cmNlIHZhbHVlIHRvIGZpbmQgcmVmZXJlbmNlcyB0byBvdGhlciB2YWx1ZXNcbiAgLy8gV2UgYWRkIHRoZXNlIHRvIGEgZGVwZW5kZW5jeSBncmFwaCBzbyB0aGF0IHRoZSBwcm9ncmFtbWluZyBjb2RlIGhhcyB0aGUgcmlnaHQgb3JkZXJcbiAgYXN5bmMgZnVuY3Rpb24gYWRkR2xvYmFsRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX2tleTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdmFsdWU6IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4gICkge1xuICAgIGF3YWl0IGFkZEVkZ2VzKGlkLCB2YWx1ZSk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gYWRkUHJvdmlkZXJFZGdlcyhcbiAgICBfc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBhZGROYW1lc3BhY2VkRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX3R5cGU6IHN0cmluZyxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIE9iamVjdC52YWx1ZXMoe1xuICAgICAgLi4uZm9yRWFjaFByb3ZpZGVyKHNjb3BlLCBwbGFuLnByb3ZpZGVyLCBhZGRQcm92aWRlckVkZ2VzKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwidmFyXCIsIHBsYW4udmFyaWFibGUsIGFkZEdsb2JhbEVkZ2VzKSxcbiAgICAgIC8vIGxvY2FscyBhcmUgYSBzcGVjaWFsIGNhc2VcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBcImxvY2FsXCIsXG4gICAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgICAgPyBwbGFuLmxvY2Fscy5yZWR1Y2UoKGNhcnJ5LCBsb2NhbHMpID0+ICh7IC4uLmNhcnJ5LCAuLi5sb2NhbHMgfSksIHt9KVxuICAgICAgICAgIDoge30sXG4gICAgICAgIGFkZEdsb2JhbEVkZ2VzLFxuICAgICAgKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwib3V0XCIsIHBsYW4ub3V0cHV0LCBhZGRHbG9iYWxFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcIm1vZHVsZVwiLCBwbGFuLm1vZHVsZSwgYWRkR2xvYmFsRWRnZXMpLFxuICAgICAgLi4uZm9yRWFjaE5hbWVzcGFjZWQoc2NvcGUsIHBsYW4ucmVzb3VyY2UsIGFkZE5hbWVzcGFjZWRFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5kYXRhLCBhZGROYW1lc3BhY2VkRWRnZXMsIFwiZGF0YVwiKSxcbiAgICB9KS5tYXAoKHsgY29kZTogYWRkRWRnZXNUb0dyYXBoIH0pID0+IGFkZEVkZ2VzVG9HcmFwaChncmFwaCkpLFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhgR3JhcGg6ICR7SlNPTi5zdHJpbmdpZnkoZ3JhcGgsIG51bGwsIDIpfWApO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIHRvIGFzc2VtYmxlIHRoZSB0eXBlc2NyaXB0IGNvZGVgKTtcbiAgLy8gV2UgdHJhdmVyc2UgdGhlIGRlcGVuZGVuY3kgZ3JhcGggdG8gZ2V0IHRoZSB1bm9yZGVyZWQgSlNPTiBub2RlcyBpbnRvIGFuIG9yZGVyZWQgYXJyYXlcbiAgLy8gd2hlcmUgbm8gbm9kZSBpcyByZWZlcmVuY2VkIGJlZm9yZSBpdCdzIGRlZmluZWRcbiAgLy8gQXMgd2UgY2hlY2sgdGhhdCB0aGUgbm9kZXMgb24gYm90aCBlbmRzIG9mIGFuIGVkZ2UgZXhpc3Qgd2UgY2FuIGJlIHN1cmVcbiAgLy8gdGhhdCBubyBpbmZpbml0ZSBsb29wIGV4aXN0cywgdGhlcmUgY2FuIGJlIG5vIHN0cmF5IGRlcGVuZGVuY3kgb24gYSBub2RlXG4gIGNvbnN0IGV4cHJlc3Npb25zOiB0LlN0YXRlbWVudFtdID0gW107XG4gIGxldCBub2Rlc1RvVmlzaXQgPSBbLi4ubm9kZUlkc107XG4gIC8vIFRoaXMgZW5zdXJlcyB3ZSBkZXRlY3QgY3ljbGVzIGFuZCBkb24ndCBlbmQgdXAgaW4gYW4gZW5kbGVzcyBsb29wXG4gIGxldCBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uID0gMDtcbiAgZG8ge1xuICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSAwO1xuXG4gICAgLy8gRmluZCBuZXh0IG5vZGVzIHRvIHZpc2l0XG4gICAgY29uc3Qgbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzID0gZ3JhcGgubWFwTm9kZXMoKG5vZGVJZCwgeyBjb2RlIH0pID0+IHtcbiAgICAgIGlmICghbm9kZXNUb1Zpc2l0LmluY2x1ZGVzKG5vZGVJZCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdW5yZXNvbHZlZERlcGVuZGVuY2llcyA9IGdyYXBoXG4gICAgICAgIC5pbk5laWdoYm9ycyhub2RlSWQpXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IG5vZGVzVG9WaXNpdC5pbmNsdWRlcyhpdGVtKSk7XG5cbiAgICAgIGlmICh1bnJlc29sdmVkRGVwZW5kZW5jaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBub2Rlc1RvVmlzaXQgPSBub2Rlc1RvVmlzaXQuZmlsdGVyKChpZCkgPT4gbm9kZUlkICE9PSBpZCk7XG4gICAgICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uICsgMTtcblxuICAgICAgICBsb2dnZXIuZGVidWcoYFZpc2l0aW5nIG5vZGUgJHtub2RlSWR9YCk7XG4gICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIC8vIEdlbmVyYXRlIHRoZSBjb2RlIGZvciB0aGUgbm9kZXNcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2Ygbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzKSB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICBleHByZXNzaW9ucy5wdXNoKC4uLihhd2FpdCBjb2RlKGdyYXBoKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGAke25vZGVzVG9WaXNpdC5sZW5ndGh9IHVudmlzaXRlZCBub2RlczogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfSB3aGlsZSAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDAgJiYgbm9kZXNWaXNpdGVkVGhpc0l0ZXJhdGlvbiAhPSAwKTtcblxuICBpZiAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVGhlcmUgYXJlICR7XG4gICAgICAgIG5vZGVzVG9WaXNpdC5sZW5ndGhcbiAgICAgIH0gdGVycmFmb3JtIGVsZW1lbnRzIHRoYXQgY291bGQgbm90IGJlIHZpc2l0ZWQuXG4gICAgICBUaGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjeWNsZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaC5cbiAgICAgIFRoZXNlIG5vZGVzIGFyZTogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtub2Rlc1RvVmlzaXQubGVuZ3RofSB1bnZpc2l0ZWQgbm9kZXM6ICR7bm9kZXNUb1Zpc2l0LmpvaW4oXCIsIFwiKX1gLFxuICApO1xuXG4gIGNvbnN0IGJhY2tlbmRFeHByZXNzaW9ucyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBsYW4udGVycmFmb3JtPy5tYXAoKHRlcnJhZm9ybSkgPT5cbiAgICAgICAgYmFja2VuZFRvRXhwcmVzc2lvbihzY29wZSwgdGVycmFmb3JtLmJhY2tlbmQpLFxuICAgICAgKSB8fCBbUHJvbWlzZS5yZXNvbHZlKFtdKV0sXG4gICAgKVxuICApLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IFsuLi5jYXJyeSwgLi4uaXRlbV0sIFtdKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYFVzaW5nIHRoZXNlIGJhY2tlbmQgZXhwcmVzc2lvbnM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBiYWNrZW5kRXhwcmVzc2lvbnMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgY29sbGVjdCBhbGwgbW9kdWxlIHNvdXJjZXNcbiAgY29uc3QgbW9kdWxlUmVxdWlyZW1lbnRzID0gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3QudmFsdWVzKHBsYW4ubW9kdWxlIHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgIChjYXJyeSwgbW9kdWxlQmxvY2spID0+IFtcbiAgICAgICAgICAuLi5jYXJyeSxcbiAgICAgICAgICAuLi5tb2R1bGVCbG9jay5yZWR1Y2UoXG4gICAgICAgICAgICAoYXJyLCB7IHNvdXJjZSwgdmVyc2lvbiB9KSA9PiBbXG4gICAgICAgICAgICAgIC4uLmFycixcbiAgICAgICAgICAgICAgdmVyc2lvbiA/IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAgOiBzb3VyY2UsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICApIHx8IFtdLFxuICAgICksXG4gIF07XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBGb3VuZCB0aGVzZSBtb2R1bGVzOiAke0pTT04uc3RyaW5naWZ5KG1vZHVsZVJlcXVpcmVtZW50cywgbnVsbCwgMil9YCxcbiAgKTtcblxuICBpZiAoT2JqZWN0LmtleXMocGxhbi52YXJpYWJsZSB8fCB7fSkubGVuZ3RoID4gMCAmJiBleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRlcnJhZm9ybSBWYXJpYWJsZXMgYXJlIG5vdCBhbHdheXMgdGhlIGJlc3QgZml0IGZvciBnZXR0aW5nIGlucHV0cyBpbiB0aGUgY29udGV4dCBvZiBUZXJyYWZvcm0gQ0RLLlxuWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL2Nka3RuLmlvL2RvY3MvY29uY2VwdHMvdmFyaWFibGVzLWFuZC1vdXRwdXRzI2lucHV0LXZhcmlhYmxlc2AsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyUmVxdWlyZW1lbnRzID0gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgRm91bmQgdGhlc2UgcHJvdmlkZXIgcmVxdWlyZW1lbnRzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgcHJvdmlkZXJSZXF1aXJlbWVudHMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgYWRkIGEgY29tbWVudCBpZiB0aGVyZSBhcmUgcHJvdmlkZXJzIHdpdGggbWlzc2luZyBzY2hlbWEgaW5mb3JtYXRpb25cbiAgY29uc3QgcHJvdmlkZXJzTGFja2luZ1NjaGVtYSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyUmVxdWlyZW1lbnRzKS5maWx0ZXIoXG4gICAgKHByb3ZpZGVyTmFtZSkgPT5cbiAgICAgIHByb3ZpZGVyTmFtZSAhPT0gXCJ0ZXJyYWZvcm1cIiAmJlxuICAgICAgIU9iamVjdC5rZXlzKHByb3ZpZGVyU2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLnNvbWUoKHNjaGVtYU5hbWUpID0+XG4gICAgICAgIHNjaGVtYU5hbWUuZW5kc1dpdGgocHJvdmlkZXJOYW1lKSxcbiAgICAgICksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtcbiAgICAgIHByb3ZpZGVyc0xhY2tpbmdTY2hlbWEubGVuZ3RoXG4gICAgfSBwcm92aWRlcnMgbGFjayBzY2hlbWEgaW5mb3JtYXRpb246ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFwiLCBcIil9YCxcbiAgKTtcblxuICBpZiAocHJvdmlkZXJzTGFja2luZ1NjaGVtYS5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRoZSBmb2xsb3dpbmcgcHJvdmlkZXJzIGFyZSBtaXNzaW5nIHNjaGVtYSBpbmZvcm1hdGlvbiBhbmQgbWlnaHQgbmVlZCBtYW51YWwgYWRqdXN0bWVudHMgdG8gc3ludGhlc2l6ZSBjb3JyZWN0bHk6ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFxuICAgICAgICBcIiwgXCIsXG4gICAgICApfS5cbkZvciBhIG1vcmUgcHJlY2lzZSBjb252ZXJzaW9uIHBsZWFzZSB1c2UgdGhlIC0tcHJvdmlkZXIgZmxhZyBpbiBjb252ZXJ0LmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFsd2F5cyBhZGQgY29uc3RydWN0c1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkNvbnN0cnVjdFwiLFxuICAgIHByb3ZpZGVyOiBcImNvbnN0cnVjdHNcIixcbiAgfSk7XG5cbiAgaWYgKHNjb3BlLmhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb24pIHtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiVG9rZW5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgc3BlY2lmaWMgaW1wb3J0IGZvciBjb2RlQ29udGFpbmVyXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIoc2NvcGUsIGNvZGVDb250YWluZXIpO1xuICBjb25zdCBjb25zdHJ1Y3RJbXBvcnRzID0gYnVpbGRJbXBvcnRzKHNjb3BlLmltcG9ydGFibGVzKTtcblxuICBjb25zdCBjb2RlID0gWy4uLihiYWNrZW5kRXhwcmVzc2lvbnMgfHwgW10pLCAuLi5leHByZXNzaW9uc107XG4gIGNvbnN0IGNvbmZpZ1R5cGVOYW1lID1cbiAgICBPYmplY3Qua2V5cyhzY29wZS50b3BMZXZlbENvbmZpZykubGVuZ3RoID4gMCA/IFwiTXlDb25maWdcIiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjbGFzc0NvbmZpZyA9IGNvbmZpZ1R5cGVOYW1lXG4gICAgPyBbZ2VuZXJhdGVDb25maWdUeXBlKGNvbmZpZ1R5cGVOYW1lLCBzY29wZS50b3BMZXZlbENvbmZpZyldXG4gICAgOiBbXTtcblxuICAvLyBXZSBzcGxpdCB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgc28gdGhhdCB1c2VycyBjYW4gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB3aGF0IHRvIGluc2VydCB3aGVyZVxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBpbXBvcnRzIGFuZCBjb2RlIGJlY2F1c2Ugcm9zZXR0YSB3b24ndCBiZSBhYmxlIHRvIHRyYW5zbGF0ZSB0aGVtXG4gICAgYWxsOiBhd2FpdCBnZW4oW1xuICAgICAgLi4uY29uc3RydWN0SW1wb3J0cyxcbiAgICAgIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpLFxuICAgICAgLi4uY2xhc3NDb25maWcsXG4gICAgICB3cmFwQ29kZUluQ29uc3RydWN0b3IoXG4gICAgICAgIGNvZGVDb250YWluZXIsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIFwiTXlDb252ZXJ0ZWRDb2RlXCIsXG4gICAgICAgIGNvbmZpZ1R5cGVOYW1lLFxuICAgICAgKSxcbiAgICBdKSxcbiAgICBpbXBvcnRzOiBhd2FpdCBnZW4oWy4uLmNvbnN0cnVjdEltcG9ydHMsIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpXSksXG4gICAgY29kZTogYXdhaXQgZ2VuKGNvZGUpLFxuICAgIHByb3ZpZGVyczogT2JqZWN0LmVudHJpZXMocHJvdmlkZXJSZXF1aXJlbWVudHMpLm1hcCgoW3NvdXJjZSwgdmVyc2lvbl0pID0+XG4gICAgICB2ZXJzaW9uID09PSBcIipcIiA/IHNvdXJjZSA6IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAsXG4gICAgKSxcbiAgICBtb2R1bGVzOiBtb2R1bGVSZXF1aXJlbWVudHMsXG4gICAgLy8gV2UgdHJhY2sgc29tZSB1c2FnZSBkYXRhIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyB1c2VkXG4gICAgc3RhdHM6IHtcbiAgICAgIG51bWJlck9mTW9kdWxlczogbW9kdWxlUmVxdWlyZW1lbnRzLmxlbmd0aCxcbiAgICAgIG51bWJlck9mUHJvdmlkZXJzOiBPYmplY3Qua2V5cyhwcm92aWRlclJlcXVpcmVtZW50cykubGVuZ3RoLFxuICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZVN0YXRzKHBsYW4ucmVzb3VyY2UgfHwge30pLFxuICAgICAgZGF0YTogcmVzb3VyY2VTdGF0cyhwbGFuLmRhdGEgfHwge30pLFxuICAgICAgY29udmVydGVkTGluZXM6IGhjbC5zcGxpdChcIlxcblwiKS5sZW5ndGgsXG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBGaWxlID0geyBjb250ZW50czogc3RyaW5nOyBmaWxlTmFtZTogc3RyaW5nIH07XG5jb25zdCB0cmFuc2xhdG9ycyA9IHtcbiAgcHl0aG9uOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuUHl0aG9uVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbiAgfSxcbiAgamF2YToge1xuICAgIHZpc2l0b3I6ICgpID0+IG5ldyByb3NldHRhLkphdmFWaXNpdG9yKCksXG4gICAgcG9zdFRyYW5zbGF0aW9uTXV0YXRpb246IHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgfSxcbiAgY3NoYXJwOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuQ1NoYXJwVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgfSxcbiAgZ286IHtcbiAgICB2aXNpdG9yOiAoKSA9PiBuZXcgcm9zZXR0YS5Hb1Zpc2l0b3IoKSxcbiAgICBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbjogcmVwbGFjZUdvSW1wb3J0cyxcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHRyYW5zbGF0b3JGb3JMYW5ndWFnZShsYW5ndWFnZToga2V5b2YgdHlwZW9mIHRyYW5zbGF0b3JzKSB7XG4gIHJldHVybiAoZmlsZTogRmlsZSwgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3I6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB7IHZpc2l0b3IsIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uIH0gPSB0cmFuc2xhdG9yc1tsYW5ndWFnZV07XG4gICAgY29uc3QgeyB0cmFuc2xhdGlvbiwgZGlhZ25vc3RpY3MgfSA9IHJvc2V0dGEudHJhbnNsYXRlVHlwZVNjcmlwdChcbiAgICAgIGZpbGUsXG4gICAgICB2aXNpdG9yKCksXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciA/IHsgaW5jbHVkZUNvbXBpbGVyRGlhZ25vc3RpY3M6IHRydWUgfSA6IHt9LFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciAmJlxuICAgICAgZGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnKSA9PiBkaWFnLmlzRXJyb3IpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ291bGQgbm90IHRyYW5zbGF0ZSBUUyB0byAke2xhbmd1YWdlfTpcXG4ke2ZpbGUuY29udGVudHN9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgdHJhbnNsYXRlIFRTIHRvICR7bGFuZ3VhZ2V9OiAke2RpYWdub3N0aWNzXG4gICAgICAgICAgLm1hcCgoZGlhZykgPT4gZGlhZy5mb3JtYXR0ZWRNZXNzYWdlKVxuICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbih0cmFuc2xhdGlvbik7XG4gIH07XG59XG5cbnR5cGUgQ29udmVydE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgdG8gY29udmVydCB0b1xuICAgKi9cbiAgbGFuZ3VhZ2U6IGtleW9mIHR5cGVvZiB0cmFuc2xhdG9ycyB8IFwidHlwZXNjcmlwdFwiO1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIHNjaGVtYSB0byB1c2UgZm9yIGNvbnZlcnNpb25cbiAgICovXG4gIHByb3ZpZGVyU2NoZW1hOiBQcm92aWRlclNjaGVtYTtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGNsYXNzIHRvIGV4dGVuZCBmcm9tLiBEZWZhdWx0cyB0byBgY29uc3RydWN0cy5Db25zdHJ1Y3RgXG4gICAqL1xuICBjb2RlQ29udGFpbmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdHJhbnNsYXRpb24gZmFpbHNcbiAgICogRGVmYXVsdHMgdG8gZmFsc2VcbiAgICovXG4gIHRocm93T25UcmFuc2xhdGlvbkVycm9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KFxuICBoY2w6IHN0cmluZyxcbiAge1xuICAgIGxhbmd1YWdlLFxuICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgIHRocm93T25UcmFuc2xhdGlvbkVycm9yID0gZmFsc2UsXG4gICAgY29kZUNvbnRhaW5lciA9IFwiY2RrdG4uVGVycmFmb3JtU3RhY2tcIixcbiAgfTogQ29udmVydE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBcInRlcnJhZm9ybS50ZlwiO1xuICBjb25zdCB0cmFuc2xhdGVyID1cbiAgICBsYW5ndWFnZSA9PT0gXCJ0eXBlc2NyaXB0XCJcbiAgICAgID8gKGZpbGU6IEZpbGUsIF90aHJvd09uVHJhbnNsYXRpb25FcnJvcjogYm9vbGVhbikgPT4gZmlsZS5jb250ZW50c1xuICAgICAgOiB0cmFuc2xhdG9yRm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIGlmICghdHJhbnNsYXRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGxhbmd1YWdlIHVzZWQ6IFwiICsgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgY29uc3QgdHNDb2RlID0gYXdhaXQgY29udmVydFRvVHlwZXNjcmlwdChoY2wsIHByb3ZpZGVyU2NoZW1hLCBjb2RlQ29udGFpbmVyKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnRzQ29kZSxcbiAgICBhbGw6IHRyYW5zbGF0ZXIoXG4gICAgICB7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmFsbCB9LFxuICAgICAgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3IsXG4gICAgKSxcbiAgICBpbXBvcnRzOiB0cmFuc2xhdGVyKHsgZmlsZU5hbWUsIGNvbnRlbnRzOiB0c0NvZGUuaW1wb3J0cyB9LCBmYWxzZSksXG4gICAgY29kZTogdHJhbnNsYXRlcih7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmNvZGUgfSwgZmFsc2UpLFxuICAgIHN0YXRzOiB7IC4uLnRzQ29kZS5zdGF0cywgbGFuZ3VhZ2UgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlcnJhZm9ybUNvbmZpZ0Zyb21EaXIoaW1wb3J0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUoaW1wb3J0UGF0aCk7XG4gIGNvbnN0IGZpbGVDb250ZW50cyA9IGdsb2JcbiAgICAuc3luYyhcIi4vKi50ZlwiLCB7IGN3ZDogYWJzUGF0aCB9KVxuICAgIC5tYXAoKHApID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUoYWJzUGF0aCwgcCksIFwidXRmOFwiKSk7XG5cbiAgcmV0dXJuIGZpbGVDb250ZW50cy5qb2luKFwiXFxuXCIpO1xufVxuXG50eXBlIENka3RmSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICB0ZXJyYWZvcm1Qcm92aWRlcnM6IGFueVtdO1xuICB0ZXJyYWZvcm1Nb2R1bGVzOiBhbnlbXTtcbn07XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udmVydFByb2plY3QoXG4gIGNvbWJpbmVkSGNsOiBzdHJpbmcsXG4gIHsgbGFuZ3VhZ2UsIHByb3ZpZGVyU2NoZW1hIH06IENvbnZlcnRPcHRpb25zLFxuKSB7XG4gIGlmIChsYW5ndWFnZSAhPT0gXCJ0eXBlc2NyaXB0XCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBsYW5ndWFnZSB1c2VkOiBcIiArIGxhbmd1YWdlKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbXBvcnRzLFxuICAgIGNvZGUsXG4gICAgcHJvdmlkZXJzLFxuICAgIG1vZHVsZXM6IHRmTW9kdWxlcyxcbiAgICBzdGF0cyxcbiAgfSA9IGF3YWl0IGNvbnZlcnQoY29tYmluZWRIY2wsIHtcbiAgICBsYW5ndWFnZSxcbiAgICBwcm92aWRlclNjaGVtYSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiAoaW5wdXRNYWluRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRNYWluRmlsZSA9IFtpbXBvcnRzLCBpbnB1dE1haW5GaWxlXS5qb2luKFwiXFxuXCIpO1xuICAgICAgY29uc3Qgb3V0cHV0TWFpbkZpbGUgPSBpbXBvcnRNYWluRmlsZS5yZXBsYWNlKENPREVfTUFSS0VSLCBjb2RlKTtcbiAgICAgIHJldHVybiBwcmV0dGllci5mb3JtYXQob3V0cHV0TWFpbkZpbGUsIHsgcGFyc2VyOiBcImJhYmVsXCIgfSk7XG4gICAgfSxcbiAgICBjZGt0Zkpzb246IChpbnB1dENka3RmSnNvbjogQ2RrdGZKc29uKSA9PiB7XG4gICAgICBjb25zdCBjZGt0Zkpzb24gPSB7IC4uLmlucHV0Q2RrdGZKc29uIH07XG4gICAgICBjZGt0Zkpzb24udGVycmFmb3JtUHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICAgICAgY2RrdGZKc29uLnRlcnJhZm9ybU1vZHVsZXMgPSB0Zk1vZHVsZXM7XG4gICAgICByZXR1cm4gY2RrdGZKc29uO1xuICAgIH0sXG4gICAgc3RhdHMsXG4gIH07XG59XG5cbmV4cG9ydCB7IGlzUmVnaXN0cnlNb2R1bGUsIGF0dHJpYnV0ZU5hbWVUb0Nka3RmTmFtZSB9O1xuIl19
|
package/build/schema.d.ts
CHANGED
|
@@ -4,17 +4,7 @@ declare const outputConfig: z.ZodArray<z.ZodObject<{
|
|
|
4
4
|
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
5
5
|
sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
6
6
|
depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
7
|
-
},
|
|
8
|
-
sensitive?: boolean | undefined;
|
|
9
|
-
value?: any;
|
|
10
|
-
description?: string | undefined;
|
|
11
|
-
depends_on?: string | undefined;
|
|
12
|
-
}, {
|
|
13
|
-
sensitive?: boolean | undefined;
|
|
14
|
-
value?: any;
|
|
15
|
-
description?: string | undefined;
|
|
16
|
-
depends_on?: string | undefined;
|
|
17
|
-
}>, "many">;
|
|
7
|
+
}, z.core.$strip>>;
|
|
18
8
|
export type Output = z.infer<typeof outputConfig>;
|
|
19
9
|
declare const variableConfig: z.ZodArray<z.ZodObject<{
|
|
20
10
|
type: z.ZodOptional<z.ZodString>;
|
|
@@ -25,160 +15,60 @@ declare const variableConfig: z.ZodArray<z.ZodObject<{
|
|
|
25
15
|
validation: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
26
16
|
error_message: z.ZodString;
|
|
27
17
|
condition: z.ZodAny;
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
condition?: any;
|
|
31
|
-
}, {
|
|
32
|
-
error_message: string;
|
|
33
|
-
condition?: any;
|
|
34
|
-
}>, "many">>>;
|
|
35
|
-
}, "strip", z.ZodTypeAny, {
|
|
36
|
-
sensitive?: boolean | undefined;
|
|
37
|
-
type?: string | undefined;
|
|
38
|
-
description?: string | undefined;
|
|
39
|
-
validation?: {
|
|
40
|
-
error_message: string;
|
|
41
|
-
condition?: any;
|
|
42
|
-
}[] | undefined;
|
|
43
|
-
default?: any;
|
|
44
|
-
nullable?: boolean | undefined;
|
|
45
|
-
}, {
|
|
46
|
-
sensitive?: boolean | undefined;
|
|
47
|
-
type?: string | undefined;
|
|
48
|
-
description?: string | undefined;
|
|
49
|
-
validation?: {
|
|
50
|
-
error_message: string;
|
|
51
|
-
condition?: any;
|
|
52
|
-
}[] | undefined;
|
|
53
|
-
default?: any;
|
|
54
|
-
nullable?: boolean | undefined;
|
|
55
|
-
}>, "many">;
|
|
18
|
+
}, z.core.$strip>>>>;
|
|
19
|
+
}, z.core.$strip>>;
|
|
56
20
|
export type Variable = z.infer<typeof variableConfig>;
|
|
57
|
-
declare const providerConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny
|
|
21
|
+
declare const providerConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
58
22
|
export type Provider = z.infer<typeof providerConfig>;
|
|
59
23
|
declare const moduleConfig: z.ZodArray<z.ZodObject<{
|
|
60
24
|
source: z.ZodString;
|
|
61
|
-
},
|
|
62
|
-
source: z.ZodString;
|
|
63
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
64
|
-
source: z.ZodString;
|
|
65
|
-
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
25
|
+
}, z.core.$loose>>;
|
|
66
26
|
export type Module = z.infer<typeof moduleConfig>;
|
|
67
|
-
declare const resourceConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny
|
|
27
|
+
declare const resourceConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
68
28
|
export type Resource = z.infer<typeof resourceConfig>;
|
|
69
29
|
export type Data = Resource;
|
|
70
30
|
declare const importConfig: z.ZodObject<{
|
|
71
31
|
to: z.ZodString;
|
|
72
32
|
id: z.ZodString;
|
|
73
33
|
provider: z.ZodOptional<z.ZodAny>;
|
|
74
|
-
},
|
|
75
|
-
to: string;
|
|
76
|
-
id: string;
|
|
77
|
-
provider?: any;
|
|
78
|
-
}, {
|
|
79
|
-
to: string;
|
|
80
|
-
id: string;
|
|
81
|
-
provider?: any;
|
|
82
|
-
}>;
|
|
34
|
+
}, z.core.$strip>;
|
|
83
35
|
export type Import = z.infer<typeof importConfig>;
|
|
84
36
|
declare const terraformConfig: z.ZodObject<{
|
|
85
37
|
required_version: z.ZodOptional<z.ZodString>;
|
|
86
|
-
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
38
|
+
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
87
39
|
source: z.ZodOptional<z.ZodString>;
|
|
88
40
|
version: z.ZodOptional<z.ZodString>;
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}, {
|
|
93
|
-
source?: string | undefined;
|
|
94
|
-
version?: string | undefined;
|
|
95
|
-
}>, z.ZodString]>>, "many">>;
|
|
96
|
-
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
97
|
-
}, "strip", z.ZodTypeAny, {
|
|
98
|
-
required_version?: string | undefined;
|
|
99
|
-
required_providers?: Record<string, string | {
|
|
100
|
-
source?: string | undefined;
|
|
101
|
-
version?: string | undefined;
|
|
102
|
-
}>[] | undefined;
|
|
103
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
104
|
-
}, {
|
|
105
|
-
required_version?: string | undefined;
|
|
106
|
-
required_providers?: Record<string, string | {
|
|
107
|
-
source?: string | undefined;
|
|
108
|
-
version?: string | undefined;
|
|
109
|
-
}>[] | undefined;
|
|
110
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
111
|
-
}>;
|
|
41
|
+
}, z.core.$strip>, z.ZodString]>>>>;
|
|
42
|
+
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>>;
|
|
43
|
+
}, z.core.$strip>;
|
|
112
44
|
export type TerraformConfig = z.infer<typeof terraformConfig>;
|
|
113
45
|
export declare const schema: z.ZodObject<{
|
|
114
|
-
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny
|
|
46
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>>>;
|
|
115
47
|
import: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
116
48
|
to: z.ZodString;
|
|
117
49
|
id: z.ZodString;
|
|
118
50
|
provider: z.ZodOptional<z.ZodAny>;
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
id: string;
|
|
122
|
-
provider?: any;
|
|
123
|
-
}, {
|
|
124
|
-
to: string;
|
|
125
|
-
id: string;
|
|
126
|
-
provider?: any;
|
|
127
|
-
}>, "many">>;
|
|
128
|
-
locals: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
|
|
51
|
+
}, z.core.$strip>>>;
|
|
52
|
+
locals: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
129
53
|
module: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
130
54
|
source: z.ZodString;
|
|
131
|
-
},
|
|
132
|
-
source: z.ZodString;
|
|
133
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
134
|
-
source: z.ZodString;
|
|
135
|
-
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
55
|
+
}, z.core.$loose>>>>;
|
|
136
56
|
output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
137
57
|
value: z.ZodOptional<z.ZodAny>;
|
|
138
58
|
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
139
59
|
sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
140
60
|
depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
description?: string | undefined;
|
|
145
|
-
depends_on?: string | undefined;
|
|
146
|
-
}, {
|
|
147
|
-
sensitive?: boolean | undefined;
|
|
148
|
-
value?: any;
|
|
149
|
-
description?: string | undefined;
|
|
150
|
-
depends_on?: string | undefined;
|
|
151
|
-
}>, "many">>>;
|
|
152
|
-
provider: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
153
|
-
resource: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>>;
|
|
61
|
+
}, z.core.$strip>>>>;
|
|
62
|
+
provider: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>>;
|
|
63
|
+
resource: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>>>;
|
|
154
64
|
terraform: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
155
65
|
required_version: z.ZodOptional<z.ZodString>;
|
|
156
|
-
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
66
|
+
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
157
67
|
source: z.ZodOptional<z.ZodString>;
|
|
158
68
|
version: z.ZodOptional<z.ZodString>;
|
|
159
|
-
},
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}, {
|
|
163
|
-
source?: string | undefined;
|
|
164
|
-
version?: string | undefined;
|
|
165
|
-
}>, z.ZodString]>>, "many">>;
|
|
166
|
-
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
167
|
-
}, "strip", z.ZodTypeAny, {
|
|
168
|
-
required_version?: string | undefined;
|
|
169
|
-
required_providers?: Record<string, string | {
|
|
170
|
-
source?: string | undefined;
|
|
171
|
-
version?: string | undefined;
|
|
172
|
-
}>[] | undefined;
|
|
173
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
174
|
-
}, {
|
|
175
|
-
required_version?: string | undefined;
|
|
176
|
-
required_providers?: Record<string, string | {
|
|
177
|
-
source?: string | undefined;
|
|
178
|
-
version?: string | undefined;
|
|
179
|
-
}>[] | undefined;
|
|
180
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
181
|
-
}>, "many">>;
|
|
69
|
+
}, z.core.$strip>, z.ZodString]>>>>;
|
|
70
|
+
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>>;
|
|
71
|
+
}, z.core.$strip>>>;
|
|
182
72
|
variable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
183
73
|
type: z.ZodOptional<z.ZodString>;
|
|
184
74
|
default: z.ZodOptional<z.ZodAny>;
|
|
@@ -188,110 +78,8 @@ export declare const schema: z.ZodObject<{
|
|
|
188
78
|
validation: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
189
79
|
error_message: z.ZodString;
|
|
190
80
|
condition: z.ZodAny;
|
|
191
|
-
},
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}, {
|
|
195
|
-
error_message: string;
|
|
196
|
-
condition?: any;
|
|
197
|
-
}>, "many">>>;
|
|
198
|
-
}, "strip", z.ZodTypeAny, {
|
|
199
|
-
sensitive?: boolean | undefined;
|
|
200
|
-
type?: string | undefined;
|
|
201
|
-
description?: string | undefined;
|
|
202
|
-
validation?: {
|
|
203
|
-
error_message: string;
|
|
204
|
-
condition?: any;
|
|
205
|
-
}[] | undefined;
|
|
206
|
-
default?: any;
|
|
207
|
-
nullable?: boolean | undefined;
|
|
208
|
-
}, {
|
|
209
|
-
sensitive?: boolean | undefined;
|
|
210
|
-
type?: string | undefined;
|
|
211
|
-
description?: string | undefined;
|
|
212
|
-
validation?: {
|
|
213
|
-
error_message: string;
|
|
214
|
-
condition?: any;
|
|
215
|
-
}[] | undefined;
|
|
216
|
-
default?: any;
|
|
217
|
-
nullable?: boolean | undefined;
|
|
218
|
-
}>, "many">>>;
|
|
219
|
-
}, "strip", z.ZodTypeAny, {
|
|
220
|
-
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
221
|
-
data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
222
|
-
import?: {
|
|
223
|
-
to: string;
|
|
224
|
-
id: string;
|
|
225
|
-
provider?: any;
|
|
226
|
-
}[] | undefined;
|
|
227
|
-
locals?: Record<string, any>[] | undefined;
|
|
228
|
-
module?: Record<string, z.objectOutputType<{
|
|
229
|
-
source: z.ZodString;
|
|
230
|
-
}, z.ZodTypeAny, "passthrough">[]> | undefined;
|
|
231
|
-
output?: Record<string, {
|
|
232
|
-
sensitive?: boolean | undefined;
|
|
233
|
-
value?: any;
|
|
234
|
-
description?: string | undefined;
|
|
235
|
-
depends_on?: string | undefined;
|
|
236
|
-
}[]> | undefined;
|
|
237
|
-
resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
238
|
-
terraform?: {
|
|
239
|
-
required_version?: string | undefined;
|
|
240
|
-
required_providers?: Record<string, string | {
|
|
241
|
-
source?: string | undefined;
|
|
242
|
-
version?: string | undefined;
|
|
243
|
-
}>[] | undefined;
|
|
244
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
245
|
-
}[] | undefined;
|
|
246
|
-
variable?: Record<string, {
|
|
247
|
-
sensitive?: boolean | undefined;
|
|
248
|
-
type?: string | undefined;
|
|
249
|
-
description?: string | undefined;
|
|
250
|
-
validation?: {
|
|
251
|
-
error_message: string;
|
|
252
|
-
condition?: any;
|
|
253
|
-
}[] | undefined;
|
|
254
|
-
default?: any;
|
|
255
|
-
nullable?: boolean | undefined;
|
|
256
|
-
}[]> | undefined;
|
|
257
|
-
}, {
|
|
258
|
-
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
259
|
-
data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
260
|
-
import?: {
|
|
261
|
-
to: string;
|
|
262
|
-
id: string;
|
|
263
|
-
provider?: any;
|
|
264
|
-
}[] | undefined;
|
|
265
|
-
locals?: Record<string, any>[] | undefined;
|
|
266
|
-
module?: Record<string, z.objectInputType<{
|
|
267
|
-
source: z.ZodString;
|
|
268
|
-
}, z.ZodTypeAny, "passthrough">[]> | undefined;
|
|
269
|
-
output?: Record<string, {
|
|
270
|
-
sensitive?: boolean | undefined;
|
|
271
|
-
value?: any;
|
|
272
|
-
description?: string | undefined;
|
|
273
|
-
depends_on?: string | undefined;
|
|
274
|
-
}[]> | undefined;
|
|
275
|
-
resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
276
|
-
terraform?: {
|
|
277
|
-
required_version?: string | undefined;
|
|
278
|
-
required_providers?: Record<string, string | {
|
|
279
|
-
source?: string | undefined;
|
|
280
|
-
version?: string | undefined;
|
|
281
|
-
}>[] | undefined;
|
|
282
|
-
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
283
|
-
}[] | undefined;
|
|
284
|
-
variable?: Record<string, {
|
|
285
|
-
sensitive?: boolean | undefined;
|
|
286
|
-
type?: string | undefined;
|
|
287
|
-
description?: string | undefined;
|
|
288
|
-
validation?: {
|
|
289
|
-
error_message: string;
|
|
290
|
-
condition?: any;
|
|
291
|
-
}[] | undefined;
|
|
292
|
-
default?: any;
|
|
293
|
-
nullable?: boolean | undefined;
|
|
294
|
-
}[]> | undefined;
|
|
295
|
-
}>;
|
|
81
|
+
}, z.core.$strip>>>>;
|
|
82
|
+
}, z.core.$strip>>>>;
|
|
83
|
+
}, z.core.$strip>;
|
|
296
84
|
export {};
|
|
297
85
|
//# sourceMappingURL=schema.d.ts.map
|
package/build/schema.js
CHANGED
|
@@ -46,9 +46,9 @@ const variableConfig = tfObject({
|
|
|
46
46
|
nullable: z.boolean().optional(),
|
|
47
47
|
validation: z.array(validationConfig).optional(),
|
|
48
48
|
});
|
|
49
|
-
const providerConfig = z.array(z.record(z.any()));
|
|
50
|
-
const moduleConfig = z.array(z.object({ source: z.string() }).
|
|
51
|
-
const resourceConfig = z.array(z.record(z.any()));
|
|
49
|
+
const providerConfig = z.array(z.record(z.string(), z.any()));
|
|
50
|
+
const moduleConfig = z.array(z.object({ source: z.string() }).loose());
|
|
51
|
+
const resourceConfig = z.array(z.record(z.string(), z.any()));
|
|
52
52
|
const importConfig = z.object({
|
|
53
53
|
to: z.string(),
|
|
54
54
|
id: z.string(),
|
|
@@ -61,21 +61,21 @@ const providerSpecification = z.union([
|
|
|
61
61
|
const terraformConfig = z
|
|
62
62
|
.object({
|
|
63
63
|
required_version: z.string(),
|
|
64
|
-
required_providers: z.array(z.record(providerSpecification)),
|
|
65
|
-
backend: z.record(z.array(z.record(z.any()))),
|
|
64
|
+
required_providers: z.array(z.record(z.string(), providerSpecification)),
|
|
65
|
+
backend: z.record(z.string(), z.array(z.record(z.string(), z.any()))),
|
|
66
66
|
})
|
|
67
67
|
.partial();
|
|
68
68
|
exports.schema = z
|
|
69
69
|
.object({
|
|
70
|
-
data: z.record(z.record(resourceConfig)),
|
|
70
|
+
data: z.record(z.string(), z.record(z.string(), resourceConfig)),
|
|
71
71
|
import: z.array(importConfig),
|
|
72
|
-
locals: z.array(z.record(z.any())),
|
|
73
|
-
module: z.record(moduleConfig),
|
|
74
|
-
output: z.record(outputConfig),
|
|
75
|
-
provider: z.record(providerConfig),
|
|
76
|
-
resource: z.record(z.record(resourceConfig)),
|
|
72
|
+
locals: z.array(z.record(z.string(), z.any())),
|
|
73
|
+
module: z.record(z.string(), moduleConfig),
|
|
74
|
+
output: z.record(z.string(), outputConfig),
|
|
75
|
+
provider: z.record(z.string(), providerConfig),
|
|
76
|
+
resource: z.record(z.string(), z.record(z.string(), resourceConfig)),
|
|
77
77
|
terraform: z.array(terraformConfig),
|
|
78
|
-
variable: z.record(variableConfig),
|
|
78
|
+
variable: z.record(z.string(), variableConfig),
|
|
79
79
|
})
|
|
80
80
|
.partial();
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsdUNBQXlCO0FBRXpCLE1BQU0sUUFBUSxHQUFHLENBQTBCLE1BQVMsRUFBRSxFQUFFLENBQ3RELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUM1QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUMsQ0FBQztBQUdILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtDQUNuQixDQUFDLENBQUM7QUFFSCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDaEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkIsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDakQsQ0FBQyxDQUFDO0FBR0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRzlELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFHdkUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBSTlELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDZCxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNkLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQztBQUdILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDL0QsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNYLENBQUMsQ0FBQztBQUVILE1BQU0sZUFBZSxHQUFHLENBQUM7S0FDdEIsTUFBTSxDQUFDO0lBQ04sZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM1QixrQkFBa0IsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDeEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN0RSxDQUFDO0tBQ0QsT0FBTyxFQUFFLENBQUM7QUFHQSxRQUFBLE1BQU0sR0FBRyxDQUFDO0tBQ3BCLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNoRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDN0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksQ0FBQztJQUMxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxDQUFDO0lBQzFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLENBQUM7SUFDOUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNuQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDO0NBQy9DLENBQUM7S0FDRCxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcblxuY29uc3QgdGZPYmplY3QgPSA8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KGNvbmZpZzogVCkgPT5cbiAgei5hcnJheSh6Lm9iamVjdChjb25maWcpLnBhcnRpYWwoKSk7XG5cbmNvbnN0IG91dHB1dENvbmZpZyA9IHRmT2JqZWN0KHtcbiAgdmFsdWU6IHouYW55KCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNlbnNpdGl2ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGVwZW5kc19vbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBPdXRwdXQgPSB6LmluZmVyPHR5cGVvZiBvdXRwdXRDb25maWc+O1xuXG5jb25zdCB2YWxpZGF0aW9uQ29uZmlnID0gei5vYmplY3Qoe1xuICBlcnJvcl9tZXNzYWdlOiB6LnN0cmluZygpLFxuICBjb25kaXRpb246IHouYW55KCksXG59KTtcblxuY29uc3QgdmFyaWFibGVDb25maWcgPSB0Zk9iamVjdCh7XG4gIHR5cGU6IHouc3RyaW5nKCksXG4gIGRlZmF1bHQ6IHouYW55KCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLFxuICBzZW5zaXRpdmU6IHouYm9vbGVhbigpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdmFsaWRhdGlvbjogei5hcnJheSh2YWxpZGF0aW9uQ29uZmlnKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBWYXJpYWJsZSA9IHouaW5mZXI8dHlwZW9mIHZhcmlhYmxlQ29uZmlnPjtcblxuY29uc3QgcHJvdmlkZXJDb25maWcgPSB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpKTtcbmV4cG9ydCB0eXBlIFByb3ZpZGVyID0gei5pbmZlcjx0eXBlb2YgcHJvdmlkZXJDb25maWc+O1xuXG5jb25zdCBtb2R1bGVDb25maWcgPSB6LmFycmF5KHoub2JqZWN0KHsgc291cmNlOiB6LnN0cmluZygpIH0pLmxvb3NlKCkpO1xuZXhwb3J0IHR5cGUgTW9kdWxlID0gei5pbmZlcjx0eXBlb2YgbW9kdWxlQ29uZmlnPjtcblxuY29uc3QgcmVzb3VyY2VDb25maWcgPSB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpKTtcbmV4cG9ydCB0eXBlIFJlc291cmNlID0gei5pbmZlcjx0eXBlb2YgcmVzb3VyY2VDb25maWc+O1xuZXhwb3J0IHR5cGUgRGF0YSA9IFJlc291cmNlO1xuXG5jb25zdCBpbXBvcnRDb25maWcgPSB6Lm9iamVjdCh7XG4gIHRvOiB6LnN0cmluZygpLFxuICBpZDogei5zdHJpbmcoKSxcbiAgcHJvdmlkZXI6IHouYW55KCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1wb3J0ID0gei5pbmZlcjx0eXBlb2YgaW1wb3J0Q29uZmlnPjtcblxuY29uc3QgcHJvdmlkZXJTcGVjaWZpY2F0aW9uID0gei51bmlvbihbXG4gIHoub2JqZWN0KHsgc291cmNlOiB6LnN0cmluZygpLCB2ZXJzaW9uOiB6LnN0cmluZygpIH0pLnBhcnRpYWwoKSxcbiAgei5zdHJpbmcoKSxcbl0pO1xuXG5jb25zdCB0ZXJyYWZvcm1Db25maWcgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlcXVpcmVkX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgcmVxdWlyZWRfcHJvdmlkZXJzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHByb3ZpZGVyU3BlY2lmaWNhdGlvbikpLFxuICAgIGJhY2tlbmQ6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYXJyYXkoei5yZWNvcmQoei5zdHJpbmcoKSwgei5hbnkoKSkpKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbmV4cG9ydCB0eXBlIFRlcnJhZm9ybUNvbmZpZyA9IHouaW5mZXI8dHlwZW9mIHRlcnJhZm9ybUNvbmZpZz47XG5cbmV4cG9ydCBjb25zdCBzY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhdGE6IHoucmVjb3JkKHouc3RyaW5nKCksIHoucmVjb3JkKHouc3RyaW5nKCksIHJlc291cmNlQ29uZmlnKSksXG4gICAgaW1wb3J0OiB6LmFycmF5KGltcG9ydENvbmZpZyksXG4gICAgbG9jYWxzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpKSxcbiAgICBtb2R1bGU6IHoucmVjb3JkKHouc3RyaW5nKCksIG1vZHVsZUNvbmZpZyksXG4gICAgb3V0cHV0OiB6LnJlY29yZCh6LnN0cmluZygpLCBvdXRwdXRDb25maWcpLFxuICAgIHByb3ZpZGVyOiB6LnJlY29yZCh6LnN0cmluZygpLCBwcm92aWRlckNvbmZpZyksXG4gICAgcmVzb3VyY2U6IHoucmVjb3JkKHouc3RyaW5nKCksIHoucmVjb3JkKHouc3RyaW5nKCksIHJlc291cmNlQ29uZmlnKSksXG4gICAgdGVycmFmb3JtOiB6LmFycmF5KHRlcnJhZm9ybUNvbmZpZyksXG4gICAgdmFyaWFibGU6IHoucmVjb3JkKHouc3RyaW5nKCksIHZhcmlhYmxlQ29uZmlnKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdktn/hcl2cdk",
|
|
3
|
-
"version": "0.24.0-pre.
|
|
3
|
+
"version": "0.24.0-pre.84",
|
|
4
4
|
"description": "Transform HCL into CDK",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"jsii-rosetta": "~5.9.0",
|
|
38
38
|
"prettier": "2.8.8",
|
|
39
39
|
"reserved-words": "0.1.2",
|
|
40
|
-
"zod": "
|
|
41
|
-
"@cdktn/
|
|
42
|
-
"@cdktn/
|
|
43
|
-
"@cdktn/provider-generator": "0.24.0-pre.
|
|
44
|
-
"@cdktn/provider-schema": "0.24.0-pre.
|
|
45
|
-
"cdktn": "0.24.0-pre.
|
|
40
|
+
"zod": "4.4.3",
|
|
41
|
+
"@cdktn/hcl2json": "0.24.0-pre.84",
|
|
42
|
+
"@cdktn/commons": "0.24.0-pre.84",
|
|
43
|
+
"@cdktn/provider-generator": "0.24.0-pre.84",
|
|
44
|
+
"@cdktn/provider-schema": "0.24.0-pre.84",
|
|
45
|
+
"cdktn": "0.24.0-pre.84"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/babel__generator": "7.27.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@types/prettier": "2.7.3",
|
|
54
54
|
"@types/reserved-words": "0.1.4",
|
|
55
55
|
"execa": "5.1.1",
|
|
56
|
-
"fs-extra": "11.3.
|
|
56
|
+
"fs-extra": "11.3.6",
|
|
57
57
|
"tsx": "4.6.1",
|
|
58
58
|
"typescript": "^5.0.0"
|
|
59
59
|
},
|
package/src/index.ts
CHANGED
|
@@ -76,7 +76,7 @@ export async function getParsedHcl(hcl: string) {
|
|
|
76
76
|
} catch (err) {
|
|
77
77
|
throw new Error(`Error: HCL-JSON does not conform to schema. This is not expected, please file a bug under https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug%2C+new%2C+feature%2Fconvert&template=bug-report.yml&title=
|
|
78
78
|
Please include this information:
|
|
79
|
-
${JSON.stringify((err as z.ZodError).
|
|
79
|
+
${JSON.stringify((err as z.ZodError).issues)}`);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
return plan;
|
package/src/schema.ts
CHANGED
|
@@ -28,13 +28,13 @@ const variableConfig = tfObject({
|
|
|
28
28
|
});
|
|
29
29
|
export type Variable = z.infer<typeof variableConfig>;
|
|
30
30
|
|
|
31
|
-
const providerConfig = z.array(z.record(z.any()));
|
|
31
|
+
const providerConfig = z.array(z.record(z.string(), z.any()));
|
|
32
32
|
export type Provider = z.infer<typeof providerConfig>;
|
|
33
33
|
|
|
34
|
-
const moduleConfig = z.array(z.object({ source: z.string() }).
|
|
34
|
+
const moduleConfig = z.array(z.object({ source: z.string() }).loose());
|
|
35
35
|
export type Module = z.infer<typeof moduleConfig>;
|
|
36
36
|
|
|
37
|
-
const resourceConfig = z.array(z.record(z.any()));
|
|
37
|
+
const resourceConfig = z.array(z.record(z.string(), z.any()));
|
|
38
38
|
export type Resource = z.infer<typeof resourceConfig>;
|
|
39
39
|
export type Data = Resource;
|
|
40
40
|
|
|
@@ -53,22 +53,22 @@ const providerSpecification = z.union([
|
|
|
53
53
|
const terraformConfig = z
|
|
54
54
|
.object({
|
|
55
55
|
required_version: z.string(),
|
|
56
|
-
required_providers: z.array(z.record(providerSpecification)),
|
|
57
|
-
backend: z.record(z.array(z.record(z.any()))),
|
|
56
|
+
required_providers: z.array(z.record(z.string(), providerSpecification)),
|
|
57
|
+
backend: z.record(z.string(), z.array(z.record(z.string(), z.any()))),
|
|
58
58
|
})
|
|
59
59
|
.partial();
|
|
60
60
|
export type TerraformConfig = z.infer<typeof terraformConfig>;
|
|
61
61
|
|
|
62
62
|
export const schema = z
|
|
63
63
|
.object({
|
|
64
|
-
data: z.record(z.record(resourceConfig)),
|
|
64
|
+
data: z.record(z.string(), z.record(z.string(), resourceConfig)),
|
|
65
65
|
import: z.array(importConfig),
|
|
66
|
-
locals: z.array(z.record(z.any())),
|
|
67
|
-
module: z.record(moduleConfig),
|
|
68
|
-
output: z.record(outputConfig),
|
|
69
|
-
provider: z.record(providerConfig),
|
|
70
|
-
resource: z.record(z.record(resourceConfig)),
|
|
66
|
+
locals: z.array(z.record(z.string(), z.any())),
|
|
67
|
+
module: z.record(z.string(), moduleConfig),
|
|
68
|
+
output: z.record(z.string(), outputConfig),
|
|
69
|
+
provider: z.record(z.string(), providerConfig),
|
|
70
|
+
resource: z.record(z.string(), z.record(z.string(), resourceConfig)),
|
|
71
71
|
terraform: z.array(terraformConfig),
|
|
72
|
-
variable: z.record(variableConfig),
|
|
72
|
+
variable: z.record(z.string(), variableConfig),
|
|
73
73
|
})
|
|
74
74
|
.partial();
|