@nikovirtala/projen-constructs 0.2.157 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.jsii +1077 -818
  2. package/.kiro/steering/product.md +1 -1
  3. package/.kiro/steering/tech.md +6 -4
  4. package/API.md +9711 -5492
  5. package/docs/api/assets/highlight.css +1 -1
  6. package/docs/api/assets/main.js +1 -1
  7. package/docs/api/assets/search.js +1 -1
  8. package/docs/api/assets/style.css +18 -3
  9. package/docs/api/classes/AwsCdkConstructLibraryProject.html +997 -162
  10. package/docs/api/classes/AwsCdkTypeScriptAppProject.html +1015 -157
  11. package/docs/api/classes/Bundler.html +267 -17
  12. package/docs/api/classes/Colima.html +221 -16
  13. package/docs/api/classes/Homebrew.html +244 -16
  14. package/docs/api/classes/JsiiProject.html +983 -150
  15. package/docs/api/classes/LambdaFunctionCodeBundle.html +222 -16
  16. package/docs/api/classes/LambdaFunctionCodeBundler.html +222 -16
  17. package/docs/api/classes/LambdaFunctionConstructGenerator.html +243 -16
  18. package/docs/api/classes/LocalStack.html +222 -16
  19. package/docs/api/classes/Mise.html +233 -16
  20. package/docs/api/classes/ProjectGenerator.html +229 -19
  21. package/docs/api/classes/TypeDoc.html +246 -19
  22. package/docs/api/classes/TypeScriptProject.html +983 -150
  23. package/docs/api/classes/Vitest.html +295 -16
  24. package/docs/api/enums/CommentStyle.html +74 -8
  25. package/docs/api/enums/CoverageProvider.html +65 -6
  26. package/docs/api/enums/CoverageReporter.html +72 -7
  27. package/docs/api/enums/EntryPointStrategy.html +74 -8
  28. package/docs/api/enums/Environment.html +79 -9
  29. package/docs/api/enums/LogLevel.html +79 -9
  30. package/docs/api/enums/Pool.html +75 -8
  31. package/docs/api/enums/ProjectType.html +149 -27
  32. package/docs/api/enums/Visibility.html +69 -7
  33. package/docs/api/functions/applyDefaults.html +41 -1
  34. package/docs/api/functions/convertToPosixPath.html +40 -1
  35. package/docs/api/functions/renderBundleName.html +40 -1
  36. package/docs/api/functions/toJson_TypeDocConfiguration.html +42 -2
  37. package/docs/api/hierarchy.html +29 -1
  38. package/docs/api/index.html +60 -2
  39. package/docs/api/interfaces/AwsCdkConstructLibraryProjectOptions.html +2404 -770
  40. package/docs/api/interfaces/AwsCdkTypeScriptAppProjectOptions.html +2302 -740
  41. package/docs/api/interfaces/Bundle.html +57 -2
  42. package/docs/api/interfaces/BundlerOptions.html +60 -2
  43. package/docs/api/interfaces/BundlingOptions.html +84 -2
  44. package/docs/api/interfaces/Component.html +70 -7
  45. package/docs/api/interfaces/ComponentOptions.html +66 -6
  46. package/docs/api/interfaces/HomebrewOptions.html +51 -2
  47. package/docs/api/interfaces/JsiiProjectOptions.html +2263 -713
  48. package/docs/api/interfaces/LambdaFunctionCodeBundleOptions.html +63 -2
  49. package/docs/api/interfaces/LambdaFunctionCodeBundlerOptions.html +57 -2
  50. package/docs/api/interfaces/LambdaFunctionConstructGeneratorOptions.html +72 -2
  51. package/docs/api/interfaces/LocalStackOptions.html +60 -2
  52. package/docs/api/interfaces/MiseOptions.html +51 -2
  53. package/docs/api/interfaces/ProjectGeneratorOptions.html +136 -20
  54. package/docs/api/interfaces/TypeDocConfiguration.html +469 -96
  55. package/docs/api/interfaces/TypeDocOptions.html +62 -5
  56. package/docs/api/interfaces/TypeScriptProjectOptions.html +2032 -638
  57. package/docs/api/interfaces/ValidationOptions.html +70 -7
  58. package/docs/api/interfaces/VitestConfigOptions.html +268 -57
  59. package/docs/api/interfaces/VitestOptions.html +71 -7
  60. package/docs/api/modules.html +52 -1
  61. package/docs/api/variables/defaultOptions.html +40 -1
  62. package/docs/api/variables/defaults.html +48 -1
  63. package/docs/api/variables/projectDefaultOptions.html +120 -1
  64. package/lib/bundle-vitest-define-config.js +37 -4
  65. package/lib/components/bundle-lambda-function-code.js +43 -9
  66. package/lib/components/colima.js +6 -4
  67. package/lib/components/homebrew.js +10 -4
  68. package/lib/components/lambda-function-construct-generator.js +47 -6
  69. package/lib/components/localstack.js +2 -4
  70. package/lib/components/mise.js +2 -4
  71. package/lib/components/typedoc.js +11 -4
  72. package/lib/components/vitest.d.ts +1 -1
  73. package/lib/components/vitest.js +58 -6
  74. package/lib/config.d.ts +52 -6
  75. package/lib/config.js +87 -10
  76. package/lib/errors.js +7 -1
  77. package/lib/project-generator.js +46 -9
  78. package/lib/project-type.d.ts +0 -8
  79. package/lib/project-type.js +1 -9
  80. package/lib/projects/awscdk-construct-library-options.generated.d.ts +72 -18
  81. package/lib/projects/awscdk-construct-library-options.generated.js +1 -1
  82. package/lib/projects/awscdk-construct-library.generated.d.ts +1 -1
  83. package/lib/projects/awscdk-construct-library.generated.js +2 -4
  84. package/lib/projects/awscdk-typescript-app-options.generated.d.ts +63 -17
  85. package/lib/projects/awscdk-typescript-app-options.generated.js +1 -1
  86. package/lib/projects/awscdk-typescript-app.generated.d.ts +1 -1
  87. package/lib/projects/awscdk-typescript-app.generated.js +2 -4
  88. package/lib/projects/jsii-options.generated.d.ts +72 -10
  89. package/lib/projects/jsii-options.generated.js +1 -1
  90. package/lib/projects/jsii.generated.d.ts +1 -1
  91. package/lib/projects/jsii.generated.js +2 -4
  92. package/lib/projects/typescript-options.generated.d.ts +63 -9
  93. package/lib/projects/typescript-options.generated.js +1 -1
  94. package/lib/projects/typescript.generated.d.ts +1 -1
  95. package/lib/projects/typescript.generated.js +2 -4
  96. package/lib/utils.d.ts +8 -0
  97. package/lib/utils.js +11 -2
  98. package/node_modules/@jsii/spec/lib/assembly-utils.js +36 -3
  99. package/node_modules/@jsii/spec/lib/validators.js +1 -1
  100. package/node_modules/@jsii/spec/package.json +4 -4
  101. package/package.json +19 -20
  102. package/pnpm-workspace.yaml +8 -0
  103. package/lib/components/vitest-bundled-define-config.d.ts +0 -1
  104. package/lib/components/vitest-bundled-define-config.js +0 -6
  105. package/lib/vitest-define-config-entry.d.ts +0 -1
  106. package/lib/vitest-define-config-entry.js +0 -6
@@ -1,14 +1,47 @@
1
1
  "use strict";
2
- var _a;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
3
35
  Object.defineProperty(exports, "__esModule", { value: true });
4
36
  exports.Vitest = exports.CoverageReporter = exports.CoverageProvider = exports.Pool = exports.Environment = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const path = require("node:path");
38
+ const path = __importStar(require("node:path"));
7
39
  const projen_1 = require("projen");
8
40
  const component_1 = require("projen/lib/component");
9
41
  const dependencies_1 = require("projen/lib/dependencies");
10
42
  const javascript_1 = require("projen/lib/javascript");
11
43
  const textfile_1 = require("projen/lib/textfile");
44
+ const utils_1 = require("../utils");
12
45
  var Environment;
