@cdktn/hcl2cdk 0.23.0-pre.4 → 0.23.0-pre.40

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.
Files changed (86) hide show
  1. package/ambient.d.ts +0 -1
  2. package/build/__tests__/coerceType.test.js +165 -0
  3. package/build/__tests__/expressionToTs.test.js +693 -0
  4. package/build/__tests__/expressions.test.js +415 -0
  5. package/build/__tests__/findExpressionType.test.js +105 -0
  6. package/build/__tests__/functions.test.js +605 -0
  7. package/build/__tests__/generation.test.js +45 -0
  8. package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
  9. package/build/__tests__/partialCode.test.js +390 -0
  10. package/build/__tests__/terraformSchema.test.js +105 -0
  11. package/build/__tests__/testHelpers.js +16 -0
  12. package/build/coerceType.js +240 -0
  13. package/build/dynamic-blocks.js +44 -0
  14. package/build/expressions.js +633 -0
  15. package/build/function-bindings/functions.generated.js +1142 -0
  16. package/build/function-bindings/functions.js +73 -0
  17. package/build/generation.js +676 -0
  18. package/{lib → build}/index.d.ts +2 -2
  19. package/build/index.js +364 -0
  20. package/build/iteration.js +87 -0
  21. package/build/jsii-rosetta-workarounds.js +126 -0
  22. package/build/partialCode.js +116 -0
  23. package/build/provider.js +40 -0
  24. package/build/references.js +141 -0
  25. package/build/schema.js +81 -0
  26. package/build/telemetryAllowList.json +24 -0
  27. package/build/terraformSchema.js +136 -0
  28. package/build/types.js +3 -0
  29. package/build/utils.js +25 -0
  30. package/build/variables.js +172 -0
  31. package/package.json +19 -19
  32. package/tsconfig.json +4 -2
  33. package/lib/__tests__/coerceType.test.js +0 -165
  34. package/lib/__tests__/expressionToTs.test.js +0 -693
  35. package/lib/__tests__/expressions.test.js +0 -415
  36. package/lib/__tests__/findExpressionType.test.js +0 -105
  37. package/lib/__tests__/functions.test.js +0 -605
  38. package/lib/__tests__/generation.test.js +0 -45
  39. package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
  40. package/lib/__tests__/partialCode.test.js +0 -390
  41. package/lib/__tests__/terraformSchema.test.js +0 -105
  42. package/lib/__tests__/testHelpers.js +0 -16
  43. package/lib/coerceType.js +0 -240
  44. package/lib/dynamic-blocks.js +0 -44
  45. package/lib/expressions.js +0 -634
  46. package/lib/function-bindings/functions.generated.js +0 -1142
  47. package/lib/function-bindings/functions.js +0 -73
  48. package/lib/generation.js +0 -676
  49. package/lib/index.js +0 -364
  50. package/lib/iteration.js +0 -87
  51. package/lib/jsii-rosetta-workarounds.js +0 -126
  52. package/lib/partialCode.js +0 -116
  53. package/lib/provider.js +0 -40
  54. package/lib/references.js +0 -141
  55. package/lib/schema.js +0 -81
  56. package/lib/terraformSchema.js +0 -136
  57. package/lib/types.js +0 -3
  58. package/lib/utils.js +0 -25
  59. package/lib/variables.js +0 -172
  60. /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
  61. /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
  62. /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
  63. /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
  64. /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
  65. /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
  66. /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
  67. /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
  68. /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
  69. /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
  70. /package/{lib → build}/coerceType.d.ts +0 -0
  71. /package/{lib → build}/dynamic-blocks.d.ts +0 -0
  72. /package/{lib → build}/expressions.d.ts +0 -0
  73. /package/{lib → build}/function-bindings/functions.d.ts +0 -0
  74. /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
  75. /package/{lib → build}/generation.d.ts +0 -0
  76. /package/{lib → build}/iteration.d.ts +0 -0
  77. /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
  78. /package/{lib → build}/partialCode.d.ts +0 -0
  79. /package/{lib → build}/provider.d.ts +0 -0
  80. /package/{lib → build}/references.d.ts +0 -0
  81. /package/{lib → build}/schema.d.ts +0 -0
  82. /package/{lib → build}/terraformSchema.d.ts +0 -0
  83. /package/{lib → build}/types.d.ts +0 -0
  84. /package/{lib → build}/utils.d.ts +0 -0
  85. /package/{lib → build}/variables.d.ts +0 -0
  86. /package/{lib → src}/telemetryAllowList.json +0 -0
