projen 0.100.3 → 0.100.4

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 (144) hide show
  1. package/.jsii +136 -75
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +4 -4
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/circleci/circleci.js +1 -1
  33. package/lib/component.js +1 -1
  34. package/lib/dependencies.js +1 -1
  35. package/lib/dev-env.js +1 -1
  36. package/lib/docker-compose/docker-compose-service.js +1 -1
  37. package/lib/docker-compose/docker-compose.js +1 -1
  38. package/lib/file.js +1 -1
  39. package/lib/gitattributes.js +1 -1
  40. package/lib/github/actions-provider.js +1 -1
  41. package/lib/github/auto-approve.js +1 -1
  42. package/lib/github/auto-merge.js +1 -1
  43. package/lib/github/auto-queue.js +1 -1
  44. package/lib/github/dependabot.js +1 -1
  45. package/lib/github/dependency-review.js +1 -1
  46. package/lib/github/github-credentials.js +1 -1
  47. package/lib/github/github-project.js +1 -1
  48. package/lib/github/github.js +1 -1
  49. package/lib/github/merge-queue.js +1 -1
  50. package/lib/github/mergify.js +1 -1
  51. package/lib/github/pr-template.js +1 -1
  52. package/lib/github/pull-request-backport.js +1 -1
  53. package/lib/github/pull-request-lint.js +1 -1
  54. package/lib/github/stale.js +1 -1
  55. package/lib/github/task-workflow-job.js +1 -1
  56. package/lib/github/task-workflow.js +1 -1
  57. package/lib/github/workflow-actions.js +1 -1
  58. package/lib/github/workflow-jobs.js +1 -1
  59. package/lib/github/workflow-steps.js +1 -1
  60. package/lib/github/workflows.js +1 -1
  61. package/lib/gitlab/configuration.js +1 -1
  62. package/lib/gitlab/gitlab-configuration.js +1 -1
  63. package/lib/gitlab/nested-configuration.js +1 -1
  64. package/lib/gitpod.js +1 -1
  65. package/lib/ignore-file.js +1 -1
  66. package/lib/ini.js +1 -1
  67. package/lib/java/java-project.js +1 -1
  68. package/lib/java/junit.js +1 -1
  69. package/lib/java/maven-compile.js +1 -1
  70. package/lib/java/maven-packaging.js +1 -1
  71. package/lib/java/maven-sample.js +1 -1
  72. package/lib/java/pom.js +2 -2
  73. package/lib/java/projenrc.js +1 -1
  74. package/lib/javascript/biome/biome.js +1 -1
  75. package/lib/javascript/bundler.js +1 -1
  76. package/lib/javascript/eslint.d.ts +36 -0
  77. package/lib/javascript/eslint.js +40 -3
  78. package/lib/javascript/jest.js +4 -4
  79. package/lib/javascript/license-checker.js +1 -1
  80. package/lib/javascript/node-package.js +1 -1
  81. package/lib/javascript/node-project.js +1 -1
  82. package/lib/javascript/npm-config.js +1 -1
  83. package/lib/javascript/prettier.js +1 -1
  84. package/lib/javascript/projenrc.js +1 -1
  85. package/lib/javascript/typescript-config.js +2 -2
  86. package/lib/javascript/upgrade-dependencies.js +2 -2
  87. package/lib/javascript/yarnrc.js +1 -1
  88. package/lib/json-patch.js +1 -1
  89. package/lib/json.js +1 -1
  90. package/lib/license.js +1 -1
  91. package/lib/logger.js +1 -1
  92. package/lib/makefile.js +1 -1
  93. package/lib/object-file.js +1 -1
  94. package/lib/project-build.js +1 -1
  95. package/lib/project-tree.js +1 -1
  96. package/lib/project.js +1 -1
  97. package/lib/projects.js +1 -1
  98. package/lib/projenrc-json.js +1 -1
  99. package/lib/projenrc.js +1 -1
  100. package/lib/python/pip.js +1 -1
  101. package/lib/python/poetry.js +2 -2
  102. package/lib/python/projenrc.js +1 -1
  103. package/lib/python/pyproject-toml-file.js +1 -1
  104. package/lib/python/pytest-sample.js +1 -1
  105. package/lib/python/pytest.js +1 -1
  106. package/lib/python/python-project.js +1 -1
  107. package/lib/python/python-sample.js +1 -1
  108. package/lib/python/requirements-file.js +1 -1
  109. package/lib/python/setuppy.js +1 -1
  110. package/lib/python/setuptools.js +1 -1
  111. package/lib/python/uv.js +1 -1
  112. package/lib/python/venv.js +1 -1
  113. package/lib/readme.js +1 -1
  114. package/lib/release/publisher.js +1 -1
  115. package/lib/release/release-trigger.js +1 -1
  116. package/lib/release/release.js +1 -1
  117. package/lib/renovatebot.js +1 -1
  118. package/lib/run-task.cjs +2 -2
  119. package/lib/sample-file.js +2 -2
  120. package/lib/source-code.js +1 -1
  121. package/lib/task.js +1 -1
  122. package/lib/tasks.js +1 -1
  123. package/lib/testing.js +1 -1
  124. package/lib/textfile.js +1 -1
  125. package/lib/toml.js +1 -1
  126. package/lib/typescript/projenrc-ts.js +1 -1
  127. package/lib/typescript/projenrc.d.ts +2 -0
  128. package/lib/typescript/projenrc.js +27 -6
  129. package/lib/typescript/typescript-typedoc.js +1 -1
  130. package/lib/typescript/typescript.d.ts +27 -3
  131. package/lib/typescript/typescript.js +87 -28
  132. package/lib/version.js +2 -2
  133. package/lib/vscode/devcontainer.js +1 -1
  134. package/lib/vscode/extensions.js +1 -1
  135. package/lib/vscode/launch-config.js +1 -1
  136. package/lib/vscode/settings.js +1 -1
  137. package/lib/vscode/vscode.js +1 -1
  138. package/lib/web/next.js +3 -3
  139. package/lib/web/postcss.js +1 -1
  140. package/lib/web/react.js +3 -3
  141. package/lib/web/tailwind.js +1 -1
  142. package/lib/xmlfile.js +1 -1
  143. package/lib/yaml.js +1 -1
  144. package/package.json +2 -2
@@ -63,7 +63,7 @@ var AiAgent;
63
63
  * ai.addInstructions("Always write comprehensive tests.");
64
64
  */