13
46
  (function (Environment) {
14
47
  /**
@@ -107,10 +140,31 @@ var CoverageReporter;
107
140
  CoverageReporter["TEXT"] = "text";
108
141
  })(CoverageReporter || (exports.CoverageReporter = CoverageReporter = {}));
109
142
  class Vitest extends component_1.Component {
143
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.3.0" };
110
144
  static of(project) {
111
145
  const isVitest = (c) => c instanceof Vitest;
112
146
  return project.components.find(isVitest);
113
147
  }
148
+ configFilePath;
149
+ include;
150
+ exclude;
151
+ isolate;
152
+ pool;
153
+ coverageEnabled;
154
+ typecheckEnabled;
155
+ typecheckChecker;
156
+ typecheckTsconfig;
157
+ passWithNoTests;
158
+ bail;
159
+ updateSnapshots;
160
+ environment;
161
+ globals;
162
+ coverageProvider;
163
+ coverageReporters;
164
+ coverageDirectory;
165
+ version;
166
+ printConsoleTrace;
167
+ slowTestThreshold;
114
168
  constructor(project, options = {}) {
115
169
  super(project);
116
170
  this.configFilePath = options.configFilePath ?? "vitest.config.ts";
@@ -127,7 +181,7 @@ class Vitest extends component_1.Component {
127
181
  this.coverageEnabled = options.config?.coverageEnabled ?? true;
128
182
  this.typecheckEnabled = options.config?.typecheckEnabled ?? this.isTypescriptProject();
129
183
  this.typecheckChecker = options.config?.typecheckChecker ?? "tsc --noEmit";
130
- this.typecheckTsconfig = options.config?.typecheckTsconfig ?? "tsconfig.dev.json";
184
+ this.typecheckTsconfig = options.config?.typecheckTsconfig ?? (0, utils_1.tsconfigDevPath)(project);
131
185
  this.passWithNoTests = options.config?.passWithNoTests ?? true;
132
186
  this.bail = options.config?.bail ?? 0;
133
187
  this.environment = options.config?.environment ?? Environment.NODE;
@@ -277,6 +331,4 @@ class Vitest extends component_1.Component {
277
331
  }
278
332
  }
279
333
  exports.Vitest = Vitest;
280
- _a = JSII_RTTI_SYMBOL_1;
281
- Vitest[_a] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.2.157" };
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLG1DQUFxQztBQUNyQyxvREFBaUQ7QUFDakQsMERBQXlEO0FBQ3pELHNEQUErRDtBQUMvRCxrREFBK0M7QUFFL0MsSUFBWSxXQTBCWDtBQTFCRCxXQUFZLFdBQVc7SUFDbkI7Ozs7T0FJRztJQUNILDRDQUE2QixDQUFBO0lBRTdCOzs7O09BSUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUV2Qjs7OztPQUlHO0lBQ0gsOEJBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsNEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBMUJXLFdBQVcsMkJBQVgsV0FBVyxRQTBCdEI7QUFFRCxJQUFZLElBbUNYO0FBbkNELFdBQVksSUFBSTtJQUNaOzs7Ozs7T0FNRztJQUNILHVCQUFlLENBQUE7SUFFZjs7OztPQUlHO0lBQ0gsMkJBQW1CLENBQUE7SUFFbkI7Ozs7Ozs7O09BUUc7SUFDSCwyQkFBbUIsQ0FBQTtJQUVuQjs7Ozs7T0FLRztJQUNILCtCQUF1QixDQUFBO0FBQzNCLENBQUMsRUFuQ1csSUFBSSxvQkFBSixJQUFJLFFBbUNmO0FBRUQsSUFBWSxnQkFjWDtBQWRELFdBQVksZ0JBQWdCO0lBQ3hCOzs7O09BSUc7SUFDSCx5Q0FBcUIsQ0FBQTtJQUVyQjs7OztPQUlHO0lBQ0gsNkJBQVMsQ0FBQTtBQUNiLENBQUMsRUFkVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQWMzQjtBQUVELElBQVksZ0JBeUJYO0FBekJELFdBQVksZ0JBQWdCO0lBQ3hCOztPQUVHO0lBQ0gscUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0FB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LENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQztRQUMzRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUVuRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztBQTlOTCx3QkErTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGF3c2NkaywgY2RrIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plbi9saWIvY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCJwcm9qZW4vbGliL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSmVzdCwgdHlwZSBOb2RlUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSBcInByb2plbi9saWIvdGV4dGZpbGVcIjtcblxuZXhwb3J0IGVudW0gRW52aXJvbm1lbnQge1xuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBWZXJjZWwncyBFZGdlIFJ1bnRpbWUgVk0uXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZWRnZS1ydW50aW1lLnZlcmNlbC5hcHAvcGFja2FnZXMvdm1cbiAgICAgKi9cbiAgICBFREdFX1JVTlRJTUUgPSBcImVkZ2UtcnVudGltZVwiLFxuXG4gICAgLyoqXG4gICAgICogUnVuIHRlc3RzIGluIGBoYXBweS1kb21gIGVudmlyb25tZW50LlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2Fwcmljb3JuODYvaGFwcHktZG9tXG4gICAgICovXG4gICAgSEFQUFlfRE9NID0gXCJoYXBweS1kb21cIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBganNkb21gIGVudmlyb25tZW50LlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vanNkb20vanNkb21cbiAgICAgKi9cbiAgICBKU0RPTSA9IFwianNkb21cIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBhIE5vZGUuanMgZW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgTk9ERSA9IFwibm9kZVwiLFxufVxuXG5leHBvcnQgZW51bSBQb29sIHtcbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gYG5vZGU6Y2hpbGRfcHJvY2Vzc2AgdXNpbmcgZm9yaygpXG4gICAgICpcbiAgICAgKiBUZXN0IGlzb2xhdGlvbiAod2hlbiBlbmFibGVkKSBpcyBkb25lIGJ5IHNwYXduaW5nIGEgbmV3IGNoaWxkIHByb2Nlc3MgZm9yIGVhY2ggdGVzdCBmaWxlLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL2NoaWxkX3Byb2Nlc3MuaHRtbCNjaGlsZF9wcm9jZXNzZm9ya21vZHVsZXBhdGgtYXJncy1vcHRpb25zXG4gICAgICovXG4gICAgRk9SS1MgPSBcImZvcmtzXCIsXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gYG5vZGU6d29ya2VyX3RocmVhZHNgLlxuICAgICAqXG4gICAgICogVGVzdCBpc29sYXRpb24gKHdoZW4gZW5hYmxlZCkgaXMgZG9uZSBieSBzcGF3bmluZyBhIG5ldyB0aHJlYWQgZm9yIGVhY2ggdGVzdCBmaWxlLlxuICAgICAqL1xuICAgIFRIUkVBRFMgPSBcInRocmVhZHNcIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBpc29sYXRlZCBgbm9kZTp2bWAuXG4gICAgICpcbiAgICAgKiBUZXN0IGZpbGVzIGFyZSBydW4gcGFyYWxsZWwgdXNpbmcgYG5vZGU6Y2hpbGRfcHJvY2Vzc2AgZm9yaygpXG4gICAgICpcbiAgICAgKiBUaGlzIG1ha2VzIHRlc3RzIHJ1biBmYXN0ZXIsIGJ1dCBWTSBtb2R1bGUgaXMgdW5zdGFibGUuIFlvdXIgdGVzdHMgbWlnaHQgbGVhayBtZW1vcnkuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY2hpbGRfcHJvY2Vzcy5odG1sI2NoaWxkX3Byb2Nlc3Nmb3JrbW9kdWxlcGF0aC1hcmdzLW9wdGlvbnNcbiAgICAgKi9cbiAgICBWTUZPUktTID0gXCJ2bWZvcmtzXCIsXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gaXNvbGF0ZWQgYG5vZGU6dm1gLlxuICAgICAqIFRlc3QgZmlsZXMgYXJlIHJ1biBwYXJhbGxlbCB1c2luZyBgbm9kZTp3b3JrZXJfdGhyZWFkc2AuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ha2VzIHRlc3RzIHJ1biBmYXN0ZXIsIGJ1dCBWTSBtb2R1bGUgaXMgdW5zdGFibGUuIFlvdXIgdGVzdHMgbWlnaHQgbGVhayBtZW1vcnkuXG4gICAgICovXG4gICAgVk1USFJFQURTID0gXCJ2bXRocmVhZHNcIixcbn1cblxuZXhwb3J0IGVudW0gQ292ZXJhZ2VQcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBjb3ZlcmFnZSByZXBvcnQgdXNpbmcgaXN0YW5idWwuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vaXN0YW5idWwuanMub3JnXG4gICAgICovXG4gICAgSVNUQU5CVUwgPSBcImlzdGFuYnVsXCIsXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGNvdmVyYWdlIHJlcG9ydHMgdXNpbmcgdjguXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vdjguZGV2L2Jsb2cvamF2YXNjcmlwdC1jb2RlLWNvdmVyYWdlXG4gICAgICovXG4gICAgVjggPSBcInY4XCIsXG59XG5cbmV4cG9ydCBlbnVtIENvdmVyYWdlUmVwb3J0ZXIge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGBjbG92ZXJgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBDTE9WRVIgPSBcImNsb3ZlclwiLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYEhUTUxgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBIVE1MID0gXCJodG1sXCIsXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBgSlNPTmAgcmVwb3J0LlxuICAgICAqL1xuICAgIEpTT04gPSBcImpzb25cIixcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGBMQ09WYCByZXBvcnQuXG4gICAgICovXG4gICAgTENPViA9IFwibGNvdlwiLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYHRleHRgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBURVhUID0gXCJ0ZXh0XCIsXG59XG5cbi8qKlxuICogVml0ZXN0IENvbmZpZy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0Q29uZmlnT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCB5b3VyIHRlc3QgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIFZpdGVzdCdzIGBjb25maWdEZWZhdWx0cy5pbmNsdWRlYFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jaW5jbHVkZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGU/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSB5b3VyIHRlc3QgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIFZpdGVzdCdzIGBjb25maWdEZWZhdWx0cy5leGNsdWRlYFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jZXhjbHVkZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGU/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVudmlyb25tZW50IHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJub2RlXCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2Vudmlyb25tZW50XG4gICAgICovXG4gICAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBhbiBpc29sYXRlZCBlbnZpcm9ubWVudC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB2bVRocmVhZHMgcG9vbC5cbiAgICAgKlxuICAgICAqIERpc2FibGluZyB0aGlzIG9wdGlvbiBtaWdodCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHlvdXIgY29kZSBkb2Vzbid0IHJlbHkgb24gc2lkZSBlZmZlY3RzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jaXNvbGF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlzb2xhdGU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUG9vbCB1c2VkIHRvIHJ1biB0ZXN0cyBpbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZm9ya3NcIlxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jcG9vbFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBvb2w/OiBQb29sO1xuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYXBpcyBnbG9iYWxseS4gSWYgeW91IHByZWZlciB0byB1c2UgdGhlIEFQSXMgZ2xvYmFsbHkgbGlrZSBKZXN0LCBzZXQgdG8gYHRydWVgLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2dsb2JhbHNcbiAgICAgKi9cbiAgICByZWFkb25seSBnbG9iYWxzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvdmVyYWdlIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNjb3ZlcmFnZS1lbmFibGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VFbmFibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvdmVyYWdlIHByb3ZpZGVyIHR5cGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcInY4XCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2NvdmVyYWdlLXByb3ZpZGVyXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VQcm92aWRlcj86IENvdmVyYWdlUHJvdmlkZXI7XG5cbiAgICAvKipcbiAgICAgKiBDb3ZlcmFnZSByZXBvcnRlcnMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnW1widGV4dFwiLCBcImxjb3ZcIl0nXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNjb3ZlcmFnZS1yZXBvcnRlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0ZXJzPzogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG5cbiAgICAvKipcbiAgICAgKiBDb3ZlcmFnZSBvdXRwdXQgZGlyZWN0b3J5LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJjb3ZlcmFnZVwiXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgdHlwZWNoZWNraW5nIGFsb25nc2lkZSB5b3VyIHJlZ3VsYXIgdGVzdHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlIChmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cylcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI3R5cGVjaGVjay1lbmFibGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUb29sIHRvIHVzZSBmb3IgdHlwZSBjaGVja2luZy4gQ2hlY2tlciBzaG91bGQgaW1wbGVtZW50IHRoZSBzYW1lIG91dHB1dCBmb3JtYXQgYXMgYHRzY2AuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcInRzYyAtLW5vRW1pdFwiXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyN0eXBlY2hlY2stY2hlY2tlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IHR5cGVjaGVja0NoZWNrZXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGN1c3RvbSB0c2NvbmZpZywgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwidHNjb25maWcuZGV2Lmpzb25cIlxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jdHlwZWNoZWNrLXRzY29uZmlnXG4gICAgICovXG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrVHNjb25maWc/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBWaXRlc3Qgd2lsbCBub3QgZmFpbCwgaWYgbm8gdGVzdHMgd2lsbCBiZSBmb3VuZC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI3Bhc3N3aXRobm90ZXN0c1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTdG9wIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgY2VydGFpbiBudW1iZXIgb2YgZmFpbHVyZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNiYWlsXG4gICAgICovXG4gICAgcmVhZG9ubHkgYmFpbD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBzbmFwc2hvdCBmaWxlcy4gVGhpcyB3aWxsIHVwZGF0ZSBhbGwgY2hhbmdlZCBzbmFwc2hvdHMgYW5kIGRlbGV0ZSBvYnNvbGV0ZSBvbmVzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2d1aWRlL3NuYXBzaG90Lmh0bWwjdXBkYXRpbmctc25hcHNob3RzXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXBkYXRlU25hcHNob3RzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsd2F5cyBwcmludCBjb25zb2xlIHRyYWNlcyB3aGVuIGNhbGxpbmcgYW55IGNvbnNvbGUgbWV0aG9kLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jY29uc29sZXRyYWNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJpbnRDb25zb2xlVHJhY2U/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgd2hpY2ggYSB0ZXN0IG9yIHN1aXRlIGlzIGNvbnNpZGVyZWQgc2xvdy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDMwMFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jc2xvd3Rlc3R0aHJlc2hvbGRcbiAgICAgKi9cbiAgICByZWFkb25seSBzbG93VGVzdFRocmVzaG9sZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBDb25maWcgZmlsZSBwYXRoLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2aXRlc3QuY29uZmlnLnRzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBjb25maWdGaWxlUGF0aD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgY29uZmlnIG9wdGlvbnMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29uZmlnPzogVml0ZXN0Q29uZmlnT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIFZpdGVzdCB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJeNFwiXG4gICAgICovXG4gICAgcmVhZG9ubHkgdml0ZXN0VmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFZpdGVzdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBOb2RlUHJvamVjdCk6IFZpdGVzdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzVml0ZXN0ID0gKGM6IENvbXBvbmVudCk6IGMgaXMgVml0ZXN0ID0+IGMgaW5zdGFuY2VvZiBWaXRlc3Q7XG4gICAgICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc1ZpdGVzdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdGaWxlUGF0aDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5jbHVkZTogU2V0PHN0cmluZz47XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlOiBTZXQ8c3RyaW5nPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzb2xhdGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBwb29sOiBQb29sO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY292ZXJhZ2VFbmFibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVjaGVja0NoZWNrZXI6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVjaGVja1RzY29uZmlnOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBiYWlsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB1cGRhdGVTbmFwc2hvdHM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudDogc3RyaW5nO1xuICAgIHByaXZhdGUgZ2xvYmFsczogYm9vbGVhbjtcbiAgICBwcml2YXRlIGNvdmVyYWdlUHJvdmlkZXI6IENvdmVyYWdlUHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBjb3ZlcmFnZVJlcG9ydGVyczogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG4gICAgcHJpdmF0ZSBjb3ZlcmFnZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgdmVyc2lvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRDb25zb2xlVHJhY2U6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBzbG93VGVzdFRocmVzaG9sZDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFZpdGVzdE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgICAgICB0aGlzLmNvbmZpZ0ZpbGVQYXRoID0gb3B0aW9ucy5jb25maWdGaWxlUGF0aCA/PyBcInZpdGVzdC5jb25maWcudHNcIjtcbiAgICAgICAgdGhpcy5pbmNsdWRlID0gbmV3IFNldChvcHRpb25zLmNvbmZpZz8uaW5jbHVkZSA/PyBbXCIqKi8qLnt0ZXN0LHNwZWN9Lj8oY3xtKVtqdF1zPyh4KVwiXSk7XG4gICAgICAgIHRoaXMuZXhjbHVkZSA9IG5ldyBTZXQoXG4gICAgICAgICAgICBvcHRpb25zLmNvbmZpZz8uZXhjbHVkZSA/PyBbXG4gICAgICAgICAgICAgICAgXCIqKi9ub2RlX21vZHVsZXMvKipcIixcbiAgICAgICAgICAgICAgICBcIioqL2Rpc3QvKipcIixcbiAgICAgICAgICAgICAgICBcIioqL2N5cHJlc3MvKipcIixcbiAgICAgICAgICAgICAgICBcIioqLy57aWRlYSxnaXQsY2FjaGUsb3V0cHV0LHRlbXB9LyoqXCIsXG4gICAgICAgICAgICAgICAgXCIqKi97a2FybWEscm9sbHVwLHdlYnBhY2ssdml0ZSx2aXRlc3QsamVzdCxhdmEsYmFiZWwsbnljLGN5cHJlc3MsdHN1cCxidWlsZCxlc2xpbnQscHJldHRpZXJ9LmNvbmZpZy4qXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzb2xhdGUgPSBvcHRpb25zLmNvbmZpZz8uaXNvbGF0ZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLnBvb2wgPSBvcHRpb25zLmNvbmZpZz8ucG9vbCA/PyBQb29sLkZPUktTO1xuICAgICAgICB0aGlzLmNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY29uZmlnPy5jb3ZlcmFnZUVuYWJsZWQgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tFbmFibGVkID0gb3B0aW9ucy5jb25maWc/LnR5cGVjaGVja0VuYWJsZWQgPz8gdGhpcy5pc1R5cGVzY3JpcHRQcm9qZWN0KCk7XG4gICAgICAgIHRoaXMudHlwZWNoZWNrQ2hlY2tlciA9IG9wdGlvbnMuY29uZmlnPy50eXBlY2hlY2tDaGVja2VyID8/IFwidHNjIC0tbm9FbWl0XCI7XG4gICAgICAgIHRoaXMudHlwZWNoZWNrVHNjb25maWcgPSBvcHRpb25zLmNvbmZpZz8udHlwZWNoZWNrVHNjb25maWcgPz8gXCJ0c2NvbmZpZy5kZXYuanNvblwiO1xuICAgICAgICB0aGlzLnBhc3NXaXRoTm9UZXN0cyA9IG9wdGlvbnMuY29uZmlnPy5wYXNzV2l0aE5vVGVzdHMgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5iYWlsID0gb3B0aW9ucy5jb25maWc/LmJhaWwgPz8gMDtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IG9wdGlvbnMuY29uZmlnPy5lbnZpcm9ubWVudCA/PyBFbnZpcm9ubWVudC5OT0RFO1xuICAgICAgICB0aGlzLmdsb2JhbHMgPSBvcHRpb25zLmNvbmZpZz8uZ2xvYmFscyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVByb3ZpZGVyID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlUHJvdmlkZXIgPz8gQ292ZXJhZ2VQcm92aWRlci5WODtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVJlcG9ydGVycyA9IG9wdGlvbnMuY29uZmlnPy5jb3ZlcmFnZVJlcG9ydGVycyA/PyBbQ292ZXJhZ2VSZXBvcnRlci5URVhULCBDb3ZlcmFnZVJlcG9ydGVyLkxDT1ZdO1xuICAgICAgICB0aGlzLmNvdmVyYWdlRGlyZWN0b3J5ID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlRGlyZWN0b3J5ID8/IFwiY292ZXJhZ2VcIjtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gb3B0aW9ucy52aXRlc3RWZXJzaW9uID8/IFwiXjRcIjtcbiAgICAgICAgdGhpcy51cGRhdGVTbmFwc2hvdHMgPSBvcHRpb25zLmNvbmZpZz8udXBkYXRlU25hcHNob3RzID8/IHRydWU7XG4gICAgICAgIHRoaXMucHJpbnRDb25zb2xlVHJhY2UgPSBvcHRpb25zLmNvbmZpZz8ucHJpbnRDb25zb2xlVHJhY2UgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5zbG93VGVzdFRocmVzaG9sZCA9IG9wdGlvbnMuY29uZmlnPy5zbG93VGVzdFRocmVzaG9sZCA/PyAzMDA7XG5cbiAgICAgICAgcHJvamVjdC5hZGREZXZEZXBzKGB2aXRlc3RAJHt0aGlzLnZlcnNpb259YCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJlQ292ZXJhZ2VQcm92aWRlcih0aGlzLmNvdmVyYWdlUHJvdmlkZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbHMgJiYgdGhpcy5pc1R5cGVzY3JpcHRQcm9qZWN0KCkgJiYgdGhpcy5wcm9qZWN0LnRyeUZpbmRPYmplY3RGaWxlKHRoaXMudHlwZWNoZWNrVHNjb25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUdsb2JhbHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdmVyYWdlRGlyZWN0b3J5UGF0aCA9IHBhdGgucG9zaXguam9pbihcIi9cIiwgdGhpcy5jb3ZlcmFnZURpcmVjdG9yeSwgXCIvXCIpO1xuICAgICAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShjb3ZlcmFnZURpcmVjdG9yeVBhdGgpO1xuICAgICAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKGNvdmVyYWdlRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgdGhpcy5hZGRUZXN0Q29tbWFuZCgpO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcblxuICAgICAgICBpZiAocHJvamVjdCBpbnN0YW5jZW9mIGNkay5Kc2lpUHJvamVjdCB8fCBwcm9qZWN0IGluc3RhbmNlb2YgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkpIHtcbiAgICAgICAgICAgIHByb2plY3QubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcInZpdGVzdC5jb25maWcudHNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICAgICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMucHJvamVjdC5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgSmVzdCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInZpdGVzdCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGplc3RcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlLmFkZChwYXR0ZXJuKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhjbHVkZS5hZGQocGF0dGVybik7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmVFbnZpcm9ubWVudChlbnZpcm9ubWVudDogRW52aXJvbm1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlQ292ZXJhZ2VQcm92aWRlcihwcm92aWRlcjogQ292ZXJhZ2VQcm92aWRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcm92aWRlclBhY2thZ2VzID0ge1xuICAgICAgICAgICAgW0NvdmVyYWdlUHJvdmlkZXIuVjhdOiBgQHZpdGVzdC9jb3ZlcmFnZS12OEAke3RoaXMudmVyc2lvbn1gLFxuICAgICAgICAgICAgW0NvdmVyYWdlUHJvdmlkZXIuSVNUQU5CVUxdOiBgQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bEAke3RoaXMudmVyc2lvbn1gLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3QgcHJvdmlkZXJQYWNrYWdlIG9mIE9iamVjdC52YWx1ZXMocHJvdmlkZXJQYWNrYWdlcykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMucmVtb3ZlRGVwZW5kZW5jeShwcm92aWRlclBhY2thZ2UpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHByb3ZpZGVyUGFja2FnZXNbcHJvdmlkZXJdLCBEZXBlbmRlbmN5VHlwZS5ERVZFTlYpO1xuICAgICAgICB0aGlzLmNvdmVyYWdlUHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUNvdmVyYWdlUmVwb3J0ZXJzKHJlcG9ydGVyczogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVJlcG9ydGVycyA9IHJlcG9ydGVycztcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUdsb2JhbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVHNDb25maWcoKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUc0NvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHNjb25maWcgPSB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUodGhpcy50eXBlY2hlY2tUc2NvbmZpZyk7XG5cbiAgICAgICAgaWYgKCF0c2NvbmZpZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGZpbmQgdHNjb25maWdcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0c2NvbmZpZy5hZGRUb0FycmF5KFwiY29tcGlsZXJPcHRpb25zLnR5cGVzXCIsIFwidml0ZXN0L2dsb2JhbHNcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVzY3JpcHRQcm9qZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0LmRlcHMudHJ5R2V0RGVwZW5kZW5jeShcInR5cGVzY3JpcHRcIikgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRlc3RDb21tYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2plY3QudGVzdFRhc2suZXhlYyhcInZpdGVzdCBydW5cIiwge1xuICAgICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlc3RXYXRjaCA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwidGVzdDp3YXRjaFwiKTtcbiAgICAgICAgaWYgKCF0ZXN0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKFwidGVzdDp3YXRjaFwiLCB7XG4gICAgICAgICAgICAgICAgZXhlYzogXCJ2aXRlc3Qgd2F0Y2hcIixcbiAgICAgICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGVzdFVwZGF0ZVNuYXBzaG90cyA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwidGVzdDp1cGRhdGVcIik7XG4gICAgICAgIGlmICghdGVzdFVwZGF0ZVNuYXBzaG90cykge1xuICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJ0ZXN0OnVwZGF0ZVwiLCB7XG4gICAgICAgICAgICAgICAgZXhlYzogXCJ2aXRlc3QgLS11cGRhdGVcIixcbiAgICAgICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW50aGVzaXplQ29uZmlnKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2plY3QudHJ5UmVtb3ZlRmlsZSh0aGlzLmNvbmZpZ0ZpbGVQYXRoKTtcblxuICAgICAgICBuZXcgVGV4dEZpbGUodGhpcywgdGhpcy5jb25maWdGaWxlUGF0aCwge1xuICAgICAgICAgICAgbGluZXM6IHRoaXMucmVuZGVyQ29uZmlnKCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyQ29uZmlnKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5wcm9qZWN0IGFzIE5vZGVQcm9qZWN0O1xuICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHByb2plY3QucGFja2FnZS5wYWNrYWdlTmFtZTtcbiAgICAgICAgY29uc3QgZGVmaW5lQ29uZmlnSW1wb3J0ID1cbiAgICAgICAgICAgIHBhY2thZ2VOYW1lID09PSBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0c1wiXG4gICAgICAgICAgICAgICAgPyAnaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vbGliL3ZpdGVzdC1kZWZpbmUtY29uZmlnXCI7J1xuICAgICAgICAgICAgICAgIDogJ2ltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJAbmlrb3ZpcnRhbGEvcHJvamVuLWNvbnN0cnVjdHMvbGliL3ZpdGVzdC1kZWZpbmUtY29uZmlnXCI7JztcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgZGVmaW5lQ29uZmlnSW1wb3J0LFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcIixcbiAgICAgICAgICAgIFwiICB0ZXN0OiB7XCIsXG4gICAgICAgICAgICAuLi50aGlzLnJlbmRlclRlc3RPcHRpb25zKCksXG4gICAgICAgICAgICBcIiAgfSxcIixcbiAgICAgICAgICAgIFwifSk7XCIsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJUZXN0T3B0aW9ucygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgICAgICBsaW5lcy5wdXNoKGAgICAgYmFpbDogJHt0aGlzLmJhaWx9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIGNvdmVyYWdlOiB7XCIpO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBlbmFibGVkOiAke3RoaXMuY292ZXJhZ2VFbmFibGVkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcHJvdmlkZXI6IFwiJHt0aGlzLmNvdmVyYWdlUHJvdmlkZXJ9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIHJlcG9ydGVyOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY292ZXJhZ2VSZXBvcnRlcnMpfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcmVwb3J0c0RpcmVjdG9yeTogXCIke3RoaXMuY292ZXJhZ2VEaXJlY3Rvcnl9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgfSxcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBlbnZpcm9ubWVudDogXCIke3RoaXMuZW52aXJvbm1lbnR9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBleGNsdWRlOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odGhpcy5leGNsdWRlKSl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgZ2xvYmFsczogJHt0aGlzLmdsb2JhbHN9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgaW5jbHVkZTogJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHRoaXMuaW5jbHVkZSkpfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGlzb2xhdGU6ICR7dGhpcy5pc29sYXRlfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHBhc3NXaXRoTm9UZXN0czogJHt0aGlzLnBhc3NXaXRoTm9UZXN0c30sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBwcmludENvbnNvbGVUcmFjZTogJHt0aGlzLnByaW50Q29uc29sZVRyYWNlfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHBvb2w6IFwiJHt0aGlzLnBvb2x9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBzbG93VGVzdFRocmVzaG9sZDogJHt0aGlzLnNsb3dUZXN0VGhyZXNob2xkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChcIiAgICB0eXBlY2hlY2s6IHtcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIGVuYWJsZWQ6ICR7dGhpcy50eXBlY2hlY2tFbmFibGVkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgY2hlY2tlcjogXCIke3RoaXMudHlwZWNoZWNrQ2hlY2tlcn1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgdHNjb25maWc6IFwiJHt0aGlzLnR5cGVjaGVja1RzY29uZmlnfVwiLGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIH0sXCIpO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgdXBkYXRlOiAke3RoaXMudXBkYXRlU25hcHNob3RzfSxgKTtcblxuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgfVxufVxuIl19
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsbUNBQXFDO0FBQ3JDLG9EQUFpRDtBQUNqRCwwREFBeUQ7QUFDekQsc0RBQStEO0FBQy9ELGtEQUErQztBQUMvQyxvQ0FBMkM7QUFFM0MsSUFBWSxXQTBCWDtBQTFCRCxXQUFZLFdBQVc7SUFDbkI7Ozs7T0FJRztJQUNILDRDQUE2QixDQUFBO0lBRTdCOzs7O09BSUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUV2Qjs7OztPQUlHO0lBQ0gsOEJBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsNEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBMUJXLFdBQVcsMkJBQVgsV0FBVyxRQTBCdEI7QUFFRCxJQUFZLElBbUNYO0FBbkNELFdBQVksSUFBSTtJQUNaOzs7Ozs7T0FNRztJQUNILHVCQUFlLENBQUE7SUFFZjs7OztPQUlHO0lBQ0gsMkJBQW1CLENBQUE7SUFFbkI7Ozs7Ozs7O09BUUc7SUFDSCwyQkFBbUIsQ0FBQTtJQUVuQjs7Ozs7T0FLRztJQUNILCtCQUF1QixDQUFBO0FBQzNCLENBQUMsRUFuQ1csSUFBSSxvQkFBSixJQUFJLFFBbUNmO0FBRUQsSUFBWSxnQkFjWDtBQWRELFdBQVksZ0JBQWdCO0lBQ3hCOzs7O09BSUc7SUFDSCx5Q0FBcUIsQ0FBQTtJQUVyQjs7OztPQUlHO0lBQ0gsNkJBQVMsQ0FBQTtBQUNiLENBQUMsRUFkVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQWMzQjtBQUVELElBQVksZ0JBeUJYO0FBekJELFdBQVksZ0JBQWdCO0lBQ3hCOztPQUVHO0lBQ0gscUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7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c0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBhd3NjZGssIGNkayB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwicHJvamVuL2xpYi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEplc3QsIHR5cGUgTm9kZVByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gXCJwcm9qZW4vbGliL3RleHRmaWxlXCI7XG5pbXBvcnQgeyB0c2NvbmZpZ0RldlBhdGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGVudW0gRW52aXJvbm1lbnQge1xuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBWZXJjZWwncyBFZGdlIFJ1bnRpbWUgVk0uXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZWRnZS1ydW50aW1lLnZlcmNlbC5hcHAvcGFja2FnZXMvdm1cbiAgICAgKi9cbiAgICBFREdFX1JVTlRJTUUgPSBcImVkZ2UtcnVudGltZVwiLFxuXG4gICAgLyoqXG4gICAgICogUnVuIHRlc3RzIGluIGBoYXBweS1kb21gIGVudmlyb25tZW50LlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2Fwcmljb3JuODYvaGFwcHktZG9tXG4gICAgICovXG4gICAgSEFQUFlfRE9NID0gXCJoYXBweS1kb21cIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBganNkb21gIGVudmlyb25tZW50LlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vanNkb20vanNkb21cbiAgICAgKi9cbiAgICBKU0RPTSA9IFwianNkb21cIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBhIE5vZGUuanMgZW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgTk9ERSA9IFwibm9kZVwiLFxufVxuXG5leHBvcnQgZW51bSBQb29sIHtcbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gYG5vZGU6Y2hpbGRfcHJvY2Vzc2AgdXNpbmcgZm9yaygpXG4gICAgICpcbiAgICAgKiBUZXN0IGlzb2xhdGlvbiAod2hlbiBlbmFibGVkKSBpcyBkb25lIGJ5IHNwYXduaW5nIGEgbmV3IGNoaWxkIHByb2Nlc3MgZm9yIGVhY2ggdGVzdCBmaWxlLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL2NoaWxkX3Byb2Nlc3MuaHRtbCNjaGlsZF9wcm9jZXNzZm9ya21vZHVsZXBhdGgtYXJncy1vcHRpb25zXG4gICAgICovXG4gICAgRk9SS1MgPSBcImZvcmtzXCIsXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gYG5vZGU6d29ya2VyX3RocmVhZHNgLlxuICAgICAqXG4gICAgICogVGVzdCBpc29sYXRpb24gKHdoZW4gZW5hYmxlZCkgaXMgZG9uZSBieSBzcGF3bmluZyBhIG5ldyB0aHJlYWQgZm9yIGVhY2ggdGVzdCBmaWxlLlxuICAgICAqL1xuICAgIFRIUkVBRFMgPSBcInRocmVhZHNcIixcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBpc29sYXRlZCBgbm9kZTp2bWAuXG4gICAgICpcbiAgICAgKiBUZXN0IGZpbGVzIGFyZSBydW4gcGFyYWxsZWwgdXNpbmcgYG5vZGU6Y2hpbGRfcHJvY2Vzc2AgZm9yaygpXG4gICAgICpcbiAgICAgKiBUaGlzIG1ha2VzIHRlc3RzIHJ1biBmYXN0ZXIsIGJ1dCBWTSBtb2R1bGUgaXMgdW5zdGFibGUuIFlvdXIgdGVzdHMgbWlnaHQgbGVhayBtZW1vcnkuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY2hpbGRfcHJvY2Vzcy5odG1sI2NoaWxkX3Byb2Nlc3Nmb3JrbW9kdWxlcGF0aC1hcmdzLW9wdGlvbnNcbiAgICAgKi9cbiAgICBWTUZPUktTID0gXCJ2bWZvcmtzXCIsXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGVzdHMgaW4gaXNvbGF0ZWQgYG5vZGU6dm1gLlxuICAgICAqIFRlc3QgZmlsZXMgYXJlIHJ1biBwYXJhbGxlbCB1c2luZyBgbm9kZTp3b3JrZXJfdGhyZWFkc2AuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ha2VzIHRlc3RzIHJ1biBmYXN0ZXIsIGJ1dCBWTSBtb2R1bGUgaXMgdW5zdGFibGUuIFlvdXIgdGVzdHMgbWlnaHQgbGVhayBtZW1vcnkuXG4gICAgICovXG4gICAgVk1USFJFQURTID0gXCJ2bXRocmVhZHNcIixcbn1cblxuZXhwb3J0IGVudW0gQ292ZXJhZ2VQcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBjb3ZlcmFnZSByZXBvcnQgdXNpbmcgaXN0YW5idWwuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vaXN0YW5idWwuanMub3JnXG4gICAgICovXG4gICAgSVNUQU5CVUwgPSBcImlzdGFuYnVsXCIsXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGNvdmVyYWdlIHJlcG9ydHMgdXNpbmcgdjguXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vdjguZGV2L2Jsb2cvamF2YXNjcmlwdC1jb2RlLWNvdmVyYWdlXG4gICAgICovXG4gICAgVjggPSBcInY4XCIsXG59XG5cbmV4cG9ydCBlbnVtIENvdmVyYWdlUmVwb3J0ZXIge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGBjbG92ZXJgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBDTE9WRVIgPSBcImNsb3ZlclwiLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYEhUTUxgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBIVE1MID0gXCJodG1sXCIsXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBgSlNPTmAgcmVwb3J0LlxuICAgICAqL1xuICAgIEpTT04gPSBcImpzb25cIixcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGBMQ09WYCByZXBvcnQuXG4gICAgICovXG4gICAgTENPViA9IFwibGNvdlwiLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYHRleHRgIHJlcG9ydC5cbiAgICAgKi9cbiAgICBURVhUID0gXCJ0ZXh0XCIsXG59XG5cbi8qKlxuICogVml0ZXN0IENvbmZpZy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0Q29uZmlnT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCB5b3VyIHRlc3QgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIFZpdGVzdCdzIGBjb25maWdEZWZhdWx0cy5pbmNsdWRlYFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jaW5jbHVkZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGU/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSB5b3VyIHRlc3QgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIFZpdGVzdCdzIGBjb25maWdEZWZhdWx0cy5leGNsdWRlYFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jZXhjbHVkZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGU/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVudmlyb25tZW50IHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJub2RlXCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2Vudmlyb25tZW50XG4gICAgICovXG4gICAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcblxuICAgIC8qKlxuICAgICAqIFJ1biB0ZXN0cyBpbiBhbiBpc29sYXRlZCBlbnZpcm9ubWVudC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB2bVRocmVhZHMgcG9vbC5cbiAgICAgKlxuICAgICAqIERpc2FibGluZyB0aGlzIG9wdGlvbiBtaWdodCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHlvdXIgY29kZSBkb2Vzbid0IHJlbHkgb24gc2lkZSBlZmZlY3RzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jaXNvbGF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlzb2xhdGU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUG9vbCB1c2VkIHRvIHJ1biB0ZXN0cyBpbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZm9ya3NcIlxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jcG9vbFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBvb2w/OiBQb29sO1xuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYXBpcyBnbG9iYWxseS4gSWYgeW91IHByZWZlciB0byB1c2UgdGhlIEFQSXMgZ2xvYmFsbHkgbGlrZSBKZXN0LCBzZXQgdG8gYHRydWVgLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2dsb2JhbHNcbiAgICAgKi9cbiAgICByZWFkb25seSBnbG9iYWxzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvdmVyYWdlIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNjb3ZlcmFnZS1lbmFibGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VFbmFibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvdmVyYWdlIHByb3ZpZGVyIHR5cGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcInY4XCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI2NvdmVyYWdlLXByb3ZpZGVyXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VQcm92aWRlcj86IENvdmVyYWdlUHJvdmlkZXI7XG5cbiAgICAvKipcbiAgICAgKiBDb3ZlcmFnZSByZXBvcnRlcnMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnW1widGV4dFwiLCBcImxjb3ZcIl0nXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNjb3ZlcmFnZS1yZXBvcnRlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0ZXJzPzogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG5cbiAgICAvKipcbiAgICAgKiBDb3ZlcmFnZSBvdXRwdXQgZGlyZWN0b3J5LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJjb3ZlcmFnZVwiXG4gICAgICovXG4gICAgcmVhZG9ubHkgY292ZXJhZ2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgdHlwZWNoZWNraW5nIGFsb25nc2lkZSB5b3VyIHJlZ3VsYXIgdGVzdHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlIChmb3IgVHlwZVNjcmlwdCBwcm9qZWN0cylcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI3R5cGVjaGVjay1lbmFibGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUb29sIHRvIHVzZSBmb3IgdHlwZSBjaGVja2luZy4gQ2hlY2tlciBzaG91bGQgaW1wbGVtZW50IHRoZSBzYW1lIG91dHB1dCBmb3JtYXQgYXMgYHRzY2AuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcInRzYyAtLW5vRW1pdFwiXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyN0eXBlY2hlY2stY2hlY2tlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IHR5cGVjaGVja0NoZWNrZXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGN1c3RvbSB0c2NvbmZpZywgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gdGhlIHByb2plY3QncyBkZXZlbG9wbWVudCB0c2NvbmZpZyAoZS5nLiBcInRlc3QvdHNjb25maWcuanNvblwiKVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jdHlwZWNoZWNrLXRzY29uZmlnXG4gICAgICovXG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrVHNjb25maWc/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBWaXRlc3Qgd2lsbCBub3QgZmFpbCwgaWYgbm8gdGVzdHMgd2lsbCBiZSBmb3VuZC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKiBAc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9jb25maWcvI3Bhc3N3aXRobm90ZXN0c1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTdG9wIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgY2VydGFpbiBudW1iZXIgb2YgZmFpbHVyZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICogQHNlZSBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnLyNiYWlsXG4gICAgICovXG4gICAgcmVhZG9ubHkgYmFpbD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBzbmFwc2hvdCBmaWxlcy4gVGhpcyB3aWxsIHVwZGF0ZSBhbGwgY2hhbmdlZCBzbmFwc2hvdHMgYW5kIGRlbGV0ZSBvYnNvbGV0ZSBvbmVzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2d1aWRlL3NuYXBzaG90Lmh0bWwjdXBkYXRpbmctc25hcHNob3RzXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXBkYXRlU25hcHNob3RzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsd2F5cyBwcmludCBjb25zb2xlIHRyYWNlcyB3aGVuIGNhbGxpbmcgYW55IGNvbnNvbGUgbWV0aG9kLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jY29uc29sZXRyYWNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJpbnRDb25zb2xlVHJhY2U/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgd2hpY2ggYSB0ZXN0IG9yIHN1aXRlIGlzIGNvbnNpZGVyZWQgc2xvdy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDMwMFxuICAgICAqIEBzZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2NvbmZpZy8jc2xvd3Rlc3R0aHJlc2hvbGRcbiAgICAgKi9cbiAgICByZWFkb25seSBzbG93VGVzdFRocmVzaG9sZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBDb25maWcgZmlsZSBwYXRoLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2aXRlc3QuY29uZmlnLnRzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBjb25maWdGaWxlUGF0aD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgY29uZmlnIG9wdGlvbnMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29uZmlnPzogVml0ZXN0Q29uZmlnT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIFZpdGVzdCB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJeNFwiXG4gICAgICovXG4gICAgcmVhZG9ubHkgdml0ZXN0VmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFZpdGVzdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBOb2RlUHJvamVjdCk6IFZpdGVzdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzVml0ZXN0ID0gKGM6IENvbXBvbmVudCk6IGMgaXMgVml0ZXN0ID0+IGMgaW5zdGFuY2VvZiBWaXRlc3Q7XG4gICAgICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc1ZpdGVzdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdGaWxlUGF0aDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5jbHVkZTogU2V0PHN0cmluZz47XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlOiBTZXQ8c3RyaW5nPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzb2xhdGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBwb29sOiBQb29sO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY292ZXJhZ2VFbmFibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVjaGVja0NoZWNrZXI6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVjaGVja1RzY29uZmlnOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBiYWlsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB1cGRhdGVTbmFwc2hvdHM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudDogc3RyaW5nO1xuICAgIHByaXZhdGUgZ2xvYmFsczogYm9vbGVhbjtcbiAgICBwcml2YXRlIGNvdmVyYWdlUHJvdmlkZXI6IENvdmVyYWdlUHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBjb3ZlcmFnZVJlcG9ydGVyczogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG4gICAgcHJpdmF0ZSBjb3ZlcmFnZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgdmVyc2lvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRDb25zb2xlVHJhY2U6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBzbG93VGVzdFRocmVzaG9sZDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFZpdGVzdE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgICAgICB0aGlzLmNvbmZpZ0ZpbGVQYXRoID0gb3B0aW9ucy5jb25maWdGaWxlUGF0aCA/PyBcInZpdGVzdC5jb25maWcudHNcIjtcbiAgICAgICAgdGhpcy5pbmNsdWRlID0gbmV3IFNldChvcHRpb25zLmNvbmZpZz8uaW5jbHVkZSA/PyBbXCIqKi8qLnt0ZXN0LHNwZWN9Lj8oY3xtKVtqdF1zPyh4KVwiXSk7XG4gICAgICAgIHRoaXMuZXhjbHVkZSA9IG5ldyBTZXQoXG4gICAgICAgICAgICBvcHRpb25zLmNvbmZpZz8uZXhjbHVkZSA/PyBbXG4gICAgICAgICAgICAgICAgXCIqKi9ub2RlX21vZHVsZXMvKipcIixcbiAgICAgICAgICAgICAgICBcIioqL2Rpc3QvKipcIixcbiAgICAgICAgICAgICAgICBcIioqL2N5cHJlc3MvKipcIixcbiAgICAgICAgICAgICAgICBcIioqLy57aWRlYSxnaXQsY2FjaGUsb3V0cHV0LHRlbXB9LyoqXCIsXG4gICAgICAgICAgICAgICAgXCIqKi97a2FybWEscm9sbHVwLHdlYnBhY2ssdml0ZSx2aXRlc3QsamVzdCxhdmEsYmFiZWwsbnljLGN5cHJlc3MsdHN1cCxidWlsZCxlc2xpbnQscHJldHRpZXJ9LmNvbmZpZy4qXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzb2xhdGUgPSBvcHRpb25zLmNvbmZpZz8uaXNvbGF0ZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLnBvb2wgPSBvcHRpb25zLmNvbmZpZz8ucG9vbCA/PyBQb29sLkZPUktTO1xuICAgICAgICB0aGlzLmNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY29uZmlnPy5jb3ZlcmFnZUVuYWJsZWQgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tFbmFibGVkID0gb3B0aW9ucy5jb25maWc/LnR5cGVjaGVja0VuYWJsZWQgPz8gdGhpcy5pc1R5cGVzY3JpcHRQcm9qZWN0KCk7XG4gICAgICAgIHRoaXMudHlwZWNoZWNrQ2hlY2tlciA9IG9wdGlvbnMuY29uZmlnPy50eXBlY2hlY2tDaGVja2VyID8/IFwidHNjIC0tbm9FbWl0XCI7XG4gICAgICAgIHRoaXMudHlwZWNoZWNrVHNjb25maWcgPSBvcHRpb25zLmNvbmZpZz8udHlwZWNoZWNrVHNjb25maWcgPz8gdHNjb25maWdEZXZQYXRoKHByb2plY3QpO1xuICAgICAgICB0aGlzLnBhc3NXaXRoTm9UZXN0cyA9IG9wdGlvbnMuY29uZmlnPy5wYXNzV2l0aE5vVGVzdHMgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5iYWlsID0gb3B0aW9ucy5jb25maWc/LmJhaWwgPz8gMDtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IG9wdGlvbnMuY29uZmlnPy5lbnZpcm9ubWVudCA/PyBFbnZpcm9ubWVudC5OT0RFO1xuICAgICAgICB0aGlzLmdsb2JhbHMgPSBvcHRpb25zLmNvbmZpZz8uZ2xvYmFscyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVByb3ZpZGVyID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlUHJvdmlkZXIgPz8gQ292ZXJhZ2VQcm92aWRlci5WODtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVJlcG9ydGVycyA9IG9wdGlvbnMuY29uZmlnPy5jb3ZlcmFnZVJlcG9ydGVycyA/PyBbQ292ZXJhZ2VSZXBvcnRlci5URVhULCBDb3ZlcmFnZVJlcG9ydGVyLkxDT1ZdO1xuICAgICAgICB0aGlzLmNvdmVyYWdlRGlyZWN0b3J5ID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlRGlyZWN0b3J5ID8/IFwiY292ZXJhZ2VcIjtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gb3B0aW9ucy52aXRlc3RWZXJzaW9uID8/IFwiXjRcIjtcbiAgICAgICAgdGhpcy51cGRhdGVTbmFwc2hvdHMgPSBvcHRpb25zLmNvbmZpZz8udXBkYXRlU25hcHNob3RzID8/IHRydWU7XG4gICAgICAgIHRoaXMucHJpbnRDb25zb2xlVHJhY2UgPSBvcHRpb25zLmNvbmZpZz8ucHJpbnRDb25zb2xlVHJhY2UgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5zbG93VGVzdFRocmVzaG9sZCA9IG9wdGlvbnMuY29uZmlnPy5zbG93VGVzdFRocmVzaG9sZCA/PyAzMDA7XG5cbiAgICAgICAgcHJvamVjdC5hZGREZXZEZXBzKGB2aXRlc3RAJHt0aGlzLnZlcnNpb259YCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJlQ292ZXJhZ2VQcm92aWRlcih0aGlzLmNvdmVyYWdlUHJvdmlkZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbHMgJiYgdGhpcy5pc1R5cGVzY3JpcHRQcm9qZWN0KCkgJiYgdGhpcy5wcm9qZWN0LnRyeUZpbmRPYmplY3RGaWxlKHRoaXMudHlwZWNoZWNrVHNjb25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUdsb2JhbHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdmVyYWdlRGlyZWN0b3J5UGF0aCA9IHBhdGgucG9zaXguam9pbihcIi9cIiwgdGhpcy5jb3ZlcmFnZURpcmVjdG9yeSwgXCIvXCIpO1xuICAgICAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShjb3ZlcmFnZURpcmVjdG9yeVBhdGgpO1xuICAgICAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKGNvdmVyYWdlRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgdGhpcy5hZGRUZXN0Q29tbWFuZCgpO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcblxuICAgICAgICBpZiAocHJvamVjdCBpbnN0YW5jZW9mIGNkay5Kc2lpUHJvamVjdCB8fCBwcm9qZWN0IGluc3RhbmNlb2YgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkpIHtcbiAgICAgICAgICAgIHByb2plY3QubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcInZpdGVzdC5jb25maWcudHNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICAgICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMucHJvamVjdC5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgSmVzdCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInZpdGVzdCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGplc3RcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlLmFkZChwYXR0ZXJuKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhjbHVkZS5hZGQocGF0dGVybik7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmVFbnZpcm9ubWVudChlbnZpcm9ubWVudDogRW52aXJvbm1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlQ292ZXJhZ2VQcm92aWRlcihwcm92aWRlcjogQ292ZXJhZ2VQcm92aWRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcm92aWRlclBhY2thZ2VzID0ge1xuICAgICAgICAgICAgW0NvdmVyYWdlUHJvdmlkZXIuVjhdOiBgQHZpdGVzdC9jb3ZlcmFnZS12OEAke3RoaXMudmVyc2lvbn1gLFxuICAgICAgICAgICAgW0NvdmVyYWdlUHJvdmlkZXIuSVNUQU5CVUxdOiBgQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bEAke3RoaXMudmVyc2lvbn1gLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3QgcHJvdmlkZXJQYWNrYWdlIG9mIE9iamVjdC52YWx1ZXMocHJvdmlkZXJQYWNrYWdlcykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMucmVtb3ZlRGVwZW5kZW5jeShwcm92aWRlclBhY2thZ2UpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHByb3ZpZGVyUGFja2FnZXNbcHJvdmlkZXJdLCBEZXBlbmRlbmN5VHlwZS5ERVZFTlYpO1xuICAgICAgICB0aGlzLmNvdmVyYWdlUHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUNvdmVyYWdlUmVwb3J0ZXJzKHJlcG9ydGVyczogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3ZlcmFnZVJlcG9ydGVycyA9IHJlcG9ydGVycztcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUdsb2JhbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVHNDb25maWcoKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUc0NvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHNjb25maWcgPSB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUodGhpcy50eXBlY2hlY2tUc2NvbmZpZyk7XG5cbiAgICAgICAgaWYgKCF0c2NvbmZpZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGZpbmQgdHNjb25maWdcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0c2NvbmZpZy5hZGRUb0FycmF5KFwiY29tcGlsZXJPcHRpb25zLnR5cGVzXCIsIFwidml0ZXN0L2dsb2JhbHNcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVzY3JpcHRQcm9qZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0LmRlcHMudHJ5R2V0RGVwZW5kZW5jeShcInR5cGVzY3JpcHRcIikgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRlc3RDb21tYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2plY3QudGVzdFRhc2suZXhlYyhcInZpdGVzdCBydW5cIiwge1xuICAgICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlc3RXYXRjaCA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwidGVzdDp3YXRjaFwiKTtcbiAgICAgICAgaWYgKCF0ZXN0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKFwidGVzdDp3YXRjaFwiLCB7XG4gICAgICAgICAgICAgICAgZXhlYzogXCJ2aXRlc3Qgd2F0Y2hcIixcbiAgICAgICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGVzdFVwZGF0ZVNuYXBzaG90cyA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwidGVzdDp1cGRhdGVcIik7XG4gICAgICAgIGlmICghdGVzdFVwZGF0ZVNuYXBzaG90cykge1xuICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJ0ZXN0OnVwZGF0ZVwiLCB7XG4gICAgICAgICAgICAgICAgZXhlYzogXCJ2aXRlc3QgLS11cGRhdGVcIixcbiAgICAgICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW50aGVzaXplQ29uZmlnKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2plY3QudHJ5UmVtb3ZlRmlsZSh0aGlzLmNvbmZpZ0ZpbGVQYXRoKTtcblxuICAgICAgICBuZXcgVGV4dEZpbGUodGhpcywgdGhpcy5jb25maWdGaWxlUGF0aCwge1xuICAgICAgICAgICAgbGluZXM6IHRoaXMucmVuZGVyQ29uZmlnKCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyQ29uZmlnKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5wcm9qZWN0IGFzIE5vZGVQcm9qZWN0O1xuICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHByb2plY3QucGFja2FnZS5wYWNrYWdlTmFtZTtcbiAgICAgICAgY29uc3QgZGVmaW5lQ29uZmlnSW1wb3J0ID1cbiAgICAgICAgICAgIHBhY2thZ2VOYW1lID09PSBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0c1wiXG4gICAgICAgICAgICAgICAgPyAnaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vbGliL3ZpdGVzdC1kZWZpbmUtY29uZmlnXCI7J1xuICAgICAgICAgICAgICAgIDogJ2ltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJAbmlrb3ZpcnRhbGEvcHJvamVuLWNvbnN0cnVjdHMvbGliL3ZpdGVzdC1kZWZpbmUtY29uZmlnXCI7JztcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgZGVmaW5lQ29uZmlnSW1wb3J0LFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcIixcbiAgICAgICAgICAgIFwiICB0ZXN0OiB7XCIsXG4gICAgICAgICAgICAuLi50aGlzLnJlbmRlclRlc3RPcHRpb25zKCksXG4gICAgICAgICAgICBcIiAgfSxcIixcbiAgICAgICAgICAgIFwifSk7XCIsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJUZXN0T3B0aW9ucygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgICAgICBsaW5lcy5wdXNoKGAgICAgYmFpbDogJHt0aGlzLmJhaWx9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIGNvdmVyYWdlOiB7XCIpO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBlbmFibGVkOiAke3RoaXMuY292ZXJhZ2VFbmFibGVkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcHJvdmlkZXI6IFwiJHt0aGlzLmNvdmVyYWdlUHJvdmlkZXJ9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIHJlcG9ydGVyOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY292ZXJhZ2VSZXBvcnRlcnMpfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcmVwb3J0c0RpcmVjdG9yeTogXCIke3RoaXMuY292ZXJhZ2VEaXJlY3Rvcnl9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgfSxcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBlbnZpcm9ubWVudDogXCIke3RoaXMuZW52aXJvbm1lbnR9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBleGNsdWRlOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odGhpcy5leGNsdWRlKSl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgZ2xvYmFsczogJHt0aGlzLmdsb2JhbHN9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgaW5jbHVkZTogJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHRoaXMuaW5jbHVkZSkpfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGlzb2xhdGU6ICR7dGhpcy5pc29sYXRlfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHBhc3NXaXRoTm9UZXN0czogJHt0aGlzLnBhc3NXaXRoTm9UZXN0c30sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBwcmludENvbnNvbGVUcmFjZTogJHt0aGlzLnByaW50Q29uc29sZVRyYWNlfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHBvb2w6IFwiJHt0aGlzLnBvb2x9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBzbG93VGVzdFRocmVzaG9sZDogJHt0aGlzLnNsb3dUZXN0VGhyZXNob2xkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChcIiAgICB0eXBlY2hlY2s6IHtcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIGVuYWJsZWQ6ICR7dGhpcy50eXBlY2hlY2tFbmFibGVkfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgY2hlY2tlcjogXCIke3RoaXMudHlwZWNoZWNrQ2hlY2tlcn1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgdHNjb25maWc6IFwiJHt0aGlzLnR5cGVjaGVja1RzY29uZmlnfVwiLGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIH0sXCIpO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgdXBkYXRlOiAke3RoaXMudXBkYXRlU25hcHNob3RzfSxgKTtcblxuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgfVxufVxuIl19
package/lib/config.d.ts CHANGED
@@ -28,7 +28,9 @@ export declare const projectDefaultOptions: {
28
28
  };
29
29
  };
30
30
  github: true;
31
- mergify: true;
31
+ githubOptions: {
32
+ mergify: true;
33
+ };
32
34
  autoMerge: true;
33
35
  jest: false;
34
36
  eslint: false;
@@ -48,11 +50,53 @@ export declare const projectDefaultOptions: {
48
50
  };
49
51
  packageManager: javascript.NodePackageManager.PNPM;
50
52
  pnpmVersion: string;
53
+ /**
54
+ * pnpm 11 only reads auth and registry settings from `.npmrc`, everything else
55
+ * has to live in `pnpm-workspace.yaml`.
56
+ *
57
+ * `minimumReleaseAge` defaults to 1440 minutes in pnpm 11. That cooldown makes
58
+ * pnpm record unavoidable exceptions in `minimumReleaseAgeExclude`, which projen
59
+ * regenerates away on the next synth, so the dependency upgrade workflow would
60
+ * keep flip-flopping this file. Set it explicitly to opt out.
61
+ *
62
+ * @see https://pnpm.io/migration
63
+ * @see https://pnpm.io/settings/dependency-resolution#minimumreleaseage
64
+ */
65
+ pnpmOptions: {
66
+ workspaceYamlOptions: {
67
+ nodeLinker: javascript.PnpmWorkspaceYamlSchemaNodeLinker.HOISTED;
68
+ minimumReleaseAge: number;
69
+ /**
70
+ * pnpm blocks dependency install scripts by default and, since pnpm 11, fails
71
+ * the install when any are ignored. esbuild links its platform binary in a
72
+ * postinstall script and is pulled in by vitest, so allow it. `allowBuilds`
73
+ * replaces the `allowScripts` project option, which still renders the
74
+ * `onlyBuiltDependencies` key that pnpm 11 no longer reads.
75
+ */
76
+ allowBuilds: {
77
+ esbuild: boolean;
78
+ };
79
+ /**
80
+ * pnpm 11 defaults `verifyDepsBeforeRun` to `install`, so `pnpm exec` and
81
+ * `pnpm run` install before running. projen resolves the task `PATH` with
82
+ * `$(pnpm -c exec ...)`, which re-enters `pnpm install` while an install is
83
+ * already running and deadlocks on the store lock. projen orchestrates the
84
+ * installs itself, so turn the check off.
85
+ *
86
+ * @see https://pnpm.io/settings/build#verifydepsbeforerun
87
+ */
88
+ verifyDepsBeforeRun: boolean;
89
+ };
90
+ };
51
91
  projenrcTs: true;
52
92
  typescriptVersion: string;
93
+ /**
94
+ * jsii validates the compile tsconfig against its "strict" rule set, so it may
95
+ * only carry options jsii accepts. Everything else belongs to `tsconfigDev`,
96
+ * which projen renders as the type-check only config extending this one.
97
+ */
53
98
  tsconfig: {
54
99
  compilerOptions: {
55
- allowSyntheticDefaultImports: true;
56
100
  alwaysStrict: true;
57
101
  declaration: true;
58
102
  esModuleInterop: true;
@@ -60,11 +104,8 @@ export declare const projectDefaultOptions: {
60
104
  inlineSourceMap: true;
61
105
  inlineSources: true;
62
106
  isolatedModules: true;
63
- noEmit: true;
64
- noEmitOnError: false;
65
107
  noFallthroughCasesInSwitch: true;
66
108
  noImplicitAny: true;
67
- noImplicitOverride: true;
68
109
  noImplicitReturns: true;
69
110
  noImplicitThis: true;
70
111
  noUnusedLocals: true;
@@ -73,7 +114,12 @@ export declare const projectDefaultOptions: {
73
114
  strict: true;
74
115
  strictNullChecks: true;
75
116
  strictPropertyInitialization: true;
76
- stripInternal: true;
117
+ };
118
+ };
119
+ tsconfigDev: {
120
+ compilerOptions: {
121
+ allowSyntheticDefaultImports: true;
122
+ noImplicitOverride: true;
77
123
  };
78
124
  };
79
125
  };
package/lib/config.js CHANGED
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.defaultOptions = exports.projectDefaultOptions = exports.defaults = void 0;
4
37
  exports.applyDefaults = applyDefaults;
5
38
  const projen_1 = require("projen");
6
39
  const utils_1 = require("./utils");
7
- const versions = require("./versions.json");
40
+ const versions = __importStar(require("./versions.json"));
8
41
  exports.defaults = {
9
42
  author: "Niko Virtala",
10
43
  authorAddress: "niko.virtala@hey.com",
@@ -27,7 +60,6 @@ function configureProject(project) {
27
60
  if (project instanceof projen_1.awscdk.AwsCdkTypeScriptApp) {
28
61
  project.cdkConfig.json.addOverride("app", `npx tsx ${project.srcdir}/${project.appEntrypoint}`);
29
62
  }
30
- project.npmrc.addConfig("node-linker", "hoisted");
31
63
  project.vscode?.extensions.addRecommendations("biomejs.biome");
32
64
  project.vscode?.settings.addSettings({
33
65
  "editor.codeActionsOnSave": {
@@ -68,7 +100,9 @@ exports.projectDefaultOptions = {
68
100
  },
69
101
  },
70
102
  github: true,
71
- mergify: true,
103
+ githubOptions: {
104
+ mergify: true,
105
+ },
72
106
  autoMerge: true,
73
107
  jest: false,
74
108
  eslint: false,
@@ -87,12 +121,52 @@ exports.projectDefaultOptions = {
87
121
  linter: true,
88
122
  },
89
123
  packageManager: projen_1.javascript.NodePackageManager.PNPM,
90
- pnpmVersion: "10.28.1",
124
+ pnpmVersion: "11.20.0",
125
+ /**
126
+ * pnpm 11 only reads auth and registry settings from `.npmrc`, everything else
127
+ * has to live in `pnpm-workspace.yaml`.
128
+ *
129
+ * `minimumReleaseAge` defaults to 1440 minutes in pnpm 11. That cooldown makes
130
+ * pnpm record unavoidable exceptions in `minimumReleaseAgeExclude`, which projen
131
+ * regenerates away on the next synth, so the dependency upgrade workflow would
132
+ * keep flip-flopping this file. Set it explicitly to opt out.
133
+ *
134
+ * @see https://pnpm.io/migration
135
+ * @see https://pnpm.io/settings/dependency-resolution#minimumreleaseage
136
+ */
137
+ pnpmOptions: {
138
+ workspaceYamlOptions: {
139
+ nodeLinker: projen_1.javascript.PnpmWorkspaceYamlSchemaNodeLinker.HOISTED,
140
+ minimumReleaseAge: 0,
141
+ /**
142
+ * pnpm blocks dependency install scripts by default and, since pnpm 11, fails
143
+ * the install when any are ignored. esbuild links its platform binary in a
144
+ * postinstall script and is pulled in by vitest, so allow it. `allowBuilds`
145
+ * replaces the `allowScripts` project option, which still renders the
146
+ * `onlyBuiltDependencies` key that pnpm 11 no longer reads.
147
+ */
148
+ allowBuilds: { esbuild: true },
149
+ /**
150
+ * pnpm 11 defaults `verifyDepsBeforeRun` to `install`, so `pnpm exec` and
151
+ * `pnpm run` install before running. projen resolves the task `PATH` with
152
+ * `$(pnpm -c exec ...)`, which re-enters `pnpm install` while an install is
153
+ * already running and deadlocks on the store lock. projen orchestrates the
154
+ * installs itself, so turn the check off.
155
+ *
156
+ * @see https://pnpm.io/settings/build#verifydepsbeforerun
157
+ */
158
+ verifyDepsBeforeRun: false,
159
+ },
160
+ },
91
161
  projenrcTs: true,
92
162
  typescriptVersion: exports.defaults.typescriptVersion,
163
+ /**
164
+ * jsii validates the compile tsconfig against its "strict" rule set, so it may
165
+ * only carry options jsii accepts. Everything else belongs to `tsconfigDev`,
166
+ * which projen renders as the type-check only config extending this one.
167
+ */
93
168
  tsconfig: {
94
169
  compilerOptions: {
95
- allowSyntheticDefaultImports: true,
96
170
  alwaysStrict: true,
97
171
  declaration: true,
98
172
  esModuleInterop: true,
@@ -100,11 +174,8 @@ exports.projectDefaultOptions = {
100
174
  inlineSourceMap: true,
101
175
  inlineSources: true,
102
176
  isolatedModules: true,
103
- noEmit: true,
104
- noEmitOnError: false,
105
177
  noFallthroughCasesInSwitch: true,
106
178
  noImplicitAny: true,
107
- noImplicitOverride: true,
108
179
  noImplicitReturns: true,
109
180
  noImplicitThis: true,
110
181
  noUnusedLocals: true,
@@ -113,7 +184,12 @@ exports.projectDefaultOptions = {
113
184
  strict: true,
114
185
  strictNullChecks: true,
115
186
  strictPropertyInitialization: true,
116
- stripInternal: true,
187
+ },
188
+ },
189
+ tsconfigDev: {
190
+ compilerOptions: {
191
+ allowSyntheticDefaultImports: true,
192
+ noImplicitOverride: true,
117
193
  },
118
194
  },
119
195
  };
@@ -124,6 +200,7 @@ const esModuleTsconfigOptions = {
124
200
  lib: ["esnext"],
125
201
  module: "nodenext",
126
202
  moduleResolution: projen_1.javascript.TypeScriptModuleResolution.NODE_NEXT,
203
+ noEmit: true,
127
204
  target: "esnext",
128
205
  },
129
206
  },
@@ -151,4 +228,4 @@ exports.defaultOptions = {
151
228
  AwsCdkConstructLibrary: (0, utils_1.mergeAll)(exports.projectDefaultOptions, publishableProjectDefaultOptions, cdkDefaultVersionOptions),
152
229
  },
153
230
  };
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnRkEsc0NBVUM7QUExRkQsbUNBQWdHO0FBRWhHLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFFL0IsUUFBQSxRQUFRLEdBQUc7SUFDcEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxpQkFBaUIsRUFBRSxRQUFRO0lBQzNCLEdBQUcsUUFBUTtJQUNYLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0ssQ0FBQztBQVFYLFNBQVMsZ0JBQWdCLENBQ3JCLE9BSXFCO0lBRXJCLElBQ0ksQ0FBQyxPQUFPLFlBQVksZUFBTSxDQUFDLG1CQUFtQixJQUFJLE9BQU8sWUFBWSxtQkFBVSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xHLENBQUMsQ0FBQyxPQUFPLFlBQVksWUFBRyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxDQUFDLENBQUMsT0FBTyxZQUFZLGVBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUNyRCxDQUFDO1FBQ0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUUxRixJQUFJLE9BQU8sWUFBWSxlQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztR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QUMvQixpQkFBaUIsRUFBRSxnQkFBUSxDQUFDLGlCQUFpQjtDQUNRLENBQUM7QUFFN0MsUUFBQSxjQUFjLEdBQUc7SUFDMUIsVUFBVSxFQUFFO1FBQ1IsaUJBQWlCLEVBQUUsSUFBQSxnQkFBUSxFQUN2Qiw2QkFBcUIsRUFDckIsdUJBQXVCLENBQzFCO0tBQ0o7SUFDRCxHQUFHLEVBQUU7UUFDRCxXQUFXLEVBQUUsSUFBQSxnQkFBUSxFQUF5Qiw2QkFBcUIsRUFBRSxnQ0FBZ0MsRUFBRTtZQUNuRyxXQUFXLEVBQUUsZ0JBQVEsQ0FBQyxXQUFXO1NBQ3BDLENBQUM7S0FDTDtJQUNELE1BQU0sRUFBRTtRQUNKLG1CQUFtQixFQUFFLElBQUEsZ0JBQVEsRUFDekIsNkJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix3QkFBd0IsQ0FDM0I7UUFDRCxzQkFBc0IsRUFBRSxJQUFBLGdCQUFRLEVBQzVCLDZCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsd0JBQXdCLENBQzNCO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrLCBjZGssIGphdmFzY3JpcHQsIHR5cGUgQ29tcG9uZW50IGFzIFByb2plbkNvbXBvbmVudCwgdHlwZXNjcmlwdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB0eXBlIHsgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgbWVyZ2VBbGwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgdmVyc2lvbnMgZnJvbSBcIi4vdmVyc2lvbnMuanNvblwiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgYXV0aG9yOiBcIk5pa28gVmlydGFsYVwiLFxuICAgIGF1dGhvckFkZHJlc3M6IFwibmlrby52aXJ0YWxhQGhleS5jb21cIixcbiAgICBjb25zdHJ1Y3RzVmVyc2lvbjogXCIxMC40LjNcIixcbiAgICAuLi52ZXJzaW9ucyxcbiAgICBnZXQganNpaVZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBgfiR7dGhpcy50eXBlc2NyaXB0VmVyc2lvbn1gO1xuICAgIH0sXG59IGFzIGNvbnN0O1xuXG5pbnRlcmZhY2UgQ29tcG9uZW50IHtcbiAgICBjb21wb25lbnQ6IG5ldyAocHJvamVjdDogbmV2ZXIsIG9wdGlvbnM/OiBuZXZlcikgPT4gUHJvamVuQ29tcG9uZW50O1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIG9wdGlvbnM/OiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiBjb25maWd1cmVQcm9qZWN0KFxuICAgIHByb2plY3Q6XG4gICAgICAgIHwgYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHBcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeVxuICAgICAgICB8IHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RcbiAgICAgICAgfCBjZGsuSnNpaVByb2plY3QsXG4pIHtcbiAgICBpZiAoXG4gICAgICAgIChwcm9qZWN0IGluc3RhbmNlb2YgYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAgfHwgcHJvamVjdCBpbnN0YW5jZW9mIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QpICYmXG4gICAgICAgICEocHJvamVjdCBpbnN0YW5jZW9mIGNkay5Kc2lpUHJvamVjdCkgJiZcbiAgICAgICAgIShwcm9qZWN0IGluc3RhbmNlb2YgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkpXG4gICAgKSB7XG4gICAgICAgIHByb2plY3QucGFja2FnZS5hZGRGaWVsZChcInR5cGVcIiwgXCJtb2R1bGVcIik7XG4gICAgfVxuXG4gICAgcHJvamVjdC5kZXBzLnJlbW92ZURlcGVuZGVuY3koXCJ0cy1ub2RlXCIpO1xuICAgIHByb2plY3QuYWRkRGV2RGVwcyhcInRzeFwiKTtcbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5yZXNldCgpO1xuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoYHRzeCAtLXRzY29uZmlnICR7cHJvamVjdC50c2NvbmZpZ0Rldi5maWxlLnBhdGh9IC5wcm9qZW5yYy50c2ApO1xuXG4gICAgaWYgKHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgICAgICBwcm9qZWN0LmNka0NvbmZpZy5qc29uLmFkZE92ZXJyaWRlKFwiYXBwXCIsIGBucHggdHN4ICR7cHJvamVjdC5zcmNkaXJ9LyR7cHJvamVjdC5hcHBFbnRyeXBvaW50fWApO1xuICAgIH1cblxuICAgIHByb2plY3QubnBtcmMuYWRkQ29uZmlnKFwibm9kZS1saW5rZXJcIiwgXCJob2lzdGVkXCIpO1xuXG4gICAgcHJvamVjdC52c2NvZGU/LmV4dGVuc2lvbnMuYWRkUmVjb21tZW5kYXRpb25zKFwiYmlvbWVqcy5iaW9tZVwiKTtcbiAgICBwcm9qZWN0LnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3Moe1xuICAgICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiOiB7XG4gICAgICAgICAgICBcInNvdXJjZS5vcmdhbml6ZUltcG9ydHMuYmlvbWVcIjogXCJhbHdheXNcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJlZGl0b3IuZGVmYXVsdEZvcm1hdHRlclwiOiBcImJpb21lanMuYmlvbWVcIixcbiAgICAgICAgXCJlZGl0b3IuZm9ybWF0T25TYXZlXCI6IHRydWUsXG4gICAgICAgIFwiZWRpdG9yLnRhYlNpemVcIjogNCxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgY2RrLkpzaWlQcm9qZWN0IHx8IHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSkge1xuICAgICAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoXCJwdWJsaXNoQ29uZmlnXCIsIHsgYWNjZXNzOiBcInB1YmxpY1wiIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBvbmNlIGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGJpb21lLCBtaXNlIGFuZCB2aXRlc3QgY29tcG9uZW50c1xuICAgIHByb2plY3QubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcImJpb21lLmpzb25jXCIsIFwibWlzZS50b21sXCIsIFwidml0ZXN0LmNvbmZpZy50c1wiKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q29tcG9uZW50cyhcbiAgICBwcm9qZWN0OlxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwXG4gICAgICAgIHwgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlcbiAgICAgICAgfCB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XG4gICAgICAgIHwgY2RrLkpzaWlQcm9qZWN0LFxuICAgIGNvbXBvbmVudHM6IENvbXBvbmVudFtdLFxuKSB7XG4gICAgZm9yIChjb25zdCB7IGNvbXBvbmVudCwgZW5hYmxlZCwgb3B0aW9ucyB9IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgaWYgKGVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3IGNvbXBvbmVudChwcm9qZWN0IGFzIG5ldmVyLCBvcHRpb25zIGFzIG5ldmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdHMoXG4gICAgcHJvamVjdDpcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcFxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5XG4gICAgICAgIHwgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICB8IGNkay5Kc2lpUHJvamVjdCxcbiAgICBjb21wb25lbnRzOiBDb21wb25lbnRbXSxcbikge1xuICAgIGNvbmZpZ3VyZVByb2plY3QocHJvamVjdCk7XG4gICAgaW5qZWN0Q29tcG9uZW50cyhwcm9qZWN0LCBjb21wb25lbnRzKTtcbn1cblxuZXhwb3J0IGNvbnN0IHByb2plY3REZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gICAgbWluTm9kZVZlcnNpb246IGRlZmF1bHRzLm1pbk5vZGVWZXJzaW9uLFxuICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBzZWNyZXQ6IFwiR0lUSFVCX1RPS0VOXCIsXG4gICAgICAgIGFsbG93ZWRVc2VybmFtZXM6IFtcIm5pa292aXJ0YWxhXCJdLFxuICAgIH0sXG4gICAgZGVwZW5kYWJvdDogZmFsc2UsXG4gICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWxzOiBbXCJhdXRvLWFwcHJvdmVcIiwgXCJhdXRvLW1lcmdlXCJdLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZ2l0aHViOiB0cnVlLFxuICAgIG1lcmdpZnk6IHRydWUsXG4gICAgYXV0b01lcmdlOiB0cnVlLFxuICAgIGplc3Q6IGZhbHNlLFxuICAgIGVzbGludDogZmFsc2UsXG4gICAgcHJldHRpZXI6IGZhbHNlLFxuICAgIGJpb21lOiB0cnVlLFxuICAgIGJpb21lT3B0aW9uczoge1xuICAgICAgICBiaW9tZUNvbmZpZzoge1xuICAgICAgICAgICAgZm9ybWF0dGVyOiB7XG4gICAgICAgICAgICAgICAgaW5kZW50U3R5bGU6IGphdmFzY3JpcHQuYmlvbWVfY29uZmlnLkluZGVudFN0eWxlLlNQQUNFLFxuICAgICAgICAgICAgICAgIGluZGVudFdpZHRoOiA0LFxuICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogMTIwLFxuICAgICAgICAgICAgICAgIHVzZUVkaXRvcmNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXR0ZXI6IHRydWUsXG4gICAgICAgIGxpbnRlcjogdHJ1ZSxcbiAgICB9LFxuICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuICAgIHBucG1WZXJzaW9uOiBcIjEwLjI4LjFcIixcbiAgICBwcm9qZW5yY1RzOiB0cnVlLFxuICAgIHR5cGVzY3JpcHRWZXJzaW9uOiBkZWZhdWx0cy50eXBlc2NyaXB0VmVyc2lvbixcbiAgICB0c2NvbmZpZzoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgICBhbHdheXNTdHJpY3Q6IHRydWUsXG4gICAgICAgICAgICBkZWNsYXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG4gICAgICAgICAgICBpbmxpbmVTb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICBpbmxpbmVTb3VyY2VzOiB0cnVlLFxuICAgICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgICAgbm9FbWl0T25FcnJvcjogZmFsc2UsXG4gICAgICAgICAgICBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIG5vSW1wbGljaXRBbnk6IHRydWUsXG4gICAgICAgICAgICBub0ltcGxpY2l0T3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgICAgICAgIG5vSW1wbGljaXRUaGlzOiB0cnVlLFxuICAgICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgICAgICAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgICAgICAgICBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgc3RyaXBJbnRlcm5hbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxufSBzYXRpc2ZpZXMgUGFydGlhbDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+O1xuXG5jb25zdCBlc01vZHVsZVRzY29uZmlnT3B0aW9ucyA9IHtcbiAgICB0c2NvbmZpZzoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICAgICAgbGliOiBbXCJlc25leHRcIl0sXG4gICAgICAgICAgICBtb2R1bGU6IFwibm9kZW5leHRcIixcbiAgICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IGphdmFzY3JpcHQuVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24uTk9ERV9ORVhULFxuICAgICAgICAgICAgdGFyZ2V0OiBcImVzbmV4dFwiLFxuICAgICAgICB9LFxuICAgIH0sXG59IHNhdGlzZmllcyBQYXJ0aWFsPFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz47XG5cbmNvbnN0IHB1Ymxpc2hhYmxlUHJvamVjdERlZmF1bHRPcHRpb25zID0ge1xuICAgIGF1dGhvcjogZGVmYXVsdHMuYXV0aG9yLFxuICAgIGF1dGhvckFkZHJlc3M6IGRlZmF1bHRzLmF1dGhvckFkZHJlc3MsXG4gICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IHRydWUsXG59IHNhdGlzZmllcyBQYXJ0aWFsPGNkay5Kc2lpUHJvamVjdE9wdGlvbnM+O1xuXG5jb25zdCBjZGtEZWZhdWx0VmVyc2lvbk9wdGlvbnMgPSB7XG4gICAgY2RrVmVyc2lvbjogZGVmYXVsdHMuY2RrVmVyc2lvbixcbiAgICBjb25zdHJ1Y3RzVmVyc2lvbjogZGVmYXVsdHMuY29uc3RydWN0c1ZlcnNpb24sXG59IHNhdGlzZmllcyBQYXJ0aWFsPGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICB0eXBlc2NyaXB0OiB7XG4gICAgICAgIFR5cGVTY3JpcHRQcm9qZWN0OiBtZXJnZUFsbDx0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz4oXG4gICAgICAgICAgICBwcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICBlc01vZHVsZVRzY29uZmlnT3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICB9LFxuICAgIGNkazoge1xuICAgICAgICBKc2lpUHJvamVjdDogbWVyZ2VBbGw8Y2RrLkpzaWlQcm9qZWN0T3B0aW9ucz4ocHJvamVjdERlZmF1bHRPcHRpb25zLCBwdWJsaXNoYWJsZVByb2plY3REZWZhdWx0T3B0aW9ucywge1xuICAgICAgICAgICAganNpaVZlcnNpb246IGRlZmF1bHRzLmpzaWlWZXJzaW9uLFxuICAgICAgICB9KSxcbiAgICB9LFxuICAgIGF3c2Nkazoge1xuICAgICAgICBBd3NDZGtUeXBlU2NyaXB0QXBwOiBtZXJnZUFsbDxhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnM+KFxuICAgICAgICAgICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgZXNNb2R1bGVUc2NvbmZpZ09wdGlvbnMsXG4gICAgICAgICAgICBjZGtEZWZhdWx0VmVyc2lvbk9wdGlvbnMsXG4gICAgICAgICksXG4gICAgICAgIEF3c0Nka0NvbnN0cnVjdExpYnJhcnk6IG1lcmdlQWxsPGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucz4oXG4gICAgICAgICAgICBwcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICBwdWJsaXNoYWJsZVByb2plY3REZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgIGNka0RlZmF1bHRWZXJzaW9uT3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICB9LFxufTtcbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4RUEsc0NBVUM7QUF4RkQsbUNBQWdHO0FBRWhHLG1DQUFtQztBQUNuQywwREFBNEM7QUFFL0IsUUFBQSxRQUFRLEdBQUc7SUFDcEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxpQkFBaUIsRUFBRSxRQUFRO0lBQzNCLEdBQUcsUUFBUTtJQUNYLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0ssQ0FBQztBQVFYLFNBQVMsZ0JBQWdCLENBQ3JCLE9BSXFCO0lBRXJCLElBQ0ksQ0FBQyxPQUFPLFlBQVksZUFBTSxDQUFDLG1CQUFtQixJQUFJLE9BQU8sWUFBWSxtQkFBVSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xHLENBQUMsQ0FBQyxPQUFPLFlBQVksWUFBRyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxDQUFDLENBQUMsT0FBTyxZQUFZLGVBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUNyRCxDQUFDO1FBQ0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUUxRixJQUFJLE9BQU8s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TSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsUUFBUTtTQUNuQjtLQUNKO0NBQ3dDLENBQUM7QUFFOUMsTUFBTSxnQ0FBZ0MsR0FBRztJQUNyQyxNQUFNLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNO0lBQ3ZCLGFBQWEsRUFBRSxnQkFBUSxDQUFDLGFBQWE7SUFDckMsb0JBQW9CLEVBQUUsSUFBSTtDQUNhLENBQUM7QUFFNUMsTUFBTSx3QkFBd0IsR0FBRztJQUM3QixVQUFVLEVBQUUsZ0JBQVEsQ0FBQyxVQUFVO0lBQy9CLGlCQUFpQixFQUFFLGdCQUFRLENBQUMsaUJBQWlCO0NBQ1EsQ0FBQztBQUU3QyxRQUFBLGNBQWMsR0FBRztJQUMxQixVQUFVLEVBQUU7UUFDUixpQkFBaUIsRUFBRSxJQUFBLGdCQUFRLEVBQ3ZCLDZCQUFxQixFQUNyQix1QkFBdUIsQ0FDMUI7S0FDSjtJQUNELEdBQUcsRUFBRTtRQUNELFdBQVcsRUFBRSxJQUFBLGdCQUFRLEVBQXlCLDZCQUFxQixFQUFFLGdDQUFnQyxFQUFFO1lBQ25HLFdBQVcsRUFBRSxnQkFBUSxDQUFDLFdBQVc7U0FDcEMsQ0FBQztLQUNMO0lBQ0QsTUFBTSxFQUFFO1FBQ0osbUJBQW1CLEVBQUUsSUFBQSxnQkFBUSxFQUN6Qiw2QkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixDQUMzQjtRQUNELHNCQUFzQixFQUFFLElBQUEsZ0JBQVEsRUFDNUIsNkJBQXFCLEVBQ3JCLGdDQUFnQyxFQUNoQyx3QkFBd0IsQ0FDM0I7S0FDSjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGNkaywgamF2YXNjcmlwdCwgdHlwZSBDb21wb25lbnQgYXMgUHJvamVuQ29tcG9uZW50LCB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHR5cGUgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZUFsbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyB2ZXJzaW9ucyBmcm9tIFwiLi92ZXJzaW9ucy5qc29uXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICBhdXRob3I6IFwiTmlrbyBWaXJ0YWxhXCIsXG4gICAgYXV0aG9yQWRkcmVzczogXCJuaWtvLnZpcnRhbGFAaGV5LmNvbVwiLFxuICAgIGNvbnN0cnVjdHNWZXJzaW9uOiBcIjEwLjQuM1wiLFxuICAgIC4uLnZlcnNpb25zLFxuICAgIGdldCBqc2lpVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIGB+JHt0aGlzLnR5cGVzY3JpcHRWZXJzaW9ufWA7XG4gICAgfSxcbn0gYXMgY29uc3Q7XG5cbmludGVyZmFjZSBDb21wb25lbnQge1xuICAgIGNvbXBvbmVudDogbmV3IChwcm9qZWN0OiBuZXZlciwgb3B0aW9ucz86IG5ldmVyKSA9PiBQcm9qZW5Db21wb25lbnQ7XG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgb3B0aW9ucz86IHVua25vd247XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ3VyZVByb2plY3QoXG4gICAgcHJvamVjdDpcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcFxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5XG4gICAgICAgIHwgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICB8IGNkay5Kc2lpUHJvamVjdCxcbikge1xuICAgIGlmIChcbiAgICAgICAgKHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCB8fCBwcm9qZWN0IGluc3RhbmNlb2YgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCkgJiZcbiAgICAgICAgIShwcm9qZWN0IGluc3RhbmNlb2YgY2RrLkpzaWlQcm9qZWN0KSAmJlxuICAgICAgICAhKHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSlcbiAgICApIHtcbiAgICAgICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwidHlwZVwiLCBcIm1vZHVsZVwiKTtcbiAgICB9XG5cbiAgICBwcm9qZWN0LmRlcHMucmVtb3ZlRGVwZW5kZW5jeShcInRzLW5vZGVcIik7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFwidHN4XCIpO1xuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LnJlc2V0KCk7XG4gICAgcHJvamVjdC5kZWZhdWx0VGFzaz8uZXhlYyhgdHN4IC0tdHNjb25maWcgJHtwcm9qZWN0LnRzY29uZmlnRGV2LmZpbGUucGF0aH0gLnByb2plbnJjLnRzYCk7XG5cbiAgICBpZiAocHJvamVjdCBpbnN0YW5jZW9mIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwKSB7XG4gICAgICAgIHByb2plY3QuY2RrQ29uZmlnLmpzb24uYWRkT3ZlcnJpZGUoXCJhcHBcIiwgYG5weCB0c3ggJHtwcm9qZWN0LnNyY2Rpcn0vJHtwcm9qZWN0LmFwcEVudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgcHJvamVjdC52c2NvZGU/LmV4dGVuc2lvbnMuYWRkUmVjb21tZW5kYXRpb25zKFwiYmlvbWVqcy5iaW9tZVwiKTtcbiAgICBwcm9qZWN0LnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3Moe1xuICAgICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiOiB7XG4gICAgICAgICAgICBcInNvdXJjZS5vcmdhbml6ZUltcG9ydHMuYmlvbWVcIjogXCJhbHdheXNcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJlZGl0b3IuZGVmYXVsdEZvcm1hdHRlclwiOiBcImJpb21lanMuYmlvbWVcIixcbiAgICAgICAgXCJlZGl0b3IuZm9ybWF0T25TYXZlXCI6IHRydWUsXG4gICAgICAgIFwiZWRpdG9yLnRhYlNpemVcIjogNCxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgY2RrLkpzaWlQcm9qZWN0IHx8IHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSkge1xuICAgICAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoXCJwdWJsaXNoQ29uZmlnXCIsIHsgYWNjZXNzOiBcInB1YmxpY1wiIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBvbmNlIGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGJpb21lLCBtaXNlIGFuZCB2aXRlc3QgY29tcG9uZW50c1xuICAgIHByb2plY3QubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcImJpb21lLmpzb25jXCIsIFwibWlzZS50b21sXCIsIFwidml0ZXN0LmNvbmZpZy50c1wiKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q29tcG9uZW50cyhcbiAgICBwcm9qZWN0OlxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwXG4gICAgICAgIHwgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlcbiAgICAgICAgfCB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XG4gICAgICAgIHwgY2RrLkpzaWlQcm9qZWN0LFxuICAgIGNvbXBvbmVudHM6IENvbXBvbmVudFtdLFxuKSB7XG4gICAgZm9yIChjb25zdCB7IGNvbXBvbmVudCwgZW5hYmxlZCwgb3B0aW9ucyB9IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgaWYgKGVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3IGNvbXBvbmVudChwcm9qZWN0IGFzIG5ldmVyLCBvcHRpb25zIGFzIG5ldmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdHMoXG4gICAgcHJvamVjdDpcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcFxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5XG4gICAgICAgIHwgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICB8IGNkay5Kc2lpUHJvamVjdCxcbiAgICBjb21wb25lbnRzOiBDb21wb25lbnRbXSxcbikge1xuICAgIGNvbmZpZ3VyZVByb2plY3QocHJvamVjdCk7XG4gICAgaW5qZWN0Q29tcG9uZW50cyhwcm9qZWN0LCBjb21wb25lbnRzKTtcbn1cblxuZXhwb3J0IGNvbnN0IHByb2plY3REZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gICAgbWluTm9kZVZlcnNpb246IGRlZmF1bHRzLm1pbk5vZGVWZXJzaW9uLFxuICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBzZWNyZXQ6IFwiR0lUSFVCX1RPS0VOXCIsXG4gICAgICAgIGFsbG93ZWRVc2VybmFtZXM6IFtcIm5pa292aXJ0YWxhXCJdLFxuICAgIH0sXG4gICAgZGVwZW5kYWJvdDogZmFsc2UsXG4gICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWxzOiBbXCJhdXRvLWFwcHJvdmVcIiwgXCJhdXRvLW1lcmdlXCJdLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZ2l0aHViOiB0cnVlLFxuICAgIGdpdGh1Yk9wdGlvbnM6IHtcbiAgICAgICAgbWVyZ2lmeTogdHJ1ZSxcbiAgICB9LFxuICAgIGF1dG9NZXJnZTogdHJ1ZSxcbiAgICBqZXN0OiBmYWxzZSxcbiAgICBlc2xpbnQ6IGZhbHNlLFxuICAgIHByZXR0aWVyOiBmYWxzZSxcbiAgICBiaW9tZTogdHJ1ZSxcbiAgICBiaW9tZU9wdGlvbnM6IHtcbiAgICAgICAgYmlvbWVDb25maWc6IHtcbiAgICAgICAgICAgIGZvcm1hdHRlcjoge1xuICAgICAgICAgICAgICAgIGluZGVudFN0eWxlOiBqYXZhc2NyaXB0LmJpb21lX2NvbmZpZy5JbmRlbnRTdHlsZS5TUEFDRSxcbiAgICAgICAgICAgICAgICBpbmRlbnRXaWR0aDogNCxcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDEyMCxcbiAgICAgICAgICAgICAgICB1c2VFZGl0b3Jjb25maWc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0dGVyOiB0cnVlLFxuICAgICAgICBsaW50ZXI6IHRydWUsXG4gICAgfSxcbiAgICBwYWNrYWdlTWFuYWdlcjogamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcbiAgICBwbnBtVmVyc2lvbjogXCIxMS4yMC4wXCIsXG4gICAgLyoqXG4gICAgICogcG5wbSAxMSBvbmx5IHJlYWRzIGF1dGggYW5kIHJlZ2lzdHJ5IHNldHRpbmdzIGZyb20gYC5ucG1yY2AsIGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAqIGhhcyB0byBsaXZlIGluIGBwbnBtLXdvcmtzcGFjZS55YW1sYC5cbiAgICAgKlxuICAgICAqIGBtaW5pbXVtUmVsZWFzZUFnZWAgZGVmYXVsdHMgdG8gMTQ0MCBtaW51dGVzIGluIHBucG0gMTEuIFRoYXQgY29vbGRvd24gbWFrZXNcbiAgICAgKiBwbnBtIHJlY29yZCB1bmF2b2lkYWJsZSBleGNlcHRpb25zIGluIGBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVgLCB3aGljaCBwcm9qZW5cbiAgICAgKiByZWdlbmVyYXRlcyBhd2F5IG9uIHRoZSBuZXh0IHN5bnRoLCBzbyB0aGUgZGVwZW5kZW5jeSB1cGdyYWRlIHdvcmtmbG93IHdvdWxkXG4gICAgICoga2VlcCBmbGlwLWZsb3BwaW5nIHRoaXMgZmlsZS4gU2V0IGl0IGV4cGxpY2l0bHkgdG8gb3B0IG91dC5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9wbnBtLmlvL21pZ3JhdGlvblxuICAgICAqIEBzZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzL2RlcGVuZGVuY3ktcmVzb2x1dGlvbiNtaW5pbXVtcmVsZWFzZWFnZVxuICAgICAqL1xuICAgIHBucG1PcHRpb25zOiB7XG4gICAgICAgIHdvcmtzcGFjZVlhbWxPcHRpb25zOiB7XG4gICAgICAgICAgICBub2RlTGlua2VyOiBqYXZhc2NyaXB0LlBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlci5IT0lTVEVELFxuICAgICAgICAgICAgbWluaW11bVJlbGVhc2VBZ2U6IDAsXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHBucG0gYmxvY2tzIGRlcGVuZGVuY3kgaW5zdGFsbCBzY3JpcHRzIGJ5IGRlZmF1bHQgYW5kLCBzaW5jZSBwbnBtIDExLCBmYWlsc1xuICAgICAgICAgICAgICogdGhlIGluc3RhbGwgd2hlbiBhbnkgYXJlIGlnbm9yZWQuIGVzYnVpbGQgbGlua3MgaXRzIHBsYXRmb3JtIGJpbmFyeSBpbiBhXG4gICAgICAgICAgICAgKiBwb3N0aW5zdGFsbCBzY3JpcHQgYW5kIGlzIHB1bGxlZCBpbiBieSB2aXRlc3QsIHNvIGFsbG93IGl0LiBgYWxsb3dCdWlsZHNgXG4gICAgICAgICAgICAgKiByZXBsYWNlcyB0aGUgYGFsbG93U2NyaXB0c2AgcHJvamVjdCBvcHRpb24sIHdoaWNoIHN0aWxsIHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgKiBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYCBrZXkgdGhhdCBwbnBtIDExIG5vIGxvbmdlciByZWFkcy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWxsb3dCdWlsZHM6IHsgZXNidWlsZDogdHJ1ZSB9LFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBwbnBtIDExIGRlZmF1bHRzIGB2ZXJpZnlEZXBzQmVmb3JlUnVuYCB0byBgaW5zdGFsbGAsIHNvIGBwbnBtIGV4ZWNgIGFuZFxuICAgICAgICAgICAgICogYHBucG0gcnVuYCBpbnN0YWxsIGJlZm9yZSBydW5uaW5nLiBwcm9qZW4gcmVzb2x2ZXMgdGhlIHRhc2sgYFBBVEhgIHdpdGhcbiAgICAgICAgICAgICAqIGAkKHBucG0gLWMgZXhlYyAuLi4pYCwgd2hpY2ggcmUtZW50ZXJzIGBwbnBtIGluc3RhbGxgIHdoaWxlIGFuIGluc3RhbGwgaXNcbiAgICAgICAgICAgICAqIGFscmVhZHkgcnVubmluZyBhbmQgZGVhZGxvY2tzIG9uIHRoZSBzdG9yZSBsb2NrLiBwcm9qZW4gb3JjaGVzdHJhdGVzIHRoZVxuICAgICAgICAgICAgICogaW5zdGFsbHMgaXRzZWxmLCBzbyB0dXJuIHRoZSBjaGVjayBvZmYuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MvYnVpbGQjdmVyaWZ5ZGVwc2JlZm9yZXJ1blxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2ZXJpZnlEZXBzQmVmb3JlUnVuOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgdHlwZXNjcmlwdFZlcnNpb246IGRlZmF1bHRzLnR5cGVzY3JpcHRWZXJzaW9uLFxuICAgIC8qKlxuICAgICAqIGpzaWkgdmFsaWRhdGVzIHRoZSBjb21waWxlIHRzY29uZmlnIGFnYWluc3QgaXRzIFwic3RyaWN0XCIgcnVsZSBzZXQsIHNvIGl0IG1heVxuICAgICAqIG9ubHkgY2Fycnkgb3B0aW9ucyBqc2lpIGFjY2VwdHMuIEV2ZXJ5dGhpbmcgZWxzZSBiZWxvbmdzIHRvIGB0c2NvbmZpZ0RldmAsXG4gICAgICogd2hpY2ggcHJvamVuIHJlbmRlcnMgYXMgdGhlIHR5cGUtY2hlY2sgb25seSBjb25maWcgZXh0ZW5kaW5nIHRoaXMgb25lLlxuICAgICAqL1xuICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgICAgYWx3YXlzU3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgZGVjbGFyYXRpb246IHRydWUsXG4gICAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgICAgICAgaW5saW5lU291cmNlTWFwOiB0cnVlLFxuICAgICAgICAgICAgaW5saW5lU291cmNlczogdHJ1ZSxcbiAgICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICAgICAgICAgIG5vSW1wbGljaXRSZXR1cm5zOiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdFRoaXM6IHRydWUsXG4gICAgICAgICAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICAgICAgICAgIG5vVW51c2VkUGFyYW1ldGVyczogdHJ1ZSxcbiAgICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb246IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB0c2NvbmZpZ0Rldjoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgICBub0ltcGxpY2l0T3ZlcnJpZGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbn0gc2F0aXNmaWVzIFBhcnRpYWw8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zPjtcblxuY29uc3QgZXNNb2R1bGVUc2NvbmZpZ09wdGlvbnMgPSB7XG4gICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIGxpYjogW1wiZXNuZXh0XCJdLFxuICAgICAgICAgICAgbW9kdWxlOiBcIm5vZGVuZXh0XCIsXG4gICAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiBqYXZhc2NyaXB0LlR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREVfTkVYVCxcbiAgICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcbiAgICAgICAgICAgIHRhcmdldDogXCJlc25leHRcIixcbiAgICAgICAgfSxcbiAgICB9LFxufSBzYXRpc2ZpZXMgUGFydGlhbDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+O1xuXG5jb25zdCBwdWJsaXNoYWJsZVByb2plY3REZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBhdXRob3I6IGRlZmF1bHRzLmF1dGhvcixcbiAgICBhdXRob3JBZGRyZXNzOiBkZWZhdWx0cy5hdXRob3JBZGRyZXNzLFxuICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiB0cnVlLFxufSBzYXRpc2ZpZXMgUGFydGlhbDxjZGsuSnNpaVByb2plY3RPcHRpb25zPjtcblxuY29uc3QgY2RrRGVmYXVsdFZlcnNpb25PcHRpb25zID0ge1xuICAgIGNka1ZlcnNpb246IGRlZmF1bHRzLmNka1ZlcnNpb24sXG4gICAgY29uc3RydWN0c1ZlcnNpb246IGRlZmF1bHRzLmNvbnN0cnVjdHNWZXJzaW9uLFxufSBzYXRpc2ZpZXMgUGFydGlhbDxhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgdHlwZXNjcmlwdDoge1xuICAgICAgICBUeXBlU2NyaXB0UHJvamVjdDogbWVyZ2VBbGw8dHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+KFxuICAgICAgICAgICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgZXNNb2R1bGVUc2NvbmZpZ09wdGlvbnMsXG4gICAgICAgICksXG4gICAgfSxcbiAgICBjZGs6IHtcbiAgICAgICAgSnNpaVByb2plY3Q6IG1lcmdlQWxsPGNkay5Kc2lpUHJvamVjdE9wdGlvbnM+KHByb2plY3REZWZhdWx0T3B0aW9ucywgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMsIHtcbiAgICAgICAgICAgIGpzaWlWZXJzaW9uOiBkZWZhdWx0cy5qc2lpVmVyc2lvbixcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICBhd3NjZGs6IHtcbiAgICAgICAgQXdzQ2RrVHlwZVNjcmlwdEFwcDogbWVyZ2VBbGw8YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zPihcbiAgICAgICAgICAgIHByb2plY3REZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgIGVzTW9kdWxlVHNjb25maWdPcHRpb25zLFxuICAgICAgICAgICAgY2RrRGVmYXVsdFZlcnNpb25PcHRpb25zLFxuICAgICAgICApLFxuICAgICAgICBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5OiBtZXJnZUFsbDxhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnM+KFxuICAgICAgICAgICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICBjZGtEZWZhdWx0VmVyc2lvbk9wdGlvbnMsXG4gICAgICAgICksXG4gICAgfSxcbn07XG4iXX0=
package/lib/errors.js CHANGED
@@ -15,6 +15,7 @@ exports.InvalidIndentLevelError = InvalidIndentLevelError;
15
15
  * Error thrown when base class format is invalid
16
16
  */
17
17
  class InvalidBaseClassFormatError extends Error {
18
+ baseClass;
18
19
  constructor(baseClass) {
19
20
  super(`Base class must be in format "module.ClassName", got: ${baseClass}`);
20
21
  this.baseClass = baseClass;
@@ -26,6 +27,7 @@ exports.InvalidBaseClassFormatError = InvalidBaseClassFormatError;
26
27
  * Error thrown when file path is invalid or missing directory separator
27
28
  */
28
29
  class InvalidFilePathError extends Error {
30
+ filePath;
29
31
  constructor(filePath) {
30
32
  super(`File path must contain directory separator, got: ${filePath}`);
31
33
  this.filePath = filePath;
@@ -37,6 +39,8 @@ exports.InvalidFilePathError = InvalidFilePathError;
37
39
  * Error thrown when component resolution fails
38
40
  */
39
41
  class ComponentResolutionError extends Error {
42
+ componentName;
43
+ reason;
40
44
  constructor(componentName, reason) {
41
45
  super(`Failed to resolve component ${componentName}: ${reason}`);
42
46
  this.componentName = componentName;
@@ -49,6 +53,8 @@ exports.ComponentResolutionError = ComponentResolutionError;
49
53
  * Error thrown when JSII manifest loading fails
50
54
  */
51
55
  class ManifestLoadError extends Error {
56
+ packageName;
57
+ reason;
52
58
  constructor(packageName, reason) {
53
59
  super(`Cannot load JSII manifest for package ${packageName}: ${reason}`);
54
60
  this.packageName = packageName;
@@ -57,4 +63,4 @@ class ManifestLoadError extends Error {
57
63
  }
58
64
  }
59
65
  exports.ManifestLoadError = ManifestLoadError;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsS0FBSztJQUM5QztRQUNJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBTEQsMERBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsS0FBSztJQUNsRCxZQUE0QixTQUFpQjtRQUN6QyxLQUFLLENBQUMseURBQXlELFNBQVMsRUFBRSxDQUFDLENBQUM7UUFEcEQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUV6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUxELGtFQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDM0MsWUFBNEIsUUFBZ0I7UUFDeEMsS0FBSyxDQUFDLG9EQUFvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFeEMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFMRCxvREFLQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBeUIsU0FBUSxLQUFLO0lBQy9DLFlBQ29CLGFBQXFCLEVBQ3JCLE1BQWM7UUFFOUIsS0FBSyxDQUFDLCtCQUErQixhQUFhLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztRQUhqRCxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBUkQsNERBUUM7QUFFRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUN4QyxZQUNvQixXQUFtQixFQUNuQixNQUFjO1FBRTlCLEtBQUssQ0FBQyx5Q0FBeUMsV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFIekQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUc5QixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7Q0FDSjtBQVJELDhDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGRlY3JlYXNlIGluZGVudCBsZXZlbCBiZWxvdyB6ZXJvIGluIENvZGVCdWZmZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRJbmRlbnRMZXZlbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIkNhbm5vdCBkZWNyZWFzZSBpbmRlbnQgbGV2ZWwgYmVsb3cgemVyb1wiKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJJbnZhbGlkSW5kZW50TGV2ZWxFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBiYXNlIGNsYXNzIGZvcm1hdCBpcyBpbnZhbGlkXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQmFzZUNsYXNzRm9ybWF0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGJhc2VDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGBCYXNlIGNsYXNzIG11c3QgYmUgaW4gZm9ybWF0IFwibW9kdWxlLkNsYXNzTmFtZVwiLCBnb3Q6ICR7YmFzZUNsYXNzfWApO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkludmFsaWRCYXNlQ2xhc3NGb3JtYXRFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBmaWxlIHBhdGggaXMgaW52YWxpZCBvciBtaXNzaW5nIGRpcmVjdG9yeSBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRGaWxlUGF0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGBGaWxlIHBhdGggbXVzdCBjb250YWluIGRpcmVjdG9yeSBzZXBhcmF0b3IsIGdvdDogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJJbnZhbGlkRmlsZVBhdGhFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBjb21wb25lbnQgcmVzb2x1dGlvbiBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVzb2x1dGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGBGYWlsZWQgdG8gcmVzb2x2ZSBjb21wb25lbnQgJHtjb21wb25lbnROYW1lfTogJHtyZWFzb259YCk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ29tcG9uZW50UmVzb2x1dGlvbkVycm9yXCI7XG4gICAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIEpTSUkgbWFuaWZlc3QgbG9hZGluZyBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3RMb2FkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGBDYW5ub3QgbG9hZCBKU0lJIG1hbmlmZXN0IGZvciBwYWNrYWdlICR7cGFja2FnZU5hbWV9OiAke3JlYXNvbn1gKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJNYW5pZmVzdExvYWRFcnJvclwiO1xuICAgIH1cbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsS0FBSztJQUM5QztRQUNJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBTEQsMERBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsS0FBSztJQUN0QjtJQUE1QixZQUE0QixTQUFpQjtRQUN6QyxLQUFLLENBQUMseURBQXlELFNBQVMsRUFBRSxDQUFDLENBQUM7UUFEcEQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUV6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUxELGtFQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDZjtJQUE1QixZQUE0QixRQUFnQjtRQUN4QyxLQUFLLENBQUMsb0RBQW9ELFFBQVEsRUFBRSxDQUFDLENBQUM7UUFEOUMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUV4QyxJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQUxELG9EQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLEtBQUs7SUFFM0I7SUFDQTtJQUZwQixZQUNvQixhQUFxQixFQUNyQixNQUFjO1FBRTlCLEtBQUssQ0FBQywrQkFBK0IsYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFIakQsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUc5QixJQUFJLENBQUMsSUFBSSxHQUFHLDBCQUEwQixDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQVJELDREQVFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLEtBQUs7SUFFcEI7SUFDQTtJQUZwQixZQUNvQixXQUFtQixFQUNuQixNQUFjO1FBRTlCLEtBQUssQ0FBQyx5Q0FBeUMsV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFIekQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUc5QixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7Q0FDSjtBQVJELDhDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGRlY3JlYXNlIGluZGVudCBsZXZlbCBiZWxvdyB6ZXJvIGluIENvZGVCdWZmZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRJbmRlbnRMZXZlbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIkNhbm5vdCBkZWNyZWFzZSBpbmRlbnQgbGV2ZWwgYmVsb3cgemVyb1wiKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJJbnZhbGlkSW5kZW50TGV2ZWxFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBiYXNlIGNsYXNzIGZvcm1hdCBpcyBpbnZhbGlkXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQmFzZUNsYXNzRm9ybWF0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGJhc2VDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGBCYXNlIGNsYXNzIG11c3QgYmUgaW4gZm9ybWF0IFwibW9kdWxlLkNsYXNzTmFtZVwiLCBnb3Q6ICR7YmFzZUNsYXNzfWApO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkludmFsaWRCYXNlQ2xhc3NGb3JtYXRFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBmaWxlIHBhdGggaXMgaW52YWxpZCBvciBtaXNzaW5nIGRpcmVjdG9yeSBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRGaWxlUGF0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGBGaWxlIHBhdGggbXVzdCBjb250YWluIGRpcmVjdG9yeSBzZXBhcmF0b3IsIGdvdDogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJJbnZhbGlkRmlsZVBhdGhFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBjb21wb25lbnQgcmVzb2x1dGlvbiBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVzb2x1dGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGBGYWlsZWQgdG8gcmVzb2x2ZSBjb21wb25lbnQgJHtjb21wb25lbnROYW1lfTogJHtyZWFzb259YCk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ29tcG9uZW50UmVzb2x1dGlvbkVycm9yXCI7XG4gICAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIEpTSUkgbWFuaWZlc3QgbG9hZGluZyBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3RMb2FkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGBDYW5ub3QgbG9hZCBKU0lJIG1hbmlmZXN0IGZvciBwYWNrYWdlICR7cGFja2FnZU5hbWV9OiAke3JlYXNvbn1gKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJNYW5pZmVzdExvYWRFcnJvclwiO1xuICAgIH1cbn1cbiJdfQ==