package/ambient.d.ts CHANGED
@@ -11,4 +11,3 @@ declare module 'child_process' {
11
11
 
12
12
  declare module 'tunnel-agent';
13
13
  declare module 'deep-equal';
14
- declare module "archiver";
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // Copyright (c) HashiCorp, Inc
7
+ // SPDX-License-Identifier: MPL-2.0
8
+ const coerceType_1 = require("../coerceType");
9
+ const template_1 = __importDefault(require("@babel/template"));
10
+ const generator_1 = __importDefault(require("@babel/generator"));
11
+ function expressionify(code) {
12
+ return template_1.default.ast(code).expression;
13
+ }
14
+ function generateCode(ast) {
15
+ return (0, generator_1.default)(ast).code;
16
+ }
17
+ const scope = {
18
+ importables: [],
19
+ variables: {
20
+ a_user_defined_variable: {
21
+ resource: "var",
22
+ variableName: "aUserDefinedVariable",
23
+ },
24
+ a_user_defined_local: {
25
+ resource: "var",
26
+ variableName: "aUserDefinedTerraformLocal",
27
+ },
28
+ },
29
+ };
30
+ describe("coerceType", () => {
31
+ it.each([
32
+ { code: `"hello-world"`, type: "string", targetType: undefined },
33
+ { code: `"hello-world"`, type: "string", targetType: "string" },
34
+ ])("should change nothing for %p ", ({ code, type, targetType }) => {
35
+ expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(code);
36
+ });
37
+ it.each([
38
+ {
39
+ code: `"300"`,
40
+ type: "string",
41
+ targetType: "number",
42
+ expectedCode: `Token.asNumber("300")`,
43
+ },
44
+ {
45
+ code: `300`,
46
+ type: "number",
47
+ targetType: "string",
48
+ expectedCode: `Token.asString(300)`,
49
+ },
50
+ {
51
+ code: `"['foo', 'bar']"`,
52
+ type: "string",
53
+ targetType: ["list", "string"],
54
+ expectedCode: `Token.asList("['foo', 'bar']")`,
55
+ },
56
+ {
57
+ code: `"[1,2,3]"`,
58
+ type: "string",
59
+ targetType: ["list", "number"],
60
+ expectedCode: `Token.asNumberList("[1,2,3]")`,
61
+ },
62
+ {
63
+ code: `"['foo', 'bar']"`,
64
+ type: "string",
65
+ targetType: ["set", "string"],
66
+ expectedCode: `Token.asList("['foo', 'bar']")`,
67
+ },
68
+ {
69
+ code: `"[1,2,3]"`,
70
+ type: "string",
71
+ targetType: ["set", "number"],
72
+ expectedCode: `Token.asNumberList("[1,2,3]")`,
73
+ },
74
+ // We don't have a token function for boolean lists, so we need to take an asAny
75
+ {
76
+ code: `"[true,false,true]"`,
77
+ type: "string",
78
+ targetType: ["list", "bool"],
79
+ expectedCode: `Token.asAny("[true,false,true]")`,
80
+ },
81
+ {
82
+ code: `"{ foo: 'bar' }"`,
83
+ type: "string",
84
+ targetType: ["map", "string"],
85
+ expectedCode: `Token.asStringMap("{ foo: 'bar' }")`,
86
+ },
87
+ {
88
+ code: `"{ foo: 1 }"`,
89
+ type: "string",
90
+ targetType: ["map", "number"],
91
+ expectedCode: `Token.asNumberMap("{ foo: 1 }")`,
92
+ },
93
+ {
94
+ code: `"{ foo: true }"`,
95
+ type: "string",
96
+ targetType: ["map", "bool"],
97
+ expectedCode: `Token.asBooleanMap("{ foo: true }")`,
98
+ },
99
+ {
100
+ code: `"{ foo: {bar: true} }"`,
101
+ type: "string",
102
+ targetType: ["map", ["map", "boolean"]],
103
+ expectedCode: `Token.asAnyMap("{ foo: {bar: true} }")`,
104
+ },
105
+ ])("should use Token functions %p", ({ code, type, targetType, expectedCode }) => {
106
+ expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
107
+ });
108
+ it.each([
109
+ {
110
+ code: `aUserDefinedVariable.value`,
111
+ type: "dynamic",
112
+ targetType: "string",
113
+ expectedCode: `aUserDefinedVariable.stringValue`,
114
+ },
115
+ {
116
+ code: `aUserDefinedVariable.value`,
117
+ type: "dynamic",
118
+ targetType: "number",
119
+ expectedCode: `aUserDefinedVariable.numberValue`,
120
+ },
121
+ {
122
+ code: `aUserDefinedVariable.value`,
123
+ type: "dynamic",
124
+ targetType: ["list", "string"],
125
+ expectedCode: `aUserDefinedVariable.listValue`,
126
+ },
127
+ {
128
+ code: `aUserDefinedVariable.value`,
129
+ type: "dynamic",
130
+ targetType: "bool",
131
+ expectedCode: `aUserDefinedVariable.booleanValue`,
132
+ },
133
+ ])("should use TerraformVariables accessors %p", ({ code, type, targetType, expectedCode }) => {
134
+ expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
135
+ });
136
+ it.each([
137
+ {
138
+ code: `aUserDefinedTerraformLocal.value`,
139
+ type: "dynamic",
140
+ targetType: "string",
141
+ expectedCode: `aUserDefinedTerraformLocal.stringValue`,
142
+ },
143
+ {
144
+ code: `aUserDefinedTerraformLocal.value`,
145
+ type: "dynamic",
146
+ targetType: "number",
147
+ expectedCode: `aUserDefinedTerraformLocal.numberValue`,
148
+ },
149
+ {
150
+ code: `aUserDefinedTerraformLocal.value`,
151
+ type: "dynamic",
152
+ targetType: ["list", "string"],
153
+ expectedCode: `aUserDefinedTerraformLocal.listValue`,
154
+ },
155
+ {
156
+ code: `aUserDefinedTerraformLocal.value`,
157
+ type: "dynamic",
158
+ targetType: "bool",
159
+ expectedCode: `aUserDefinedTerraformLocal.booleanValue`,
160
+ },
161
+ ])("should use TerraformLocal accessors %p", ({ code, type, targetType, expectedCode }) => {
162
+ expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
163
+ });
164
+ });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlVHlwZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9jb2VyY2VUeXBlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUEyQztBQUMzQywrREFBdUM7QUFDdkMsaUVBQXdDO0FBRXhDLFNBQVMsYUFBYSxDQUFDLElBQVk7SUFDakMsT0FBUSxrQkFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVMsQ0FBQyxVQUFVLENBQUM7QUFDaEQsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLEdBQVE7SUFDNUIsT0FBTyxJQUFBLG1CQUFRLEVBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLEtBQUssR0FBUTtJQUNqQixXQUFXLEVBQUUsRUFBRTtJQUNmLFNBQVMsRUFBRTtRQUNULHVCQUF1QixFQUFFO1lBQ3ZCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLHNCQUFzQjtTQUNyQztRQUNELG9CQUFvQixFQUFFO1lBQ3BCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLDRCQUE0QjtTQUMzQztLQUNGO0NBQ0YsQ0FBQztBQUVGLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO1FBQ2hFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7S0FDaEUsQ0FBQyxDQUFDLCtCQUErQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7UUFDakUsTUFBTSxDQUNKLFlBQVksQ0FDVixJQUFBLHVC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SSxFQUFFLGtDQUFrQztZQUN4QyxJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFlBQVksRUFBRSx5Q0FBeUM7U0FDeEQ7S0FDRixDQUFDLENBQ0Esd0NBQXdDLEVBQ3hDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1FBQzNDLE1BQU0sQ0FDSixZQUFZLENBQ1YsSUFBQSx1QkFBVSxFQUNSLEtBQUssRUFDTCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQ25CLElBQVcsRUFDWCxVQUFpQixDQUNsQixDQUNGLENBQ0YsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBjb2VyY2VUeXBlIH0gZnJvbSBcIi4uL2NvZXJjZVR5cGVcIjtcbmltcG9ydCB0ZW1wbGF0ZSBmcm9tIFwiQGJhYmVsL3RlbXBsYXRlXCI7XG5pbXBvcnQgZ2VuZXJhdGUgZnJvbSBcIkBiYWJlbC9nZW5lcmF0b3JcIjtcblxuZnVuY3Rpb24gZXhwcmVzc2lvbmlmeShjb2RlOiBzdHJpbmcpIHtcbiAgcmV0dXJuICh0ZW1wbGF0ZS5hc3QoY29kZSkgYXMgYW55KS5leHByZXNzaW9uO1xufVxuZnVuY3Rpb24gZ2VuZXJhdGVDb2RlKGFzdDogYW55KSB7XG4gIHJldHVybiBnZW5lcmF0ZShhc3QpLmNvZGU7XG59XG5cbmNvbnN0IHNjb3BlOiBhbnkgPSB7XG4gIGltcG9ydGFibGVzOiBbXSxcbiAgdmFyaWFibGVzOiB7XG4gICAgYV91c2VyX2RlZmluZWRfdmFyaWFibGU6IHtcbiAgICAgIHJlc291cmNlOiBcInZhclwiLFxuICAgICAgdmFyaWFibGVOYW1lOiBcImFVc2VyRGVmaW5lZFZhcmlhYmxlXCIsXG4gICAgfSxcbiAgICBhX3VzZXJfZGVmaW5lZF9sb2NhbDoge1xuICAgICAgcmVzb3VyY2U6IFwidmFyXCIsXG4gICAgICB2YXJpYWJsZU5hbWU6IFwiYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWxcIixcbiAgICB9LFxuICB9LFxufTtcblxuZGVzY3JpYmUoXCJjb2VyY2VUeXBlXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgeyBjb2RlOiBgXCJoZWxsby13b3JsZFwiYCwgdHlwZTogXCJzdHJpbmdcIiwgdGFyZ2V0VHlwZTogdW5kZWZpbmVkIH0sXG4gICAgeyBjb2RlOiBgXCJoZWxsby13b3JsZFwiYCwgdHlwZTogXCJzdHJpbmdcIiwgdGFyZ2V0VHlwZTogXCJzdHJpbmdcIiB9LFxuICBdKShcInNob3VsZCBjaGFuZ2Ugbm90aGluZyBmb3IgJXAgXCIsICh7IGNvZGUsIHR5cGUsIHRhcmdldFR5cGUgfSkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdlbmVyYXRlQ29kZShcbiAgICAgICAgY29lcmNlVHlwZShzY29wZSwgZXhwcmVzc2lvbmlmeShjb2RlKSwgdHlwZSBhcyBhbnksIHRhcmdldFR5cGUgYXMgYW55KSxcbiAgICAgICksXG4gICAgKS50b0VxdWFsKGNvZGUpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICB7XG4gICAgICBjb2RlOiBgXCIzMDBcImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJudW1iZXJcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTnVtYmVyKFwiMzAwXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGAzMDBgLFxuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIHRhcmdldFR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc1N0cmluZygzMDApYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsnZm9vJywgJ2JhciddXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc0xpc3QoXCJbJ2ZvbycsICdiYXInXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbMSwyLDNdXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJudW1iZXJcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc051bWJlckxpc3QoXCJbMSwyLDNdXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsnZm9vJywgJ2JhciddXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcInNldFwiLCBcInN0cmluZ1wiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTGlzdChcIlsnZm9vJywgJ2JhciddXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsxLDIsM11cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wic2V0XCIsIFwibnVtYmVyXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNOdW1iZXJMaXN0KFwiWzEsMiwzXVwiKWAsXG4gICAgfSxcbiAgICAvLyBXZSBkb24ndCBoYXZlIGEgdG9rZW4gZnVuY3Rpb24gZm9yIGJvb2xlYW4gbGlzdHMsIHNvIHdlIG5lZWQgdG8gdGFrZSBhbiBhc0FueVxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlt0cnVlLGZhbHNlLHRydWVdXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJib29sXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNBbnkoXCJbdHJ1ZSxmYWxzZSx0cnVlXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJ7IGZvbzogJ2JhcicgfVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJtYXBcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc1N0cmluZ01hcChcInsgZm9vOiAnYmFyJyB9XCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcInsgZm9vOiAxIH1cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wibWFwXCIsIFwibnVtYmVyXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNOdW1iZXJNYXAoXCJ7IGZvbzogMSB9XCIpYCxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY29kZTogYFwieyBmb286IHRydWUgfVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJtYXBcIiwgXCJib29sXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNCb29sZWFuTWFwKFwieyBmb286IHRydWUgfVwiKWAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNvZGU6IGBcInsgZm9vOiB7YmFyOiB0cnVlfSB9XCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcIm1hcFwiLCBbXCJtYXBcIiwgXCJib29sZWFuXCJdXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzQW55TWFwKFwieyBmb286IHtiYXI6IHRydWV9IH1cIilgLFxuICAgIH0sXG4gIF0pKFxuICAgIFwic2hvdWxkIHVzZSBUb2tlbiBmdW5jdGlvbnMgJXBcIixcbiAgICAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlLCBleHBlY3RlZENvZGUgfSkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbmlmeShjb2RlKSxcbiAgICAgICAgICAgIHR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGFyZ2V0VHlwZSBhcyBhbnksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkudG9FcXVhbChleHBlY3RlZENvZGUpO1xuICAgIH0sXG4gICk7XG5cbiAgaXQuZWFjaChbXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLnN0cmluZ1ZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS5udW1iZXJWYWx1ZWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUubGlzdFZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwiYm9vbFwiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUuYm9vbGVhblZhbHVlYCxcbiAgICB9LFxuICBdKShcbiAgICBcInNob3VsZCB1c2UgVGVycmFmb3JtVmFyaWFibGVzIGFjY2Vzc29ycyAlcFwiLFxuICAgICh7IGNvZGUsIHR5cGUsIHRhcmdldFR5cGUsIGV4cGVjdGVkQ29kZSB9KSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGdlbmVyYXRlQ29kZShcbiAgICAgICAgICBjb2VyY2VUeXBlKFxuICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICBleHByZXNzaW9uaWZ5KGNvZGUpLFxuICAgICAgICAgICAgdHlwZSBhcyBhbnksXG4gICAgICAgICAgICB0YXJnZXRUeXBlIGFzIGFueSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS50b0VxdWFsKGV4cGVjdGVkQ29kZSk7XG4gICAgfSxcbiAgKTtcblxuICBpdC5lYWNoKFtcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwuc3RyaW5nVmFsdWVgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJudW1iZXJcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLm51bWJlclZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC5saXN0VmFsdWVgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJib29sXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC5ib29sZWFuVmFsdWVgLFxuICAgIH0sXG4gIF0pKFxuICAgIFwic2hvdWxkIHVzZSBUZXJyYWZvcm1Mb2NhbCBhY2Nlc3NvcnMgJXBcIixcbiAgICAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlLCBleHBlY3RlZENvZGUgfSkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbmlmeShjb2RlKSxcbiAgICAgICAgICAgIHR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGFyZ2V0VHlwZSBhcyBhbnksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkudG9FcXVhbChleHBlY3RlZENvZGUpO1xuICAgIH0sXG4gICk7XG59KTtcbiJdfQ==