65
65
  class AiInstructions extends component_1.Component {
66
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.AiInstructions", version: "0.100.3" };
66
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.AiInstructions", version: "0.100.4" };
67
67
  /**
68
68
  * Returns projen-specific instructions for AI agents.
69
69
  */
@@ -167,7 +167,7 @@ class AiInstructions extends component_1.Component {
167
167
  }
168
168
  exports.AiInstructions = AiInstructions;
169
169
  class AiInstructionsFile extends file_1.FileBase {
170
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.AiInstructionsFile", version: "0.100.3" };
170
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.AiInstructionsFile", version: "0.100.4" };
171
171
  instructions = [];
172
172
  /**
173
173
  * Adds instructions to the instruction file.
@@ -12,7 +12,7 @@ const component_1 = require("../component");
12
12
  * Creates integration tests from entry points discovered in the test tree.
13
13
  */
14
14
  class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTestAutoDiscover", version: "0.100.3" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTestAutoDiscover", version: "0.100.4" };
16
16
  constructor(project, options) {
17
17
  super(project, options);
18
18
  for (const entrypoint of this.entrypoints) {
@@ -30,7 +30,7 @@ exports.IntegrationTestAutoDiscover = IntegrationTestAutoDiscover;
30
30
  * Creates lambdas from entry points discovered in the project's source tree.
31
31
  */
32
32
  class LambdaAutoDiscover extends cdk_1.AutoDiscoverBase {
33
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaAutoDiscover", version: "0.100.3" };
33
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaAutoDiscover", version: "0.100.4" };
34
34
  constructor(project, options) {
35
35
  super(project, {
36
36
  projectdir: options.srcdir,
@@ -50,7 +50,7 @@ exports.LambdaAutoDiscover = LambdaAutoDiscover;
50
50
  * Creates singleton lambdas from entry points discovered in the project's source tree.
51
51
  */
52
52
  class SingletonLambdaAutoDiscover extends cdk_1.AutoDiscoverBase {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.SingletonLambdaAutoDiscover", version: "0.100.3" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.SingletonLambdaAutoDiscover", version: "0.100.4" };
54
54
  constructor(project, options) {
55
55
  super(project, {
56
56
  projectdir: options.srcdir,
@@ -72,7 +72,7 @@ exports.SingletonLambdaAutoDiscover = SingletonLambdaAutoDiscover;
72
72
  * Creates edge lambdas from entry points discovered in the project's source tree.
73
73
  */
74
74
  class EdgeLambdaAutoDiscover extends cdk_1.AutoDiscoverBase {
75
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.EdgeLambdaAutoDiscover", version: "0.100.3" };
75
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.EdgeLambdaAutoDiscover", version: "0.100.4" };
76
76
  constructor(project, options) {
77
77
  super(project, {
78
78
  projectdir: options.srcdir,
@@ -94,7 +94,7 @@ exports.EdgeLambdaAutoDiscover = EdgeLambdaAutoDiscover;
94
94
  * source tree.
95
95
  */
96
96
  class LambdaExtensionAutoDiscover extends cdk_1.AutoDiscoverBase {
97
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtensionAutoDiscover", version: "0.100.3" };
97
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtensionAutoDiscover", version: "0.100.4" };
98
98
  constructor(project, options) {
99
99
  super(project, {
100
100
  projectdir: options.srcdir,
@@ -115,7 +115,7 @@ exports.LambdaExtensionAutoDiscover = LambdaExtensionAutoDiscover;
115
115
  * project's source and test trees.
116
116
  */
117
117
  class AutoDiscover extends component_1.Component {
118
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AutoDiscover", version: "0.100.3" };
118
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AutoDiscover", version: "0.100.4" };
119
119
  constructor(project, options) {
120
120
  super(project);
121
121
  if (options.lambdaAutoDiscover ?? true) {
@@ -14,7 +14,7 @@ const java_1 = require("../java");
14
14
  * @pjid awscdk-app-java
15
15
  */
16
16
  class AwsCdkJavaApp extends java_1.JavaProject {
17
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.100.3" };
17
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.100.4" };
18
18
  /**
19
19
  * The `cdk.json` file.
20
20
  */
@@ -14,7 +14,7 @@ const python_project_1 = require("../python/python-project");
14
14
  * @pjid awscdk-app-py
15
15
  */
16
16
  class AwsCdkPythonApp extends python_project_1.PythonProject {
17
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkPythonApp", version: "0.100.3" };
17
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkPythonApp", version: "0.100.4" };
18
18
  /**
19
19
  * Common CDK tasks.
20
20
  */
@@ -53,7 +53,7 @@ const integ_runner_1 = require("./integ-runner");
53
53
  * @pjid awscdk-app-ts
54
54
  */
55
55
  class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
56
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.100.3" };
56
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.100.4" };
57
57
  /**
58
58
  * The CDK version this app is using.
59
59
  */
@@ -253,7 +253,7 @@ class SampleCode extends component_1.Component {
253
253
  const outdir = this.project.outdir;
254
254
  const srcdir = path.join(outdir, this.appProject.srcdir);
255
255
  if (fs.existsSync(srcdir) &&
256
- fs.readdirSync(srcdir).filter((x) => x.endsWith(".ts"))) {
256
+ fs.readdirSync(srcdir).some((x) => x.endsWith(".ts"))) {
257
257
  return;
258
258
  }
259
259
  const srcImports = new Array();
@@ -285,7 +285,7 @@ app.synth();`;
285
285
  fs.writeFileSync(path.join(srcdir, this.appProject.appEntrypoint), srcCode);
286
286
  const testdir = path.join(outdir, this.appProject.testdir);
287
287
  if (fs.existsSync(testdir) &&
288
- fs.readdirSync(testdir).filter((x) => x.endsWith(".ts"))) {
288
+ fs.readdirSync(testdir).some((x) => x.endsWith(".ts"))) {
289
289
  return;
290
290
  }
291
291
  const testImports = new Array();
@@ -306,4 +306,4 @@ test('Snapshot', () => {
306
306
  fs.writeFileSync(path.join(testdir, `${appEntrypointName}.test.ts`), testCode);
307
307
  }
308
308
  }
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBeUM7QUFDekMsa0RBQWlEO0FBRWpELDhDQUl1QjtBQUV2Qiw4Q0FBcUQ7QUFDckQsa0NBQW9DO0FBQ3BDLG1EQUErQztBQUUvQyxxREFBZ0Q7QUFFaEQsNkNBQXlDO0FBQ3pDLDJDQUF1QztBQUN2QyxpREFBNkM7QUFnRjdDOzs7O0dBSUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGlDQUFvQjs7SUFDM0Q7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDYSxhQUFhLENBQVM7SUFFdEM7O09BRUc7SUFDYSxRQUFRLENBQVc7SUFFbkM7O09BRUc7SUFDYSxTQUFTLENBQVk7SUFFckIsT0FBTyxDQUFhO0lBRXBDLFlBQVksT0FBbUM7UUFDN0MsK0JBQStCO1FBQy9CLE1BQU0seUJBQXlCLEdBQzdCO1lBQ0UsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsZ0JBQWdCLEVBQUUsdUNBQTBCLENBQUMsU0FBUztZQUN0RCxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDZixXQUFXLEVBQUUsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSTtZQUNaLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsY0FBYyxFQUFFLElBQUk7WUFDcEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsY0FBYyxFQUFFLEtBQUs7WUFDckIsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLDBC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QUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN4RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN2RCxXQUFXLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFFdkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsS0FBSyxDQUNOLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzhCQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxpQkFBaUI7Ozs7Ozs7O0lBUXJFLENBQUM7UUFFRCxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLEVBQ2xELFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB0eXBlIHsgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgTm9kZVBhY2thZ2VNYW5hZ2VyLFxuICBSdW5CdW5kbGVUYXNrLFxuICBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB0eXBlIHsgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0IH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBBdXRvRGlzY292ZXIgfSBmcm9tIFwiLi9hdXRvLWRpc2NvdmVyXCI7XG5pbXBvcnQgdHlwZSB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHNKcyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzLWpzXCI7XG5pbXBvcnQgdHlwZSB7IENka0NvbmZpZ0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5pbXBvcnQgeyBDZGtDb25maWcgfSBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5pbXBvcnQgeyBDZGtUYXNrcyB9IGZyb20gXCIuL2Nkay10YXNrc1wiO1xuaW1wb3J0IHsgSW50ZWdSdW5uZXIgfSBmcm9tIFwiLi9pbnRlZy1ydW5uZXJcIjtcbmltcG9ydCB0eXBlIHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnNcbiAgZXh0ZW5kc1xuICAgIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgICBDZGtDb25maWdDb21tb25PcHRpb25zLFxuICAgIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwJ3MgZW50cnlwb2ludCAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdoaWNoIGlzXG4gICAqIFwic3JjXCIgYnkgZGVmYXVsdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpbi50c1wiXG4gICAqL1xuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgbGluZSB0byBleGVjdXRlIGluIG9yZGVyIHRvIHN5bnRoZXNpemUgdGhlIENESyBhcHBsaWNhdGlvblxuICAgKiAobGFuZ3VhZ2Ugc3BlY2lmaWMpLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRnVuY3Rpb25gIGZvciBlYWNoIGAubGFtYmRhLnRzYCBoYW5kbGVyXG4gICAqIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbmAgZm9yIGVhY2hcbiAgICogYC5lZGdlLWxhbWJkYS50c2AgaGFuZGxlciBpbiB5b3VyIHNvdXJjZSB0cmVlLiBJZiB0aGlzIGlzIGRpc2FibGVkLCB5b3UgY2FuXG4gICAqIG1hbnVhbGx5IGFkZCBhbiBgYXdzY2RrLkF1dG9EaXNjb3ZlcmAgY29tcG9uZW50IHRvIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZWRnZUxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzY2RrLlNpbmdsZXRvbkZ1bmN0aW9uYCBmb3IgZWFjaFxuICAgKiBgLnNpbmdsZXRvbi1sYW1iZGEudHNgIGhhbmRsZXIgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhblxuICAgKiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNpbmdsZXRvbkxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzY2RrLkxhbWJkYUV4dGVuc2lvbmAgZm9yIGVhY2ggYC5sYW1iZGEtZXh0ZW5zaW9uLnRzYFxuICAgKiBlbnRyeXBvaW50IGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZGlzY292ZXJzIGFuZCBjcmVhdGVzIGludGVncmF0aW9uIHRlc3RzIGZvciBlYWNoIGAuaW50ZWcudHNgXG4gICAqIGZpbGUgaW4gdW5kZXIgeW91ciB0ZXN0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciB0aGUgQVdTIENESyBpbnRlZy1ydW5uZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEludGVnUnVubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbi8qKlxuICogQVdTIENESyBhcHAgaW4gVHlwZVNjcmlwdFxuICpcbiAqIEBwamlkIGF3c2Nkay1hcHAtdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka1R5cGVTY3JpcHRBcHAgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQ0RLIHZlcnNpb24gdGhpcyBhcHAgaXMgdXNpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNka1ZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwIGVudHJ5cG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcHBFbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbW1vbiBDREsgdGFza3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFza3M6IENka1Rhc2tzO1xuXG4gIC8qKlxuICAgKiBjZGsuanNvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka0NvbmZpZzogQ2RrQ29uZmlnO1xuXG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgLy8gQ0RLIGRlZmF1bHQgY29tcGlsZXIgb3B0aW9uc1xuICAgIGNvbnN0IGNka0RlZmF1bHRDb21waWxlck9wdGlvbnM6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zW1wiY29tcGlsZXJPcHRpb25zXCJdID1cbiAgICAgIHtcbiAgICAgICAgdGFyZ2V0OiBcIkVTMjAyMlwiLFxuICAgICAgICBtb2R1bGU6IFwiTm9kZU5leHRcIixcbiAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24uTk9ERV9ORVhULFxuICAgICAgICBsaWI6IFtcImVzMjAyMlwiXSxcbiAgICAgICAgZGVjbGFyYXRpb246IHRydWUsXG4gICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICAgICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICAgICAgbm9JbXBsaWNpdFRoaXM6IHRydWUsXG4gICAgICAgIGFsd2F5c1N0cmljdDogdHJ1ZSxcbiAgICAgICAgbm9VbnVzZWRMb2NhbHM6IGZhbHNlLFxuICAgICAgICBub1VudXNlZFBhcmFtZXRlcnM6IGZhbHNlLFxuICAgICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IGZhbHNlLFxuICAgICAgICBpbmxpbmVTb3VyY2VNYXA6IHRydWUsXG4gICAgICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG4gICAgICAgIHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb246IGZhbHNlLFxuICAgICAgICB0eXBlUm9vdHM6IFtcIi4vbm9kZV9tb2R1bGVzL0B0eXBlc1wiXSxcbiAgICAgIH07XG5cbiAgICBsZXQgZmluYWxDb21waWxlck9wdGlvbnMgPSBjZGtEZWZhdWx0Q29tcGlsZXJPcHRpb25zO1xuICAgIGlmIChvcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgIC8vIERlZXAgbWVyZ2UgdXNlcidzIGBjb21waWxlck9wdGlvbnNgIG9udG8gQ0RLLXNwZWNpZmljIGRlZmF1bHRzLlxuICAgICAgZmluYWxDb21waWxlck9wdGlvbnMgPSBkZWVwTWVyZ2UoXG4gICAgICAgIFtjZGtEZWZhdWx0Q29tcGlsZXJPcHRpb25zLCBvcHRpb25zLnRzY29uZmlnLmNvbXBpbGVyT3B0aW9uc10sXG4gICAgICAgIHsgZGVzdHJ1Y3RpdmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ0RLIGRlZmF1bHQgZXhjbHVkZVxuICAgIGNvbnN0IGNka0RlZmF1bHRFeGNsdWRlID0gW1wibm9kZV9tb2R1bGVzXCIsIFwiY2RrLm91dFwiXTtcbiAgICBsZXQgZmluYWxFeGNsdWRlID0gY2RrRGVmYXVsdEV4Y2x1ZGU7XG4gICAgaWYgKG9wdGlvbnMudHNjb25maWc/LmV4Y2x1ZGUpIHtcbiAgICAgIC8vIE1lcmdlIGFuZCBkZWR1cGxpY2F0ZSB1c2VyJ3MgYGV4Y2x1ZGVgIHdpdGggQ0RLLXNwZWNpZmljIGRlZmF1bHRzLlxuICAgICAgZmluYWxFeGNsdWRlID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5jZGtEZWZhdWx0RXhjbHVkZSwgLi4ub3B0aW9ucy50c2NvbmZpZy5leGNsdWRlXSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBmaW5hbCBgdHNjb25maWdgIG9iamVjdCBwYXNzZWQgdG8gdGhlIHN1cGVyY2xhc3MuXG4gICAgICogSXQgaW5jb3Jwb3JhdGVzIEFXUyBDREsgZGVmYXVsdHMgKGRlcml2ZWQgZnJvbSBgY2RrRGVmYXVsdENvbXBpbGVyT3B0aW9uc2AgYW5kIGBjZGtEZWZhdWx0RXhjbHVkZWAgYWJvdmUpXG4gICAgICogYW5kIGFueSB1c2VyLXByb3ZpZGVkIG92ZXJyaWRlcy4gVGhlIGFpbSBpcyB0byBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCBDREsgYHRzY29uZmlnLmpzb25gOlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9ibG9iL21haW4vcGFja2FnZXMvYXdzLWNkay9saWIvaW5pdC10ZW1wbGF0ZXMvYXBwL3R5cGVzY3JpcHQvdHNjb25maWcuanNvblxuICAgICAqL1xuICAgIGNvbnN0IHRzY29uZmlnVG9TdXBlcjogVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLnRzY29uZmlnLCAvLyBQYXNzIHRocm91Z2ggYW55IG90aGVyIHRvcC1sZXZlbCB0c2NvbmZpZyBvcHRpb25zIGZyb20gdXNlclxuICAgICAgY29tcGlsZXJPcHRpb25zOiBmaW5hbENvbXBpbGVyT3B0aW9ucyxcbiAgICAgIGV4Y2x1ZGU6IGZpbmFsRXhjbHVkZSxcbiAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgYnVuZGxlck9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVyT3B0aW9ucyxcbiAgICAgICAgLy8gd2UgaW52b2tlIHRoZSBcImJ1bmRsZVwiIHRhc2sgYXMgcGFydCBvZiB0aGUgYnVpbGQgc3RlcCBpbiBjZGsuanNvbiBzb1xuICAgICAgICAvLyB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIGFkZGVkIHRvIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICAgICAgcnVuQnVuZGxlVGFzazogUnVuQnVuZGxlVGFzay5NQU5VQUwsXG4gICAgICB9LFxuICAgICAgdHNjb25maWc6IHRzY29uZmlnVG9TdXBlcixcbiAgICB9KTtcbiAgICB0aGlzLmNka0RlcHMgPSBuZXcgQXdzQ2RrRGVwc0pzKHRoaXMsIHtcbiAgICAgIGRlcGVuZGVuY3lUeXBlOiBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gXCJtYWluLnRzXCI7XG5cbiAgICAvLyBDTElcbiAgICB0aGlzLmFkZERldkRlcHMoYGF3cy1jZGtAJHt0aGlzLmNka0RlcHMuY2RrQ2xpVmVyc2lvbn1gKTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoU2lsZW50KTtcblxuICAgIGNvbnN0IHRzQ29uZmlnRmlsZSA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIGlmICghdHNDb25maWdGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgdHNjb25maWcuanNvblwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNka0NvbmZpZyA9IG5ldyBDZGtDb25maWcodGhpcywge1xuICAgICAgYnVpbGRDb21tYW5kOiB0aGlzLnJ1blRhc2tDb21tYW5kKHRoaXMuYnVuZGxlci5idW5kbGVUYXNrKSxcbiAgICAgIHdhdGNoSW5jbHVkZXM6IFtgJHt0aGlzLnNyY2Rpcn0vKiovKi50c2AsIGAke3RoaXMudGVzdGRpcn0vKiovKi50c2BdLFxuICAgICAgd2F0Y2hFeGNsdWRlczogW1xuICAgICAgICBcIlJFQURNRS5tZFwiLFxuICAgICAgICBcImNkayouanNvblwiLFxuICAgICAgICBcIioqLyouZC50c1wiLFxuICAgICAgICBcIioqLyouanNcIixcbiAgICAgICAgXCJ0c2NvbmZpZy5qc29uXCIsXG4gICAgICAgIFwicGFja2FnZSouanNvblwiLFxuICAgICAgICBcInlhcm4ubG9ja1wiLFxuICAgICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhcHA6IHRoaXMuZ2V0Q2RrQXBwKG9wdGlvbnMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShcIi5wYXJjZWwtY2FjaGUvXCIpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYCR7dGhpcy5jZGtDb25maWcuY2Rrb3V0fS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi5jZGsuc3RhZ2luZy9cIik7XG5cbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5leGNsdWRlLnB1c2godGhpcy5jZGtDb25maWcuY2Rrb3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXCJ0cy1ub2RlXCIpO1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcyk7XG4gICAgfVxuXG4gICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgdGVzdGRpcjogdGhpcy50ZXN0ZGlyLFxuICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgY2RrRGVwczogdGhpcy5jZGtEZXBzLFxuICAgICAgbGFtYmRhQXV0b0Rpc2NvdmVyOiBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgICAgZWRnZUxhbWJkYUF1dG9EaXNjb3Zlcjogb3B0aW9ucy5lZGdlTGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBzaW5nbGV0b25MYW1iZGFBdXRvRGlzY292ZXI6IG9wdGlvbnMuc2luZ2xldG9uTGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBsYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXI6IG9wdGlvbnMubGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBpbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXI6IG9wdGlvbnMuaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5leHBlcmltZW50YWxJbnRlZ1J1bm5lcikge1xuICAgICAgbmV3IEludGVnUnVubmVyKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrQXBwKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKTogc3RyaW5nIHtcbiAgICBpZiAob3B0aW9ucy5hcHAgJiYgb3B0aW9ucy5hcHBFbnRyeXBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IG9uZSBvZiAnYXBwJyBvciAnYXBwRW50cnlwb2ludCcgY2FuIGJlIHNwZWNpZmllZFwiKTtcbiAgICB9XG5cbiAgICAvLyBwcmVmZXIgYW4gZXhwbGljaXRseSBwcm92aWRlZCBhcHAgY29tbWFuZFxuICAgIGlmIChvcHRpb25zLmFwcCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuYXBwO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcEVudHJ5cG9pbnQgPSBwYXRoLnBvc2l4LmpvaW4odGhpcy5zcmNkaXIsIHRoaXMuYXBwRW50cnlwb2ludCk7XG5cbiAgICBjb25zdCB0c05vZGVDb25maWcgPSB0aGlzLnRzY29uZmlnPy5maWxlTmFtZVxuICAgICAgPyBgIC1QICR7dGhpcy50c2NvbmZpZz8uZmlsZU5hbWV9YFxuICAgICAgOiBcIlwiO1xuICAgIGNvbnN0IHRzTm9kZUFwcCA9IGB0cy1ub2RlJHt0c05vZGVDb25maWd9IC0tcHJlZmVyLXRzLWV4dHMgJHthcHBFbnRyeXBvaW50fWA7XG5cbiAgICBzd2l0Y2ggKHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgICBjb25zdCBidW5Uc0NvbmZpZyA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lXG4gICAgICAgICAgPyBgIC0tdHNjb25maWctb3ZlcnJpZGU9JHt0aGlzLnRzY29uZmlnPy5maWxlTmFtZX1gXG4gICAgICAgICAgOiBcIlwiO1xuICAgICAgICBjb25zdCBidW5FbnRyeXBvaW50ID0gZW5zdXJlUmVsYXRpdmVQYXRoUHJlZml4KGFwcEVudHJ5cG9pbnQpO1xuXG4gICAgICAgIC8vIGh0dHBzOi8vYnVuLnNoL2RvY3MvY2xpL3J1blxuICAgICAgICAvLyBidW4gY2FuIHJ1biB0cyBmaWxlcyBkaXJlY3RseVxuICAgICAgICByZXR1cm4gYGJ1biBydW4ke2J1blRzQ29uZmlnfSAke2J1bkVudHJ5cG9pbnR9YDtcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE06XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUM6XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOOlxuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWTpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk4yOlxuICAgICAgICAvLyB1c2UgbnB4IHdpdGggYWxzbyBmb3IgeWFybiAmIHBucG0gZHVlIHRvIHJlcG9ydGVkIGlzc3Vlc1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL2lzc3Vlcy80MTgwXG4gICAgICAgIHJldHVybiBgbnB4ICR7dHNOb2RlQXBwfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYG5weCAke3RzTm9kZUFwcH1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZXMgYSBwYXRoIGlzIHByb3Blcmx5IHByZWZpeGVkIHdpdGggJy4vJyBpZiBpdCdzIGEgcmVsYXRpdmUgcGF0aFxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVQYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBub3JtYWxpemVkIHBhdGhcbiAqL1xuZnVuY3Rpb24gZW5zdXJlUmVsYXRpdmVQYXRoUHJlZml4KGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgLy8gSWYgaXQncyBhbHJlYWR5IGFuIGFic29sdXRlIHBhdGgsIHJldHVybiBhcyBpc1xuICBpZiAocGF0aC5pc0Fic29sdXRlKGZpbGVQYXRoKSkge1xuICAgIHJldHVybiBmaWxlUGF0aDtcbiAgfVxuXG4gIC8vIElmIGl0IGFscmVhZHkgc3RhcnRzIHdpdGggLi8gb3IgLi4vLCByZXR1cm4gYXMgaXNcbiAgaWYgKGZpbGVQYXRoLnN0YXJ0c1dpdGgoXCIuL1wiKSB8fCBmaWxlUGF0aC5zdGFydHNXaXRoKFwiLi4vXCIpKSB7XG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBhZGQgLi8gcHJlZml4XG4gIHJldHVybiBgLi8ke2ZpbGVQYXRofWA7XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcFByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHA7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuYXBwUHJvamVjdCA9IHByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZSgpIHtcbiAgICBjb25zdCBvdXRkaXIgPSB0aGlzLnByb2plY3Qub3V0ZGlyO1xuICAgIGNvbnN0IHNyY2RpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC5zcmNkaXIpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoc3JjZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmMoc3JjZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoXCIudHNcIikpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjSW1wb3J0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgc3JjSW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgQXBwLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcIik7XG4gICAgc3JjSW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuXG4gICAgY29uc3Qgc3JjQ29kZSA9IGAke3NyY0ltcG9ydHMuam9pbihcIlxcblwiKX1cblxuZXhwb3J0IGNsYXNzIE15U3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIGRlZmluZSByZXNvdXJjZXMgaGVyZS4uLlxuICB9XG59XG5cbi8vIGZvciBkZXZlbG9wbWVudCwgdXNlIGFjY291bnQvcmVnaW9uIGZyb20gY2RrIGNsaVxuY29uc3QgZGV2RW52ID0ge1xuICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbn07XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxubmV3IE15U3RhY2soYXBwLCAnJHt0aGlzLnByb2plY3QubmFtZX0tZGV2JywgeyBlbnY6IGRldkVudiB9KTtcbi8vIG5ldyBNeVN0YWNrKGFwcCwgJyR7dGhpcy5wcm9qZWN0Lm5hbWV9LXByb2QnLCB7IGVudjogcHJvZEVudiB9KTtcblxuYXBwLnN5bnRoKCk7YDtcblxuICAgIGZzLm1rZGlyU3luYyhzcmNkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHNyY2RpciwgdGhpcy5hcHBQcm9qZWN0LmFwcEVudHJ5cG9pbnQpLCBzcmNDb2RlKTtcblxuICAgIGNvbnN0IHRlc3RkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmFwcFByb2plY3QudGVzdGRpcik7XG4gICAgaWYgKFxuICAgICAgZnMuZXhpc3RzU3luYyh0ZXN0ZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmModGVzdGRpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKFwiLnRzXCIpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRlc3RJbXBvcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICB0ZXN0SW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgQXBwIH0gZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICB0ZXN0SW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcIik7XG5cbiAgICBjb25zdCBhcHBFbnRyeXBvaW50TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICB0aGlzLmFwcFByb2plY3QuYXBwRW50cnlwb2ludCxcbiAgICAgIFwiLnRzXCIsXG4gICAgKTtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGAke3Rlc3RJbXBvcnRzLmpvaW4oXCJcXG5cIil9XG5pbXBvcnQgeyBNeVN0YWNrIH0gZnJvbSAnLi4vJHt0aGlzLmFwcFByb2plY3Quc3JjZGlyfS8ke2FwcEVudHJ5cG9pbnROYW1lfSc7XG5cbnRlc3QoJ1NuYXBzaG90JywgKCkgPT4ge1xuICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG4gIGNvbnN0IHN0YWNrID0gbmV3IE15U3RhY2soYXBwLCAndGVzdCcpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgZXhwZWN0KHRlbXBsYXRlLnRvSlNPTigpKS50b01hdGNoU25hcHNob3QoKTtcbn0pO2A7XG5cbiAgICBmcy5ta2RpclN5bmModGVzdGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbih0ZXN0ZGlyLCBgJHthcHBFbnRyeXBvaW50TmFtZX0udGVzdC50c2ApLFxuICAgICAgdGVzdENvZGUsXG4gICAgKTtcbiAgfVxufVxuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBeUM7QUFDekMsa0RBQWlEO0FBRWpELDhDQUl1QjtBQUV2Qiw4Q0FBcUQ7QUFDckQsa0NBQW9DO0FBQ3BDLG1EQUErQztBQUUvQyxxREFBZ0Q7QUFFaEQsNkNBQXlDO0FBQ3pDLDJDQUF1QztBQUN2QyxpREFBNkM7QUFnRjdDOzs7O0dBSUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGlDQUFvQjs7SUFDM0Q7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDYSxhQUFhLENBQVM7SUFFdEM7O09BRUc7SUFDYSxRQUFRLENBQVc7SUFFbkM7O09BRUc7SUFDYSxTQUFTLENBQVk7SUFFckIsT0FBTyxDQUFhO0lBRXBDLFlBQVksT0FBbUM7UUFDN0MsK0JBQStCO1FBQy9CLE1BQU0seUJBQXlCLEdBQzdCO1lBQ0UsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsZ0JBQWdCLEVBQUUsdUNBQTBCLENBQUMsU0FBUztZQUN0RCxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDZixXQUFXLEVBQUUsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSTtZQUNaLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsY0FBYyxFQUFFLElBQUk7WUFDcEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsY0FBYyxFQUFFLEtBQUs7WUFDckIsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLDBC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QUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN0RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN2RCxXQUFXLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFFdkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsS0FBSyxDQUNOLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzhCQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxpQkFBaUI7Ozs7Ozs7O0lBUXJFLENBQUM7UUFFRCxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLEVBQ2xELFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB0eXBlIHsgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgTm9kZVBhY2thZ2VNYW5hZ2VyLFxuICBSdW5CdW5kbGVUYXNrLFxuICBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB0eXBlIHsgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0IH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBBdXRvRGlzY292ZXIgfSBmcm9tIFwiLi9hdXRvLWRpc2NvdmVyXCI7XG5pbXBvcnQgdHlwZSB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHNKcyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzLWpzXCI7XG5pbXBvcnQgdHlwZSB7IENka0NvbmZpZ0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5pbXBvcnQgeyBDZGtDb25maWcgfSBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5pbXBvcnQgeyBDZGtUYXNrcyB9IGZyb20gXCIuL2Nkay10YXNrc1wiO1xuaW1wb3J0IHsgSW50ZWdSdW5uZXIgfSBmcm9tIFwiLi9pbnRlZy1ydW5uZXJcIjtcbmltcG9ydCB0eXBlIHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnNcbiAgZXh0ZW5kc1xuICAgIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgICBDZGtDb25maWdDb21tb25PcHRpb25zLFxuICAgIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwJ3MgZW50cnlwb2ludCAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdoaWNoIGlzXG4gICAqIFwic3JjXCIgYnkgZGVmYXVsdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpbi50c1wiXG4gICAqL1xuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgbGluZSB0byBleGVjdXRlIGluIG9yZGVyIHRvIHN5bnRoZXNpemUgdGhlIENESyBhcHBsaWNhdGlvblxuICAgKiAobGFuZ3VhZ2Ugc3BlY2lmaWMpLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRnVuY3Rpb25gIGZvciBlYWNoIGAubGFtYmRhLnRzYCBoYW5kbGVyXG4gICAqIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbmAgZm9yIGVhY2hcbiAgICogYC5lZGdlLWxhbWJkYS50c2AgaGFuZGxlciBpbiB5b3VyIHNvdXJjZSB0cmVlLiBJZiB0aGlzIGlzIGRpc2FibGVkLCB5b3UgY2FuXG4gICAqIG1hbnVhbGx5IGFkZCBhbiBgYXdzY2RrLkF1dG9EaXNjb3ZlcmAgY29tcG9uZW50IHRvIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZWRnZUxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzY2RrLlNpbmdsZXRvbkZ1bmN0aW9uYCBmb3IgZWFjaFxuICAgKiBgLnNpbmdsZXRvbi1sYW1iZGEudHNgIGhhbmRsZXIgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhblxuICAgKiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNpbmdsZXRvbkxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzY2RrLkxhbWJkYUV4dGVuc2lvbmAgZm9yIGVhY2ggYC5sYW1iZGEtZXh0ZW5zaW9uLnRzYFxuICAgKiBlbnRyeXBvaW50IGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZGlzY292ZXJzIGFuZCBjcmVhdGVzIGludGVncmF0aW9uIHRlc3RzIGZvciBlYWNoIGAuaW50ZWcudHNgXG4gICAqIGZpbGUgaW4gdW5kZXIgeW91ciB0ZXN0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciB0aGUgQVdTIENESyBpbnRlZy1ydW5uZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEludGVnUnVubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbi8qKlxuICogQVdTIENESyBhcHAgaW4gVHlwZVNjcmlwdFxuICpcbiAqIEBwamlkIGF3c2Nkay1hcHAtdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka1R5cGVTY3JpcHRBcHAgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQ0RLIHZlcnNpb24gdGhpcyBhcHAgaXMgdXNpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNka1ZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwIGVudHJ5cG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcHBFbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbW1vbiBDREsgdGFza3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFza3M6IENka1Rhc2tzO1xuXG4gIC8qKlxuICAgKiBjZGsuanNvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka0NvbmZpZzogQ2RrQ29uZmlnO1xuXG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgLy8gQ0RLIGRlZmF1bHQgY29tcGlsZXIgb3B0aW9uc1xuICAgIGNvbnN0IGNka0RlZmF1bHRDb21waWxlck9wdGlvbnM6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zW1wiY29tcGlsZXJPcHRpb25zXCJdID1cbiAgICAgIHtcbiAgICAgICAgdGFyZ2V0OiBcIkVTMjAyMlwiLFxuICAgICAgICBtb2R1bGU6IFwiTm9kZU5leHRcIixcbiAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24uTk9ERV9ORVhULFxuICAgICAgICBsaWI6IFtcImVzMjAyMlwiXSxcbiAgICAgICAgZGVjbGFyYXRpb246IHRydWUsXG4gICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICAgICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICAgICAgbm9JbXBsaWNpdFRoaXM6IHRydWUsXG4gICAgICAgIGFsd2F5c1N0cmljdDogdHJ1ZSxcbiAgICAgICAgbm9VbnVzZWRMb2NhbHM6IGZhbHNlLFxuICAgICAgICBub1VudXNlZFBhcmFtZXRlcnM6IGZhbHNlLFxuICAgICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IGZhbHNlLFxuICAgICAgICBpbmxpbmVTb3VyY2VNYXA6IHRydWUsXG4gICAgICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG4gICAgICAgIHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb246IGZhbHNlLFxuICAgICAgICB0eXBlUm9vdHM6IFtcIi4vbm9kZV9tb2R1bGVzL0B0eXBlc1wiXSxcbiAgICAgIH07XG5cbiAgICBsZXQgZmluYWxDb21waWxlck9wdGlvbnMgPSBjZGtEZWZhdWx0Q29tcGlsZXJPcHRpb25zO1xuICAgIGlmIChvcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgIC8vIERlZXAgbWVyZ2UgdXNlcidzIGBjb21waWxlck9wdGlvbnNgIG9udG8gQ0RLLXNwZWNpZmljIGRlZmF1bHRzLlxuICAgICAgZmluYWxDb21waWxlck9wdGlvbnMgPSBkZWVwTWVyZ2UoXG4gICAgICAgIFtjZGtEZWZhdWx0Q29tcGlsZXJPcHRpb25zLCBvcHRpb25zLnRzY29uZmlnLmNvbXBpbGVyT3B0aW9uc10sXG4gICAgICAgIHsgZGVzdHJ1Y3RpdmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ0RLIGRlZmF1bHQgZXhjbHVkZVxuICAgIGNvbnN0IGNka0RlZmF1bHRFeGNsdWRlID0gW1wibm9kZV9tb2R1bGVzXCIsIFwiY2RrLm91dFwiXTtcbiAgICBsZXQgZmluYWxFeGNsdWRlID0gY2RrRGVmYXVsdEV4Y2x1ZGU7XG4gICAgaWYgKG9wdGlvbnMudHNjb25maWc/LmV4Y2x1ZGUpIHtcbiAgICAgIC8vIE1lcmdlIGFuZCBkZWR1cGxpY2F0ZSB1c2VyJ3MgYGV4Y2x1ZGVgIHdpdGggQ0RLLXNwZWNpZmljIGRlZmF1bHRzLlxuICAgICAgZmluYWxFeGNsdWRlID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5jZGtEZWZhdWx0RXhjbHVkZSwgLi4ub3B0aW9ucy50c2NvbmZpZy5leGNsdWRlXSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBmaW5hbCBgdHNjb25maWdgIG9iamVjdCBwYXNzZWQgdG8gdGhlIHN1cGVyY2xhc3MuXG4gICAgICogSXQgaW5jb3Jwb3JhdGVzIEFXUyBDREsgZGVmYXVsdHMgKGRlcml2ZWQgZnJvbSBgY2RrRGVmYXVsdENvbXBpbGVyT3B0aW9uc2AgYW5kIGBjZGtEZWZhdWx0RXhjbHVkZWAgYWJvdmUpXG4gICAgICogYW5kIGFueSB1c2VyLXByb3ZpZGVkIG92ZXJyaWRlcy4gVGhlIGFpbSBpcyB0byBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCBDREsgYHRzY29uZmlnLmpzb25gOlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9ibG9iL21haW4vcGFja2FnZXMvYXdzLWNkay9saWIvaW5pdC10ZW1wbGF0ZXMvYXBwL3R5cGVzY3JpcHQvdHNjb25maWcuanNvblxuICAgICAqL1xuICAgIGNvbnN0IHRzY29uZmlnVG9TdXBlcjogVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLnRzY29uZmlnLCAvLyBQYXNzIHRocm91Z2ggYW55IG90aGVyIHRvcC1sZXZlbCB0c2NvbmZpZyBvcHRpb25zIGZyb20gdXNlclxuICAgICAgY29tcGlsZXJPcHRpb25zOiBmaW5hbENvbXBpbGVyT3B0aW9ucyxcbiAgICAgIGV4Y2x1ZGU6IGZpbmFsRXhjbHVkZSxcbiAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgYnVuZGxlck9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVyT3B0aW9ucyxcbiAgICAgICAgLy8gd2UgaW52b2tlIHRoZSBcImJ1bmRsZVwiIHRhc2sgYXMgcGFydCBvZiB0aGUgYnVpbGQgc3RlcCBpbiBjZGsuanNvbiBzb1xuICAgICAgICAvLyB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIGFkZGVkIHRvIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICAgICAgcnVuQnVuZGxlVGFzazogUnVuQnVuZGxlVGFzay5NQU5VQUwsXG4gICAgICB9LFxuICAgICAgdHNjb25maWc6IHRzY29uZmlnVG9TdXBlcixcbiAgICB9KTtcbiAgICB0aGlzLmNka0RlcHMgPSBuZXcgQXdzQ2RrRGVwc0pzKHRoaXMsIHtcbiAgICAgIGRlcGVuZGVuY3lUeXBlOiBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gXCJtYWluLnRzXCI7XG5cbiAgICAvLyBDTElcbiAgICB0aGlzLmFkZERldkRlcHMoYGF3cy1jZGtAJHt0aGlzLmNka0RlcHMuY2RrQ2xpVmVyc2lvbn1gKTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoU2lsZW50KTtcblxuICAgIGNvbnN0IHRzQ29uZmlnRmlsZSA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIGlmICghdHNDb25maWdGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgdHNjb25maWcuanNvblwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNka0NvbmZpZyA9IG5ldyBDZGtDb25maWcodGhpcywge1xuICAgICAgYnVpbGRDb21tYW5kOiB0aGlzLnJ1blRhc2tDb21tYW5kKHRoaXMuYnVuZGxlci5idW5kbGVUYXNrKSxcbiAgICAgIHdhdGNoSW5jbHVkZXM6IFtgJHt0aGlzLnNyY2Rpcn0vKiovKi50c2AsIGAke3RoaXMudGVzdGRpcn0vKiovKi50c2BdLFxuICAgICAgd2F0Y2hFeGNsdWRlczogW1xuICAgICAgICBcIlJFQURNRS5tZFwiLFxuICAgICAgICBcImNkayouanNvblwiLFxuICAgICAgICBcIioqLyouZC50c1wiLFxuICAgICAgICBcIioqLyouanNcIixcbiAgICAgICAgXCJ0c2NvbmZpZy5qc29uXCIsXG4gICAgICAgIFwicGFja2FnZSouanNvblwiLFxuICAgICAgICBcInlhcm4ubG9ja1wiLFxuICAgICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhcHA6IHRoaXMuZ2V0Q2RrQXBwKG9wdGlvbnMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShcIi5wYXJjZWwtY2FjaGUvXCIpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYCR7dGhpcy5jZGtDb25maWcuY2Rrb3V0fS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi5jZGsuc3RhZ2luZy9cIik7XG5cbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5leGNsdWRlLnB1c2godGhpcy5jZGtDb25maWcuY2Rrb3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXCJ0cy1ub2RlXCIpO1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcyk7XG4gICAgfVxuXG4gICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgdGVzdGRpcjogdGhpcy50ZXN0ZGlyLFxuICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgY2RrRGVwczogdGhpcy5jZGtEZXBzLFxuICAgICAgbGFtYmRhQXV0b0Rpc2NvdmVyOiBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgICAgZWRnZUxhbWJkYUF1dG9EaXNjb3Zlcjogb3B0aW9ucy5lZGdlTGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBzaW5nbGV0b25MYW1iZGFBdXRvRGlzY292ZXI6IG9wdGlvbnMuc2luZ2xldG9uTGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBsYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXI6IG9wdGlvbnMubGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBpbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXI6IG9wdGlvbnMuaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5leHBlcmltZW50YWxJbnRlZ1J1bm5lcikge1xuICAgICAgbmV3IEludGVnUnVubmVyKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrQXBwKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKTogc3RyaW5nIHtcbiAgICBpZiAob3B0aW9ucy5hcHAgJiYgb3B0aW9ucy5hcHBFbnRyeXBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IG9uZSBvZiAnYXBwJyBvciAnYXBwRW50cnlwb2ludCcgY2FuIGJlIHNwZWNpZmllZFwiKTtcbiAgICB9XG5cbiAgICAvLyBwcmVmZXIgYW4gZXhwbGljaXRseSBwcm92aWRlZCBhcHAgY29tbWFuZFxuICAgIGlmIChvcHRpb25zLmFwcCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuYXBwO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcEVudHJ5cG9pbnQgPSBwYXRoLnBvc2l4LmpvaW4odGhpcy5zcmNkaXIsIHRoaXMuYXBwRW50cnlwb2ludCk7XG5cbiAgICBjb25zdCB0c05vZGVDb25maWcgPSB0aGlzLnRzY29uZmlnPy5maWxlTmFtZVxuICAgICAgPyBgIC1QICR7dGhpcy50c2NvbmZpZz8uZmlsZU5hbWV9YFxuICAgICAgOiBcIlwiO1xuICAgIGNvbnN0IHRzTm9kZUFwcCA9IGB0cy1ub2RlJHt0c05vZGVDb25maWd9IC0tcHJlZmVyLXRzLWV4dHMgJHthcHBFbnRyeXBvaW50fWA7XG5cbiAgICBzd2l0Y2ggKHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgICBjb25zdCBidW5Uc0NvbmZpZyA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lXG4gICAgICAgICAgPyBgIC0tdHNjb25maWctb3ZlcnJpZGU9JHt0aGlzLnRzY29uZmlnPy5maWxlTmFtZX1gXG4gICAgICAgICAgOiBcIlwiO1xuICAgICAgICBjb25zdCBidW5FbnRyeXBvaW50ID0gZW5zdXJlUmVsYXRpdmVQYXRoUHJlZml4KGFwcEVudHJ5cG9pbnQpO1xuXG4gICAgICAgIC8vIGh0dHBzOi8vYnVuLnNoL2RvY3MvY2xpL3J1blxuICAgICAgICAvLyBidW4gY2FuIHJ1biB0cyBmaWxlcyBkaXJlY3RseVxuICAgICAgICByZXR1cm4gYGJ1biBydW4ke2J1blRzQ29uZmlnfSAke2J1bkVudHJ5cG9pbnR9YDtcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE06XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUM6XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOOlxuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWTpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk4yOlxuICAgICAgICAvLyB1c2UgbnB4IHdpdGggYWxzbyBmb3IgeWFybiAmIHBucG0gZHVlIHRvIHJlcG9ydGVkIGlzc3Vlc1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL2lzc3Vlcy80MTgwXG4gICAgICAgIHJldHVybiBgbnB4ICR7dHNOb2RlQXBwfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYG5weCAke3RzTm9kZUFwcH1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZXMgYSBwYXRoIGlzIHByb3Blcmx5IHByZWZpeGVkIHdpdGggJy4vJyBpZiBpdCdzIGEgcmVsYXRpdmUgcGF0aFxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVQYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBub3JtYWxpemVkIHBhdGhcbiAqL1xuZnVuY3Rpb24gZW5zdXJlUmVsYXRpdmVQYXRoUHJlZml4KGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgLy8gSWYgaXQncyBhbHJlYWR5IGFuIGFic29sdXRlIHBhdGgsIHJldHVybiBhcyBpc1xuICBpZiAocGF0aC5pc0Fic29sdXRlKGZpbGVQYXRoKSkge1xuICAgIHJldHVybiBmaWxlUGF0aDtcbiAgfVxuXG4gIC8vIElmIGl0IGFscmVhZHkgc3RhcnRzIHdpdGggLi8gb3IgLi4vLCByZXR1cm4gYXMgaXNcbiAgaWYgKGZpbGVQYXRoLnN0YXJ0c1dpdGgoXCIuL1wiKSB8fCBmaWxlUGF0aC5zdGFydHNXaXRoKFwiLi4vXCIpKSB7XG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBhZGQgLi8gcHJlZml4XG4gIHJldHVybiBgLi8ke2ZpbGVQYXRofWA7XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcFByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHA7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuYXBwUHJvamVjdCA9IHByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZSgpIHtcbiAgICBjb25zdCBvdXRkaXIgPSB0aGlzLnByb2plY3Qub3V0ZGlyO1xuICAgIGNvbnN0IHNyY2RpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC5zcmNkaXIpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoc3JjZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmMoc3JjZGlyKS5zb21lKCh4KSA9PiB4LmVuZHNXaXRoKFwiLnRzXCIpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0ltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHNyY0ltcG9ydHMucHVzaChcImltcG9ydCB7IEFwcCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIHNyY0ltcG9ydHMucHVzaChcImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcblxuICAgIGNvbnN0IHNyY0NvZGUgPSBgJHtzcmNJbXBvcnRzLmpvaW4oXCJcXG5cIil9XG5cbmV4cG9ydCBjbGFzcyBNeVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBkZWZpbmUgcmVzb3VyY2VzIGhlcmUuLi5cbiAgfVxufVxuXG4vLyBmb3IgZGV2ZWxvcG1lbnQsIHVzZSBhY2NvdW50L3JlZ2lvbiBmcm9tIGNkayBjbGlcbmNvbnN0IGRldkVudiA9IHtcbiAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcbiAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG59O1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbm5ldyBNeVN0YWNrKGFwcCwgJyR7dGhpcy5wcm9qZWN0Lm5hbWV9LWRldicsIHsgZW52OiBkZXZFbnYgfSk7XG4vLyBuZXcgTXlTdGFjayhhcHAsICcke3RoaXMucHJvamVjdC5uYW1lfS1wcm9kJywgeyBlbnY6IHByb2RFbnYgfSk7XG5cbmFwcC5zeW50aCgpO2A7XG5cbiAgICBmcy5ta2RpclN5bmMoc3JjZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihzcmNkaXIsIHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50KSwgc3JjQ29kZSk7XG5cbiAgICBjb25zdCB0ZXN0ZGlyID0gcGF0aC5qb2luKG91dGRpciwgdGhpcy5hcHBQcm9qZWN0LnRlc3RkaXIpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmModGVzdGRpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHRlc3RkaXIpLnNvbWUoKHgpID0+IHguZW5kc1dpdGgoXCIudHNcIikpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVzdEltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRlc3RJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBBcHAgfSBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIHRlc3RJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1wiKTtcblxuICAgIGNvbnN0IGFwcEVudHJ5cG9pbnROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgIHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50LFxuICAgICAgXCIudHNcIixcbiAgICApO1xuICAgIGNvbnN0IHRlc3RDb2RlID0gYCR7dGVzdEltcG9ydHMuam9pbihcIlxcblwiKX1cbmltcG9ydCB7IE15U3RhY2sgfSBmcm9tICcuLi8ke3RoaXMuYXBwUHJvamVjdC5zcmNkaXJ9LyR7YXBwRW50cnlwb2ludE5hbWV9JztcblxudGVzdCgnU25hcHNob3QnLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgTXlTdGFjayhhcHAsICd0ZXN0Jyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBleHBlY3QodGVtcGxhdGUudG9KU09OKCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSk7YDtcblxuICAgIGZzLm1rZGlyU3luYyh0ZXN0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKHRlc3RkaXIsIGAke2FwcEVudHJ5cG9pbnROYW1lfS50ZXN0LnRzYCksXG4gICAgICB0ZXN0Q29kZSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -17,7 +17,7 @@ const dependencies_1 = require("../dependencies");
17
17
  * @pjid awscdk-construct
18
18
  */
19
19
  class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.100.3" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.100.4" };
21
21
  cdkDeps;
22
22
  constructor(options) {
23
23
  super({
@@ -7,7 +7,7 @@ const awscdk_deps_1 = require("./awscdk-deps");
7
7
  * Manages dependencies on the AWS CDK for Java projects.
8
8
  */
9
9
  class AwsCdkDepsJava extends awscdk_deps_1.AwsCdkDeps {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.100.4" };
11
11
  packageNames() {
12
12
  return {
13
13
  coreV2: "software.amazon.awscdk/aws-cdk-lib",
@@ -7,7 +7,7 @@ const awscdk_deps_1 = require("./awscdk-deps");
7
7
  * Manages dependencies on the AWS CDK for Node.js projects.
8
8
  */
9
9
  class AwsCdkDepsJs extends awscdk_deps_1.AwsCdkDeps {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.100.4" };
11
11
  packageNames() {
12
12
  return {
13
13
  coreV2: "aws-cdk-lib",
@@ -7,7 +7,7 @@ const awscdk_deps_1 = require("./awscdk-deps");
7
7
  * Manages dependencies on the AWS CDK for Python projects.
8
8
  */
9
9
  class AwsCdkDepsPy extends awscdk_deps_1.AwsCdkDeps {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsPy", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDepsPy", version: "0.100.4" };
11
11
  packageNames() {
12
12
  return {
13
13
  coreV2: "aws-cdk-lib",
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on the AWS CDK.
43
43
  */
44
44
  class AwsCdkDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.100.3" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.100.4" };
46
46
  /**
47
47
  * The dependency requirement for AWS CDK (e.g. `^2.0.0`).
48
48
  */
@@ -11,7 +11,7 @@ const internal_1 = require("./internal");
11
11
  * CDK V2 feature flags configuration.
12
12
  */
13
13
  class CdkFeatureFlagsV2 {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.100.3" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.100.4" };
15
15
  /**
16
16
  * Disable all feature flags.
17
17
  */
@@ -52,7 +52,7 @@ exports.CdkFeatureFlagsV2 = CdkFeatureFlagsV2;
52
52
  * CDK feature flags configuration.
53
53
  */
54
54
  class CdkFeatureFlags {
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.100.3" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.100.4" };
56
56
  /**
57
57
  * CDK V2 feature flags configuration.
58
58
  */
@@ -67,7 +67,7 @@ exports.CdkFeatureFlags = CdkFeatureFlags;
67
67
  * Represents cdk.json file.
68
68
  */
69
69
  class CdkConfig extends component_1.Component {
70
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkConfig", version: "0.100.3" };
70
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkConfig", version: "0.100.4" };
71
71
  /**
72
72
  * Represents the JSON file.
73
73
  */
@@ -7,7 +7,7 @@ const component_1 = require("../component");
7
7
  * Adds standard AWS CDK tasks to your project.
8
8
  */
9
9
  class CdkTasks extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkTasks", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkTasks", version: "0.100.4" };
11
11
  /**
12
12
  * Synthesizes your app.
13
13
  */
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Cloud integration tests.
10
10
  */
11
11
  class IntegrationTest extends cdk_1.IntegrationTestBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTest", version: "0.100.3" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTest", version: "0.100.4" };
13
13
  /**
14
14
  * Destroy the integration test resources
15
15
  */
@@ -13,7 +13,7 @@ const source_code_1 = require("../source-code");
13
13
  * Create a Lambda Extension
14
14
  */
15
15
  class LambdaExtension extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtension", version: "0.100.3" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtension", version: "0.100.4" };
17
17
  constructor(project, options) {
18
18
  super(project);
19
19
  const basePath = (0, path_1.join)((0, path_1.dirname)(options.entrypoint), (0, path_1.basename)(options.entrypoint, internal_1.TYPESCRIPT_LAMBDA_EXTENSION_EXT));
@@ -63,7 +63,7 @@ const util_1 = require("../util");
63
63
  * });
64
64
  */
65
65
  class LambdaFunction extends component_1.Component {
66
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaFunction", version: "0.100.3" };
66
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaFunction", version: "0.100.4" };
67
67
  /**
68
68
  * Defines a pre-bundled AWS Lambda function construct from handler code.
69
69
  *
@@ -218,7 +218,7 @@ exports.LambdaFunction = LambdaFunction;
218
218
  class LambdaRuntime {
219
219
  functionRuntime;
220
220
  esbuildTarget;
221
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.100.3" };
221
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.100.4" };
222
222
  /**
223
223
  * Node.js 14.x
224
224
  * @deprecated Node.js 14 runtime has been deprecated on Dec 4, 2023
@@ -47,7 +47,7 @@ const runner_options_1 = require("../runner-options");
47
47
  const consts_1 = require("./private/consts");
48
48
  const name_1 = require("../util/name");
49
49
  class BuildWorkflow extends component_1.Component {
50
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.build.BuildWorkflow", version: "0.100.3" };
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.build.BuildWorkflow", version: "0.100.4" };
51
51
  /**
52
52
  * Name of generated github workflow
53
53
  */
@@ -43,7 +43,7 @@ const component_1 = require("../component");
43
43
  * Base class for auto-discovering and creating project subcomponents.
44
44
  */
45
45
  class AutoDiscoverBase extends component_1.Component {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.AutoDiscoverBase", version: "0.100.3" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.AutoDiscoverBase", version: "0.100.4" };
47
47
  /**
48
48
  * Auto-discovered entry points with paths relative to the project
49
49
  * directory.
@@ -62,7 +62,7 @@ exports.AutoDiscoverBase = AutoDiscoverBase;
62
62
  * Base class for locating integration tests in the project's test tree.
63
63
  */
64
64
  class IntegrationTestAutoDiscoverBase extends AutoDiscoverBase {
65
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestAutoDiscoverBase", version: "0.100.3" };
65
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestAutoDiscoverBase", version: "0.100.4" };
66
66
  constructor(project, options) {
67
67
  super(project, {
68
68
  extension: internal_1.TYPESCRIPT_INTEG_EXT,
@@ -7,7 +7,7 @@ const jsii_project_1 = require("./jsii-project");
7
7
  * A multi-language library for CDK constructs.
8
8
  */
9
9
  class ConstructLibrary extends jsii_project_1.JsiiProject {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.ConstructLibrary", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.ConstructLibrary", version: "0.100.4" };
11
11
  constructor(options) {
12
12
  super(options);
13
13
  this.addKeywords("cdk"); // publish to the catalog
@@ -7,7 +7,7 @@ const posix_1 = require("path/posix");
7
7
  const internal_1 = require("./internal");
8
8
  const component_1 = require("../component");
9
9
  class IntegrationTestBase extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestBase", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestBase", version: "0.100.4" };
11
11
  /**
12
12
  * Deploy the integration test and update the snapshot upon success.
13
13
  */
@@ -50,7 +50,7 @@ var ValidateTsconfig;
50
50
  * }));
51
51
  */
52
52
  class JsiiBuild {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.100.3" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.100.4" };
54
54
  options;
55
55
  extraJobOptions;
56
56
  constructor(options = {}, extraJobOptions) {
@@ -11,7 +11,7 @@ const dependencies_1 = require("../dependencies");
11
11
  * - Enforces that markdown file is checked in
12
12
  */
13
13
  class JsiiDocgen extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.100.3" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.100.4" };
15
15
  constructor(scope, options = {}) {
16
16
  super(scope);
17
17
  const version = options.version ?? "*";
@@ -19,7 +19,7 @@ var Stability;
19
19
  * @pjid jsii
20
20
  */
21
21
  class JsiiProject extends typescript_1.TypeScriptProject {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.100.3" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.100.4" };
23
23
  constructor(options) {
24
24
  const { authorEmail, authorUrl } = parseAuthorAddress(options);
25
25
  const defaultOptions = {
@@ -10,7 +10,7 @@ const component_1 = require("../component");
10
10
  * found in the test tree.
11
11
  */
12
12
  class AutoDiscover extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.100.3" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.100.4" };
14
14
  constructor(project, options) {
15
15
  super(project);
16
16
  if (options.integrationTestAutoDiscover ?? true) {
@@ -23,7 +23,7 @@ exports.AutoDiscover = AutoDiscover;
23
23
  * Discovers and creates integration tests from files in the test root.
24
24
  */
25
25
  class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.100.3" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.100.4" };
27
27
  constructor(project, options) {
28
28
  super(project, options);
29
29
  for (const entrypoint of this.entrypoints) {
@@ -12,7 +12,7 @@ const python_project_1 = require("../python/python-project");
12
12
  * @pjid cdk8s-app-py
13
13
  */
14
14
  class Cdk8sPythonApp extends python_project_1.PythonProject {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.100.3" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.100.4" };
16
16
  /**
17
17
  * The CDK8s app entrypoint
18
18
  */
@@ -50,7 +50,7 @@ const yaml_1 = require("../yaml");
50
50
  * @pjid cdk8s-app-ts
51
51
  */
52
52
  class Cdk8sTypeScriptApp extends typescript_1.TypeScriptAppProject {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.100.3" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.100.4" };
54
54
  /**
55
55
  * The CDK8s app entrypoint
56
56
  */
@@ -48,7 +48,7 @@ const cdk_1 = require("../cdk");
48
48
  * @pjid cdk8s-construct
49
49
  */
50
50
  class ConstructLibraryCdk8s extends cdk_1.ConstructLibrary {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.100.3" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.100.4" };
52
52
  /**
53
53
  * The CDK8s version this app is using.
54
54
  */
@@ -4,7 +4,7 @@ exports.Cdk8sDepsPy = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const cdk8s_deps_1 = require("./cdk8s-deps");
6
6
  class Cdk8sDepsPy extends cdk8s_deps_1.Cdk8sDeps {
7
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.100.3" };
7
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.100.4" };
8
8
  packageNames() {
9
9
  return {
10
10
  cdk8s: "cdk8s",
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on the CDK8s.
43
43
  */
44
44
  class Cdk8sDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.100.3" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.100.4" };
46
46
  /**
47
47
  * The dependency requirement for CDK8s.
48
48
  */
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * CDK8S integration test.
10
10
  */
11
11
  class IntegrationTest extends cdk_1.IntegrationTestBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.100.3" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.100.4" };
13
13
  constructor(project, options) {
14
14
  super(project, options);
15
15
  project.deps.requestDependency({
@@ -47,7 +47,7 @@ const cdk_1 = require("../cdk");
47
47
  * @pjid cdktf-construct
48
48
  */
49
49
  class ConstructLibraryCdktf extends cdk_1.ConstructLibrary {
50
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.100.3" };
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.100.4" };
51
51
  constructor(options) {
52
52
  super(options);
53
53
  if (!options.cdktfVersion) {
@@ -12,7 +12,7 @@ const yaml_1 = require("../yaml");
12
12
  * @see https://circleci.com/docs/2.0/configuration-reference/
13
13
  */
14
14
  class Circleci extends component_1.Component {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.100.3" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.100.4" };
16
16
  /**
17
17
  * The yaml file for the Circleci pipeline
18
18
  * */
package/lib/component.js CHANGED
@@ -16,7 +16,7 @@ const componentId = (scope) => {
16
16
  * @param id Unique id of the component. If not provided, an unstable AutoId is generated.
17
17
  */
18
18
  class Component extends constructs_1.Construct {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.100.3" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.100.4" };
20
20
  /**
21
21
  * Test whether the given construct is a component.
22
22
  */
@@ -51,7 +51,7 @@ const json_1 = require("./json");
51
51
  * `nodeProject.addDeps()` or use the generic API of `project.deps`:
52
52
  */
53
53
  class Dependencies extends component_1.Component {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.100.3" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.100.4" };
55
55
  /**
56
56
  * The project-relative path of the deps manifest file.
57
57
  */
package/lib/dev-env.js CHANGED
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Options for specifying the Docker image of the container.
7
7
  */
8
8
  class DevEnvironmentDockerImage {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.100.3" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.100.4" };
10
10
  /**
11
11
  * A publicly available Docker image.
12
12
  * @example 'ubuntu:latest'
@@ -7,7 +7,7 @@ const docker_compose_1 = require("./docker-compose");
7
7
  * A docker-compose service.
8
8
  */
9
9
  class DockerComposeService {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.100.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.100.4" };
11
11
  /**
12
12
  * Name of the service.
13
13
  */
@@ -11,7 +11,7 @@ const yaml_1 = require("../yaml");
11
11
  * Create a docker-compose YAML file.
12
12
  */
13
13
  class DockerCompose extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.100.3" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.100.4" };
15
15
  /**
16
16
  * Depends on a service name.
17
17
  */
package/lib/file.js CHANGED
@@ -45,7 +45,7 @@ const util_1 = require("./util");
45
45
  const constructs_1 = require("./util/constructs");
46
46
  const diff_1 = require("./util/diff");
47
47
  class FileBase extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.100.3" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.100.4" };
49
49
  /**
50
50
  * The file path, relative to the project's outdir.
51
51
  */