@cdktn/cli-core 0.25.0-pre.11 → 0.25.0-pre.12

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 (34) hide show
  1. package/build/lib/cdktf-config.js +18 -8
  2. package/build/lib/cdktf-project.js +3 -3
  3. package/build/lib/convert.js +19 -10
  4. package/build/lib/dependencies/dependency-manager.d.ts.map +1 -1
  5. package/build/lib/dependencies/dependency-manager.js +18 -8
  6. package/build/lib/dependencies/package-manager.js +18 -8
  7. package/build/lib/dependencies/prebuilt-providers.js +25 -16
  8. package/build/lib/dependencies/registry-api.js +19 -10
  9. package/build/lib/dependencies/version-constraints.js +20 -11
  10. package/build/lib/error-reporting.js +22 -13
  11. package/build/lib/errors.d.ts.map +1 -1
  12. package/build/lib/execution-logs.js +2 -3
  13. package/build/lib/get.js +21 -11
  14. package/build/lib/helpers/stack-helpers.js +8 -9
  15. package/build/lib/init.js +21 -11
  16. package/build/lib/installed-binary-check.js +19 -10
  17. package/build/lib/local-provider-constraints.js +18 -8
  18. package/build/lib/models/deploy-machine.d.ts +3 -3
  19. package/build/lib/models/deploy-machine.d.ts.map +1 -1
  20. package/build/lib/models/deploy-machine.js +10 -10
  21. package/build/lib/models/interactive-process.js +2 -3
  22. package/build/lib/models/schema.js +18 -8
  23. package/build/lib/models/terraform-cli.d.ts.map +1 -1
  24. package/build/lib/models/terraform-cli.js +21 -11
  25. package/build/lib/models/terraform.js +3 -3
  26. package/build/lib/output.d.ts.map +1 -1
  27. package/build/lib/output.js +21 -11
  28. package/build/lib/provider-add.js +2 -3
  29. package/build/lib/server/terraform-logs.js +2 -3
  30. package/build/lib/synth-stack.js +18 -8
  31. package/build/lib/synth.js +19 -10
  32. package/build/lib/terraform-json.js +18 -8
  33. package/build/lib/watch.js +19 -10
  34. package/package.json +8 -8
@@ -7,7 +7,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
8
  };
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createAndStartDestroyService = exports.createAndStartDeployService = exports.deployMachine = exports.terraformPtyService = exports.makeTerraformPtyService = exports.handleLineReceived = exports.bufferUnterminatedLines = exports.extractVariableNameFromPrompt = exports.isMissingVariablePrompt = exports.isDeployEvent = void 0;
10
+ exports.deployMachine = exports.terraformPtyService = void 0;
11
+ exports.isDeployEvent = isDeployEvent;
12
+ exports.isMissingVariablePrompt = isMissingVariablePrompt;
13
+ exports.extractVariableNameFromPrompt = extractVariableNameFromPrompt;
14
+ exports.bufferUnterminatedLines = bufferUnterminatedLines;
15
+ exports.handleLineReceived = handleLineReceived;
16
+ exports.makeTerraformPtyService = makeTerraformPtyService;
17
+ exports.createAndStartDeployService = createAndStartDeployService;
18
+ exports.createAndStartDestroyService = createAndStartDestroyService;
11
19
  const xstate_1 = require("xstate");
12
20
  const commons_1 = require("@cdktn/commons");
13
21
  const errors_1 = require("../errors");
@@ -17,7 +25,6 @@ const interactive_process_1 = require("./interactive-process");
17
25
  function isDeployEvent(event, type) {
18
26
  return event.type === type;
19
27
  }
20
- exports.isDeployEvent = isDeployEvent;
21
28
  /**
22
29
  * Terraform's interactive prompt for a missing variable looks like:
23
30
  *
@@ -41,7 +48,6 @@ function isMissingVariablePrompt(noColorLine) {
41
48
  .split("\n")
42
49
  .some((line) => VARIABLE_PROMPT_REGEX.test(line));
43
50
  }
44
- exports.isMissingVariablePrompt = isMissingVariablePrompt;
45
51
  function extractVariableNameFromPrompt(line) {
46
52
  const noColorLine = (0, strip_ansi_1.default)(line);
47
53
  const lines = noColorLine.split("\n");
@@ -53,7 +59,6 @@ function extractVariableNameFromPrompt(line) {
53
59
  }
54
60
  return match[1];
55
61
  }
56
- exports.extractVariableNameFromPrompt = extractVariableNameFromPrompt;
57
62
  // used to only send completed lines (= with a newline at the end of them) to our logic (#2827)
58
63
  function bufferUnterminatedLines(handler) {
59
64
  let buffer = "";
@@ -70,7 +75,6 @@ function bufferUnterminatedLines(handler) {
70
75
  bufferedReceiverFunction.getBuffer = () => buffer;
71
76
  return bufferedReceiverFunction;
72
77
  }
73
- exports.bufferUnterminatedLines = bufferUnterminatedLines;
74
78
  function handleLineReceived(send) {
75
79
  return (output) => {
76
80
  let hideOutput = false;
@@ -118,7 +122,6 @@ function handleLineReceived(send) {
118
122
  }
119
123
  };
120
124
  }
121
- exports.handleLineReceived = handleLineReceived;
122
125
  /**
123
126
  * Builds the invoked actor that runs terraform in a pty. It relays completed lines back to the parent machine via
124
127
  * `sendBack` and forwards SEND_LINE events from the parent to the pty via `receive`. The `spawn` function is a
@@ -151,7 +154,6 @@ function makeTerraformPtyService(spawn = interactive_process_1.spawnInteractive)
151
154
  };
152
155
  });
153
156
  }
154
- exports.makeTerraformPtyService = makeTerraformPtyService;
155
157
  exports.terraformPtyService = makeTerraformPtyService();
156
158
  exports.deployMachine = (0, xstate_1.setup)({
157
159
  types: {
@@ -308,7 +310,6 @@ function createAndStartDeployService(options, inspect) {
308
310
  service.send({ type: "START", pty: config });
309
311
  return service;
310
312
  }
311
- exports.createAndStartDeployService = createAndStartDeployService;
312
313
  function createAndStartDestroyService(options, inspect) {
313
314
  var _a, _b;
314
315
  const service = (0, xstate_1.createActor)(exports.deployMachine, { inspect });
@@ -341,5 +342,4 @@ function createAndStartDestroyService(options, inspect) {
341
342
  service.send({ type: "START", pty: config });
342
343
  return service;
343
344
  }
344
- exports.createAndStartDestroyService = createAndStartDestroyService;
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21vZGVscy9kZXBsb3ktbWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7QUFFSCxtQ0FVZ0I7QUFDaEIsNENBQWdEO0FBQ2hELHNDQUE0QztBQUM1Qyw0REFBbUM7QUFDbkMsMkJBQXlCO0FBQ3pCLCtEQUcrQjtBQTRCL0IsU0FBZ0IsYUFBYSxDQUMzQixLQUFrQixFQUNsQixJQUFxQjtJQUVyQixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0FBQzdCLENBQUM7QUFMRCxzQ0FLQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0scUJBQXFCLEdBQUcsd0NBQXdDLENBQUM7QUFFdkU7OztHQUdHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsV0FBbUI7SUFDekQsT0FBTyxXQUFXO1NBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUpELDBEQUlDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQUMsSUFBWTtJQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxLQUFLO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBeUIsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMs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LENBQUMsRUFBRSxFQUFFO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YsYUFBYSxPQUFPLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FDeEQsT0FBTyxDQUFDLE9BQ1YsRUFBRSxDQUNILENBQUM7SUFFRixNQUFNLE1BQU0sR0FBMkI7UUFDckMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUI7UUFDakMsSUFBSTtRQUNKLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTztZQUNwQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQWdDLEVBQUUsMERBQTBEO1NBQzFHO0tBQ0YsQ0FBQztJQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU3QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBdERELG9FQXNEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtcbiAgc2V0dXAsXG4gIGNyZWF0ZUFjdG9yLFxuICBzZW5kVG8sXG4gIGZyb21DYWxsYmFjayxcbiAgYXNzaWduLFxuICBBY3RvclJlZkZyb20sXG4gIEV2ZW50T2JqZWN0LFxuICBJbnNwZWN0aW9uRXZlbnQsXG4gIFNuYXBzaG90RnJvbSxcbn0gZnJvbSBcInhzdGF0ZVwiO1xuaW1wb3J0IHsgRXJyb3JzLCBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IG1pc3NpbmdWYXJpYWJsZSB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSBcInN0cmlwLWFuc2lcIjtcbmltcG9ydCB7IEVPTCB9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHtcbiAgc3Bhd25JbnRlcmFjdGl2ZSxcbiAgSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyxcbn0gZnJvbSBcIi4vaW50ZXJhY3RpdmUtcHJvY2Vzc1wiO1xuXG5pbnRlcmZhY2UgRGVwbG95Q29udGV4dCB7XG4gIGV4aXRDb2RlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGVycmFmb3JtIHdpbGwgZXhpdCB3aXRoIDEgaWYgaXQgd2FzIGNhbmNlbGxlZCwgYnV0IHdlIGRvbid0IHdhbnQgdG8gZmFpbCBpbiB0aGF0IGNhc2VcbiAgICovXG4gIGNhbmNlbGxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERlcGxveUV2ZW50ID1cbiAgfCB7IHR5cGU6IFwiU1RBUlRcIjsgcHR5OiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnIH1cbiAgfCB7IHR5cGU6IFwiU1RPUFwiIH1cbiAgfCB7IHR5cGU6IFwiU0VORF9MSU5FXCI7IGlucHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIjsgb3V0cHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIgfSAvLyBlLmcuIHZpYSBURkMgVUkgb3IgQVBJXG4gIHwgeyB0eXBlOiBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIiB9XG4gIHwgeyB0eXBlOiBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVF9PVkVSUklERVwiIH1cbiAgfCB7IHR5cGU6IFwiUkVRVUVTVF9BUFBST1ZBTFwiIH1cbiAgfCB7IHR5cGU6IFwiVkFSSUFCTEVfTUlTU0lOR1wiOyB2YXJpYWJsZU5hbWU6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIlJFUVVFU1RfU0VOVElORUxfT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIkFQUFJPVkVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVFwiIH1cbiAgfCB7IHR5cGU6IFwiRVhJVEVEXCI7IGV4aXRDb2RlOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVwbG95RXZlbnQ8RGVwbG95RXZlbnRUeXBlIGV4dGVuZHMgRGVwbG95RXZlbnRbXCJ0eXBlXCJdPihcbiAgZXZlbnQ6IEV2ZW50T2JqZWN0LFxuICB0eXBlOiBEZXBsb3lFdmVudFR5cGUsXG4pOiBldmVudCBpcyBEZXBsb3lFdmVudCAmIHsgdHlwZTogRGVwbG95RXZlbnRUeXBlIH0ge1xuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gdHlwZTtcbn1cblxuLyoqXG4gKiBUZXJyYWZvcm0ncyBpbnRlcmFjdGl2ZSBwcm9tcHQgZm9yIGEgbWlzc2luZyB2YXJpYWJsZSBsb29rcyBsaWtlOlxuICpcbiAqICAgdmFyLjxuYW1lPlxuICogICAgIEVudGVyIGEgdmFsdWU6XG4gKlxuICogVGhlIHZhcmlhYmxlIG5hbWUgYXBwZWFycyBvbiBpdHMgb3duIGxpbmUsIHByZWZpeGVkIHdpdGggXCJ2YXIuXCIgKG9wdGlvbmFsbHlcbiAqIGluZGVudGVkKS4gV2UgbWF0Y2ggdGhpcyBwcmVjaXNlbHkgc28gd2UgZG9uJ3QgbWlzdGFrZSB0ZXJyYWZvcm0gZXJyb3Igb3V0cHV0XG4gKiB0aGF0IG1lcmVseSByZWZlcmVuY2VzIGEgdmFyaWFibGUgKGUuZy4gXCI5MjogICBtaXJyb3IgPSB2YXIubWlycm9yXCIgZnJvbSBhblxuICogXCJVbnN1cHBvcnRlZCBhcmd1bWVudFwiIGVycm9yKSBmb3IgYW4gYWN0dWFsIHByb21wdC4gVGVycmFmb3JtIHZhcmlhYmxlIG5hbWVzXG4gKiBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUgYW5kIG1heSBjb250YWluIGxldHRlcnMsIGRpZ2l0cyxcbiAqIHVuZGVyc2NvcmVzIGFuZCBkYXNoZXMuICgjMjY1KVxuICovXG5jb25zdCBWQVJJQUJMRV9QUk9NUFRfUkVHRVggPSAvXlxccyp2YXJcXC4oW0EtWmEtel9dW0EtWmEtejAtOV8tXSopXFxzKiQvO1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgbGluZSBpbiB0aGUgZ2l2ZW4gKEFOU0ktc3RyaXBwZWQpIG91dHB1dCBpcyB0ZXJyYWZvcm0nc1xuICogaW50ZXJhY3RpdmUgcHJvbXB0IGZvciBhIG1pc3NpbmcgdmFyaWFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01pc3NpbmdWYXJpYWJsZVByb21wdChub0NvbG9yTGluZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBub0NvbG9yTGluZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5zb21lKChsaW5lKSA9PiBWQVJJQUJMRV9QUk9NUFRfUkVHRVgudGVzdChsaW5lKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VmFyaWFibGVOYW1lRnJvbVByb21wdChsaW5lOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm9Db2xvckxpbmUgPSBzdHJpcEFuc2kobGluZSk7XG4gIGNvbnN0IGxpbmVzID0gbm9Db2xvckxpbmUuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IG1hdGNoID0gbGluZXNcbiAgICAubWFwKChsKSA9PiBsLm1hdGNoKFZBUklBQkxFX1BST01QVF9SRUdFWCkpXG4gICAgLmZpbmQoKG0pOiBtIGlzIFJlZ0V4cE1hdGNoQXJyYXkgPT4gbSAhPT0gbnVsbCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICBgQ291bGQgbm90IGZpbmQgdmFyaWFibGUgbmFtZSBpbiBwcm9tcHQ6ICR7bGluZX0uIFRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gY2RrdG4uIFBsZWFzZSByZXBvcnQgaXQgYXQgaHR0cDovL2Nka3RuLmlvL2lzc3Vlc2AsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbWF0Y2hbMV07XG59XG5cbmludGVyZmFjZSBCdWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24ge1xuICAob3V0cHV0OiBzdHJpbmcpOiB2b2lkO1xuICAvKipcbiAgICogdXNlZCB0byBnZXQgdGhlIGxhc3QgYnVmZmVyIHdoZW4gdGhlIFBUWSBleGl0cyB0byBsb2cgYSBkZWJ1ZyBtZXNzYWdlIGlmIHRoZXJlJ3Mgb3V0cHV0IGxlZnQgaW4gdGhlcmVcbiAgICogKG1pZ2h0IGhlbHAgZGVidWdnaW5nIG9uIFdpbmRvd3MgaWYgRU9MIGZyb20gTm9kZWpzIGRvZXNuJ3Qgd29yayBpbiBXU0wpXG4gICAqL1xuICBnZXRCdWZmZXI6ICgpID0+IHN0cmluZztcbn1cblxuLy8gdXNlZCB0byBvbmx5IHNlbmQgY29tcGxldGVkIGxpbmVzICg9IHdpdGggYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlbSkgdG8gb3VyIGxvZ2ljICgjMjgyNylcbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJVbnRlcm1pbmF0ZWRMaW5lcyhcbiAgaGFuZGxlcjogKG91dHB1dDogc3RyaW5nKSA9PiB2b2lkLFxuKTogQnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uIHtcbiAgbGV0IGJ1ZmZlciA9IFwiXCI7XG4gIGZ1bmN0aW9uIGJ1ZmZlcmVkUmVjZWl2ZXJGdW5jdGlvbihvdXRwdXQ6IHN0cmluZykge1xuICAgIGJ1ZmZlciArPSBvdXRwdXQ7XG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoL1tcXG5cXHJdKy8pO1xuXG4gICAgLy8gaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggXFxuIHRoaXMgd2lsbCBiZSBhbiBlbXB0eSBzdHJpbmdcbiAgICAvLyBlbHNlIGl0IHdpbGwgY29udGFpbiBhbiBcInVuZmluaXNoZWRcIiBsaW5lXG4gICAgLy8gdGhlIGZhbGxiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyBpcyB0byBtYWtlIFRTIGhhcHB5IGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgXCJcIjtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPiAwKSBoYW5kbGVyKGxpbmVzLmpvaW4oRU9MKSArIEVPTCk7XG4gIH1cbiAgYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uLmdldEJ1ZmZlciA9ICgpID0+IGJ1ZmZlcjtcblxuICByZXR1cm4gYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGluZVJlY2VpdmVkKHNlbmQ6IChldmVudDogRGVwbG95RXZlbnQpID0+IHZvaWQpIHtcbiAgcmV0dXJuIChvdXRwdXQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBoaWRlT3V0cHV0ID0gZmFsc2U7XG4gICAgY29uc3Qgbm9Db2xvckxpbmUgPSBzdHJpcEFuc2kob3V0cHV0KTtcblxuICAgIC8vIHBvc3NpYmxlIGV2ZW50cyBiYXNlZCBvbiBsaW5lXG4gICAgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiYXBwcm92ZWQgdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiQVBQUk9WRURfRVhURVJOQUxMWVwiIH0pO1xuICAgIH0gZWxzZSBpZiAobm9Db2xvckxpbmUuaW5jbHVkZXMoXCJkaXNjYXJkZWQgdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiUkVKRUNURURfRVhURVJOQUxMWVwiIH0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcIkRvIHlvdSB3YW50IHRvIHBlcmZvcm0gdGhlc2UgYWN0aW9uc1wiKSB8fFxuICAgICAgbm9Db2xvckxpbmUuaW5jbHVkZXMoXCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVzdHJveSBhbGwgcmVzb3VyY2VzP1wiKSB8fFxuICAgICAgbm9Db2xvckxpbmUuaW5jbHVkZXMoXG4gICAgICAgIFwiRG8geW91IHJlYWxseSB3YW50IHRvIGRlc3Ryb3kgYWxsIHJlc291cmNlcyBpbiB3b3Jrc3BhY2VcIixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGhpZGVPdXRwdXQgPSB0cnVlO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiT1VUUFVUX1JFQ0VJVkVEXCIsIG91dHB1dCB9KTtcbiAgICAgIHNlbmQoeyB0eXBlOiBcIlJFUVVFU1RfQVBQUk9WQUxcIiB9KTtcbiAgICB9IGVsc2UgaWYgKGlzTWlzc2luZ1ZhcmlhYmxlUHJvbXB0KG5vQ29sb3JMaW5lKSkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGV4dHJhY3RWYXJpYWJsZU5hbWVGcm9tUHJvbXB0KG91dHB1dCk7XG4gICAgICBzZW5kKHtcbiAgICAgICAgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIixcbiAgICAgICAgb3V0cHV0OiBtaXNzaW5nVmFyaWFibGUodmFyaWFibGVOYW1lKSxcbiAgICAgIH0pO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiVkFSSUFCTEVfTUlTU0lOR1wiLCB2YXJpYWJsZU5hbWUgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcIkVudGVyIGEgdmFsdWU6XCIpKSB7XG4gICAgICAvLyBUaGlzIGNvbWVzIGFsb25nIHdpdGggYWJvdmUgYmxvY2ssIGJ1dCBpcyBhIHNlcGFyYXRlIGxpbmVcbiAgICAgIGhpZGVPdXRwdXQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgc29mdCBmYWlsZWQgcG9saWN5IGNoZWNrP1wiLFxuICAgICAgKVxuICAgICkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIiwgb3V0cHV0IH0pO1xuXG4gICAgICBzZW5kKHsgdHlwZTogXCJSRVFVRVNUX1NFTlRJTkVMX09WRVJSSURFXCIgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcIm92ZXJyaWRkZW4gdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiT1ZFUlJJRERFTl9FWFRFUk5BTExZXCIgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFoaWRlT3V0cHV0KSB7XG4gICAgICBzZW5kKHtcbiAgICAgICAgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIixcbiAgICAgICAgb3V0cHV0LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIElucHV0IHBhc3NlZCB0byB0aGUgaW52b2tlZCBwdHkgYWN0b3IsIGNhcnJ5aW5nIHRoZSBzcGF3biBjb25maWcgZnJvbSB0aGUgU1RBUlQgZXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHR5QWN0b3JJbnB1dCB7XG4gIHB0eTogSW50ZXJhY3RpdmVTcGF3bkNvbmZpZztcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGludm9rZWQgYWN0b3IgdGhhdCBydW5zIHRlcnJhZm9ybSBpbiBhIHB0eS4gSXQgcmVsYXlzIGNvbXBsZXRlZCBsaW5lcyBiYWNrIHRvIHRoZSBwYXJlbnQgbWFjaGluZSB2aWFcbiAqIGBzZW5kQmFja2AgYW5kIGZvcndhcmRzIFNFTkRfTElORSBldmVudHMgZnJvbSB0aGUgcGFyZW50IHRvIHRoZSBwdHkgdmlhIGByZWNlaXZlYC4gVGhlIGBzcGF3bmAgZnVuY3Rpb24gaXMgYVxuICogcGFyYW1ldGVyIHNvIHRlc3RzIGNhbiBpbmplY3QgYSBtb2NrIHB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VUZXJyYWZvcm1QdHlTZXJ2aWNlKHNwYXduID0gc3Bhd25JbnRlcmFjdGl2ZSkge1xuICByZXR1cm4gZnJvbUNhbGxiYWNrPERlcGxveUV2ZW50LCBQdHlBY3RvcklucHV0PihcbiAgICAoeyBzZW5kQmFjaywgcmVjZWl2ZSwgaW5wdXQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBwdHkgfSA9IGlucHV0O1xuXG4gICAgICAvLyBDb21tdW5pY2F0aW9uIGZyb20gdGhlIHB0eSB0byB0aGUgY2FsbGVyXG4gICAgICBjb25zdCByZWNlaXZlciA9IGJ1ZmZlclVudGVybWluYXRlZExpbmVzKGhhbmRsZUxpbmVSZWNlaXZlZChzZW5kQmFjaykpO1xuICAgICAgY29uc3QgeyBleGl0Q29kZSwgYWN0aW9ucyB9ID0gc3Bhd24ocHR5LCAoZGF0YSkgPT4ge1xuICAgICAgICByZWNlaXZlcihkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDb21tdW5pY2F0aW9uIGZyb20gdGhlIGNhbGxlciB0byB0aGUgcHR5XG4gICAgICByZWNlaXZlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJTRU5EX0xJTkVcIikge1xuICAgICAgICAgIGFjdGlvbnMud3JpdGVMaW5lKGV2ZW50LmlucHV0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGV4aXRDb2RlLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RCdWZmZXIgPSByZWNlaXZlci5nZXRCdWZmZXIoKTtcbiAgICAgICAgaWYgKGxhc3RCdWZmZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBUZXJyYWZvcm0gQ0xJIGV4aXRlZCBidXQgdGhlIGxhc3Qgb3V0cHV0dGVkIGxpbmUgd2FzIG5vdCB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lIGFuZCBoZW5jZSBpcyBzdGlsbCBpbiB0aGUgYnVmZmVyIGFuZCB3YXNuJ3QgcHJpbnRlZDogXCIke2xhc3RCdWZmZXJ9XCJgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBzZW5kQmFjayh7IHR5cGU6IFwiRVhJVEVEXCIsIGV4aXRDb2RlIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGxvZ2dlci50cmFjZShcIlRlcnJhZm9ybSBDTEkgc3RhdGUgbWFjaGluZTogY2xlYW5pbmcgdXAgcHR5XCIpO1xuICAgICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IHRlcnJhZm9ybVB0eVNlcnZpY2UgPSBtYWtlVGVycmFmb3JtUHR5U2VydmljZSgpO1xuXG5leHBvcnQgY29uc3QgZGVwbG95TWFjaGluZSA9IHNldHVwKHtcbiAgdHlwZXM6IHtcbiAgICBjb250ZXh0OiB7fSBhcyBEZXBsb3lDb250ZXh0LFxuICAgIGV2ZW50czoge30gYXMgRGVwbG95RXZlbnQsXG4gICAgb3V0cHV0OiB7fSBhcyB7IGV4aXRDb2RlPzogbnVtYmVyIH0sXG4gIH0sXG4gIGFjdG9yczoge1xuICAgIHJ1blRlcnJhZm9ybUluUHR5OiB0ZXJyYWZvcm1QdHlTZXJ2aWNlLFxuICB9LFxufSkuY3JlYXRlTWFjaGluZSh7XG4gIGNvbnRleHQ6IHt9LFxuICBpbml0aWFsOiBcImlkbGVcIixcbiAgaWQ6IFwicm9vdFwiLFxuICBzdGF0ZXM6IHtcbiAgICBpZGxlOiB7XG4gICAgICBvbjoge1xuICAgICAgICBTVEFSVDogeyB0YXJnZXQ6IFwicnVubmluZ1wiIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcnVubmluZzoge1xuICAgICAgaW52b2tlOiB7XG4gICAgICAgIGlkOiBcInB0eVwiLFxuICAgICAgICBzcmM6IFwicnVuVGVycmFmb3JtSW5QdHlcIixcbiAgICAgICAgaW5wdXQ6ICh7IGV2ZW50IH0pID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSAhPT0gXCJTVEFSVFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICAgICAgICAgIGBUZXJyYWZvcm0gQ0xJIGludm9jYXRpb24gc3RhdGUgbWFjaGluZTogVW5leHBlY3RlZCBldmVudCBjYXVzZWQgdHJhbnNpdGlvbiB0byB0aGUgcnVubmluZyBzdGF0ZTogJHtldmVudC50eXBlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBwdHk6IGV2ZW50LnB0eSB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIEVYSVRFRDoge1xuICAgICAgICAgIHRhcmdldDogXCJleGl0ZWRcIixcbiAgICAgICAgICBhY3Rpb25zOiBhc3NpZ24oKHsgZXZlbnQgfSkgPT4gKHsgZXhpdENvZGU6IGV2ZW50LmV4aXRDb2RlIH0pKSxcbiAgICAgICAgfSxcbiAgICAgICAgU1RPUDogXCIuc3RvcHBpbmdcIiwgLy8gd2FpdCBmb3IgdGVycmFmb3JtIHRvIGV4aXQsIGRvbid0IHN0b3AgaW1tZWRpYXRlbHkgKHNlZSB0aGUgXCJzdG9wcGluZ1wiIHN0YXRlKVxuICAgICAgfSxcbiAgICAgIGluaXRpYWw6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgc3RhdGVzOiB7XG4gICAgICAgIC8vIFRPRE86IHdoYXQgZWxzZSBtaWdodCBURiBDTEkgYmUgYXNraW5nPyBDYW4gd2UgZGV0ZWN0IGFueSBxdWVzdGlvbiBmcm9tIHRoZSBURiBDTEkgdG8gc2hvdyBhIGdvb2QgZXJyb3I/XG4gICAgICAgIHByb2Nlc3Npbmc6IHtcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgUkVRVUVTVF9BUFBST1ZBTDogXCJhd2FpdGluZ19hcHByb3ZhbFwiLFxuICAgICAgICAgICAgUkVRVUVTVF9TRU5USU5FTF9PVkVSUklERTogXCJhd2FpdGluZ19zZW50aW5lbF9vdmVycmlkZVwiLFxuICAgICAgICAgICAgVkFSSUFCTEVfTUlTU0lORzoge1xuICAgICAgICAgICAgICAvLyBTZW5kIHRvIHNlbGYgcmF0aGVyIHRoYW4gcmFpc2UoKSBzbyBjb25zdW1lcnMgb2JzZXJ2aW5nIHRoZSBhY3RvciB2aWEgaW5zcGVjdGlvbiBzdGlsbCBzZWUgdGhpcyBldmVudC5cbiAgICAgICAgICAgICAgYWN0aW9uczogc2VuZFRvKCh7IHNlbGYgfSkgPT4gc2VsZiwge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiRVhJVEVEXCIsXG4gICAgICAgICAgICAgICAgZXhpdENvZGU6IDEsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhd2FpdGluZ19hcHByb3ZhbDoge1xuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBBUFBST1ZFRF9FWFRFUk5BTExZOiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgIFJFSkVDVEVEX0VYVEVSTkFMTFk6IHtcbiAgICAgICAgICAgICAgdGFyZ2V0OiBcIiNyb290LmV4aXRlZFwiLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBhc3NpZ24oeyBjYW5jZWxsZWQ6IHRydWUgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQVBQUk9WRToge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBzZW5kVG8oXCJwdHlcIiwgeyB0eXBlOiBcIlNFTkRfTElORVwiLCBpbnB1dDogXCJ5ZXNcIiB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBSRUpFQ1Q6IHtcbiAgICAgICAgICAgICAgdGFyZ2V0OiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIHNlbmRUbyhcInB0eVwiLCB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm5vXCIgfSksXG4gICAgICAgICAgICAgICAgYXNzaWduKHsgY2FuY2VsbGVkOiB0cnVlIH0pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhd2FpdGluZ19zZW50aW5lbF9vdmVycmlkZToge1xuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBPVkVSUklEREVOX0VYVEVSTkFMTFk6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFwiI3Jvb3QuZXhpdGVkXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IGFzc2lnbih7IGNhbmNlbGxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBUaGUgZXh0ZXJuYWwgZGlzY2FyZCBtZXNzYWdlIHBvc3RlZCBieSB0aGUgVGVycmFmb3JtIFVJIGlzIHRoZSBzYW1lIGFzIGR1cmluZyBhcHBseSwgc28gd2UgY2FwdHVyZSBpdFxuICAgICAgICAgICAgLy8gYW5kIHJlLXNlbmQgYSBtb3JlIHNwZWNpZmljIGV2ZW50LiBTZW50IHRvIHNlbGYgcmF0aGVyIHRoYW4gcmFpc2UoKSBzbyBjb25zdW1lcnMgb2JzZXJ2aW5nIHRoZSBhY3RvclxuICAgICAgICAgICAgLy8gdmlhIGluc3BlY3Rpb24gc3RpbGwgc2VlIGl0LlxuICAgICAgICAgICAgUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICBhY3Rpb25zOiBzZW5kVG8oKHsgc2VsZiB9KSA9PiBzZWxmLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJPVkVSUklERV9SRUpFQ1RFRF9FWFRFUk5BTExZXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE9WRVJSSURFOiB7XG4gICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmRUbyhcInB0eVwiLCB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm92ZXJyaWRlXCIgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgUkVKRUNUX09WRVJSSURFOiB7XG4gICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBzZW5kVG8oXCJwdHlcIiwgeyB0eXBlOiBcIlNFTkRfTElORVwiLCBpbnB1dDogXCJub1wiIH0pLFxuICAgICAgICAgICAgICAgIGFzc2lnbih7IGNhbmNlbGxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gT24gU1RPUCwgd2FpdCBmb3IgdGVycmFmb3JtJ3Mgb3duIEVYSVRFRCBiZWZvcmUgcmVhY2hpbmcgdGhlIGZpbmFsIFwic3RvcHBlZFwiIHN0YXRlLCBzbyB0aGUgcnVuIG9ubHlcbiAgICAgICAgLy8gcmVzb2x2ZXMgb25jZSBpdCBoYXMgZXhpdGVkIGFuZCByZWxlYXNlZCBpdHMgbG9jay4gRG9uJ3QgcmUtc2lnbmFsIGl0IOKAlCBpdCBhbHJlYWR5IGdvdCB0aGUgaW50ZXJydXB0IHZpYVxuICAgICAgICAvLyB0aGUgcHJvY2VzcyBncm91cCwgYW5kIGEgc2Vjb25kIHNpZ25hbCBhYm9ydHMgaXRzIGdyYWNlZnVsIHNodXRkb3duLlxuICAgICAgICBzdG9wcGluZzoge1xuICAgICAgICAgIGVudHJ5OiBhc3NpZ24oeyBjYW5jZWxsZWQ6IHRydWUgfSksXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIEVYSVRFRDoge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFwiI3Jvb3Quc3RvcHBlZFwiLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBhc3NpZ24oKHsgZXZlbnQgfSkgPT4gKHsgZXhpdENvZGU6IGV2ZW50LmV4aXRDb2RlIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBleGl0ZWQ6IHsgdHlwZTogXCJmaW5hbFwiIH0sXG4gICAgc3RvcHBlZDogeyB0eXBlOiBcImZpbmFsXCIgfSxcbiAgfSxcbiAgLy8gVGhlIG1hY2hpbmUncyBvdXRwdXQgaXMgcHJvZHVjZWQgd2hlbiBpdCByZWFjaGVzIGEgdG9wLWxldmVsIGZpbmFsIHN0YXRlIChleGl0ZWQvc3RvcHBlZCksIGNhcnJ5aW5nIHRoZVxuICAvLyB0ZXJyYWZvcm0gZXhpdCBjb2RlIGNhcHR1cmVkIGludG8gY29udGV4dCBvbiB0aGUgRVhJVEVEIHRyYW5zaXRpb24uXG4gIG91dHB1dDogKHsgY29udGV4dCB9KSA9PiAoeyBleGl0Q29kZTogY29udGV4dC5leGl0Q29kZSB9KSxcbn0pO1xuXG4vKipcbiAqIEEgc25hcHNob3Qgb2YgdGhlIGRlcGxveSBtYWNoaW5lLCBjYXJyeWluZyB0aGUgY3VycmVudCBzdGF0ZSB2YWx1ZSBhbmQgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVwbG95U25hcHNob3QgPSBTbmFwc2hvdEZyb208dHlwZW9mIGRlcGxveU1hY2hpbmU+O1xuXG4vKipcbiAqIEEgcnVubmluZyBhY3RvciBmb3IgdGhlIGRlcGxveSBtYWNoaW5lLCBhcyByZXR1cm5lZCBieSB0aGUgY3JlYXRlQW5kU3RhcnQqIGZhY3Rvcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGVwbG95QWN0b3IgPSBBY3RvclJlZkZyb208dHlwZW9mIGRlcGxveU1hY2hpbmU+O1xuXG4vKipcbiAqIENhbGxiYWNrIGludm9rZWQgZm9yIGV2ZXJ5IGluc3BlY3Rpb24gZXZlbnQgb24gdGhlIGRlcGxveSBhY3Rvci4gQ29uc3VtZXJzIHVzZSBpdCB0byBvYnNlcnZlIGJvdGggdGhlIGV2ZW50c1xuICogZmxvd2luZyB0aHJvdWdoIHRoZSBtYWNoaW5lIGFuZCBlYWNoIHJlc3VsdGluZyBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVwbG95SW5zcGVjdGlvbkhhbmRsZXIgPSAoXG4gIGluc3BlY3Rpb25FdmVudDogSW5zcGVjdGlvbkV2ZW50LFxuKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlKFxuICBvcHRpb25zOiB7XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtOiBudW1iZXI7XG4gICAgZXh0cmFPcHRpb25zOiBzdHJpbmdbXTtcbiAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lOiBzdHJpbmc7XG4gICAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICAgIHdvcmtkaXI6IHN0cmluZztcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgfSxcbiAgaW5zcGVjdD86IERlcGxveUluc3BlY3Rpb25IYW5kbGVyLFxuKSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBjcmVhdGVBY3RvcihkZXBsb3lNYWNoaW5lLCB7IGluc3BlY3QgfSk7XG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgXCJhcHBseVwiLFxuICAgIC4uLihvcHRpb25zLmF1dG9BcHByb3ZlID8gW1wiLWF1dG8tYXBwcm92ZVwiXSA6IFtdKSxcbiAgICAvLyBcIi1pbnB1dD1mYWxzZVwiLCB3ZSBjYW4ndCB1c2UgdGhpcyBhbnltb3JlIGJ1dCBUT0RPOiB3ZSBuZWVkIHRvIGRldGVjdCBURiBDTEkgYXNraW5nIGZvciBtaXNzaW5nIGlucHV0cyBhbmQgZWl0aGVyIGFsbG93IHBhc3NpbmcgdGhlbSBvciBzdG9wIHRoZXJlIGFuZCBmYWlsXG5cbiAgICAuLi5vcHRpb25zLmV4dHJhT3B0aW9ucyxcbiAgICAuLi4ob3B0aW9ucy5yZWZyZXNoT25seSA/IFtcIi1yZWZyZXNoLW9ubHlcIl0gOiBbXSksXG4gICAgLi4uKG9wdGlvbnMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAuLi4ob3B0aW9ucy5wYXJhbGxlbGlzbSA+IC0xXG4gICAgICA/IFtgLXBhcmFsbGVsaXNtPSR7b3B0aW9ucy5wYXJhbGxlbGlzbX1gXVxuICAgICAgOiBbXSksXG4gIF07XG5cbiAgb3B0aW9ucy52YXJzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyPSR7dn1gKTtcbiAgfSk7XG5cbiAgb3B0aW9ucy52YXJGaWxlcz8uZm9yRWFjaCgodikgPT4ge1xuICAgIGFyZ3MucHVzaChgLXZhci1maWxlPSR7dn1gKTtcbiAgfSk7XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBFeGVjdXRpbmcgJHtvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWV9ICR7YXJncy5qb2luKFwiIFwiKX0gaW4gJHtcbiAgICAgIG9wdGlvbnMud29ya2RpclxuICAgIH1gLFxuICApO1xuXG4gIGNvbnN0IGNvbmZpZzogSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyA9IHtcbiAgICBmaWxlOiBvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgYXJncyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2Q6IG9wdGlvbnMud29ya2RpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgLy8gVE9ETzogbWFrZSB0aGlzIGV4cGxpY2l0IGFuZCBtb3ZlIHRvIGNhbGxlciBvciB3aGF0ZXZlclxuICAgIH0sXG4gIH07XG5cbiAgc2VydmljZS5zdGFydCgpO1xuICBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlNUQVJUXCIsIHB0eTogY29uZmlnIH0pO1xuXG4gIHJldHVybiBzZXJ2aWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZShcbiAgb3B0aW9uczoge1xuICAgIHBhcmFsbGVsaXNtOiBudW1iZXI7XG4gICAgZXh0cmFPcHRpb25zOiBzdHJpbmdbXTtcbiAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lOiBzdHJpbmc7XG4gICAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICAgIHdvcmtkaXI6IHN0cmluZztcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgfSxcbiAgaW5zcGVjdD86IERlcGxveUluc3BlY3Rpb25IYW5kbGVyLFxuKSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBjcmVhdGVBY3RvcihkZXBsb3lNYWNoaW5lLCB7IGluc3BlY3QgfSk7XG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICBcImRlc3Ryb3lcIixcbiAgICAuLi4ob3B0aW9ucy5hdXRvQXBwcm92ZSA/IFtcIi1hdXRvLWFwcHJvdmVcIl0gOiBbXSksXG4gICAgLy8gXCItaW5wdXQ9ZmFsc2VcIiwgd2UgY2FuJ3QgdXNlIHRoaXMgYW55bW9yZSBidXQgVE9ETzogd2UgbmVlZCB0byBkZXRlY3QgVEYgQ0xJIGFza2luZyBmb3IgbWlzc2luZyBpbnB1dHMgYW5kIGVpdGhlciBhbGxvdyBwYXNzaW5nIHRoZW0gb3Igc3RvcCB0aGVyZSBhbmQgZmFpbFxuXG4gICAgLi4ub3B0aW9ucy5leHRyYU9wdGlvbnMsXG4gICAgLi4uKG9wdGlvbnMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAuLi4ob3B0aW9ucy5wYXJhbGxlbGlzbSA+IC0xXG4gICAgICA/IFtgLXBhcmFsbGVsaXNtPSR7b3B0aW9ucy5wYXJhbGxlbGlzbX1gXVxuICAgICAgOiBbXSksXG4gIF07XG5cbiAgb3B0aW9ucy52YXJzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyPSR7dn1gKTtcbiAgfSk7XG5cbiAgb3B0aW9ucy52YXJGaWxlcz8uZm9yRWFjaCgodikgPT4ge1xuICAgIGFyZ3MucHVzaChgLXZhci1maWxlPSR7dn1gKTtcbiAgfSk7XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBFeGVjdXRpbmcgJHtvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWV9ICR7YXJncy5qb2luKFwiIFwiKX0gaW4gJHtcbiAgICAgIG9wdGlvbnMud29ya2RpclxuICAgIH1gLFxuICApO1xuXG4gIGNvbnN0IGNvbmZpZzogSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyA9IHtcbiAgICBmaWxlOiBvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgYXJncyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2Q6IG9wdGlvbnMud29ya2RpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgLy8gVE9ETzogbWFrZSB0aGlzIGV4cGxpY2l0IGFuZCBtb3ZlIHRvIGNhbGxlciBvciB3aGF0ZXZlclxuICAgIH0sXG4gIH07XG5cbiAgc2VydmljZS5zdGFydCgpO1xuICBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlNUQVJUXCIsIHB0eTogY29uZmlnIH0pO1xuXG4gIHJldHVybiBzZXJ2aWNlO1xufVxuIl19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21vZGVscy9kZXBsb3ktbWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7QUFnREgsc0NBS0M7QUFxQkQsMERBSUM7QUFFRCxzRUFZQztBQVlELDBEQWtCQztBQUVELGdEQW9EQztBQWNELDBEQW1DQztBQW1KRCxrRUF1REM7QUFFRCxvRUFzREM7QUFqZUQsbUNBVWdCO0FBQ2hCLDRDQUFnRDtBQUNoRCxzQ0FBNEM7QUFDNUMsNERBQW1DO0FBQ25DLDJCQUF5QjtBQUN6QiwrREFHK0I7QUE0Qi9CLFNBQWdCLGFBQWEsQ0FDM0IsS0FBa0IsRUFDbEIsSUFBcUI7SUFFckIsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztBQUM3QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyx3Q0FBd0MsQ0FBQztBQUV2RTs7O0dBR0c7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxXQUFtQjtJQUN6RCxPQUFPLFdBQVc7U0FDZixLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ1gsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQUMsSUFBWTtJQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxLQUFLO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQzFDLElB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QU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YsYUFBYSxPQUFPLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FDeEQsT0FBTyxDQUFDLE9BQ1YsRUFBRSxDQUNILENBQUM7SUFFRixNQUFNLE1BQU0sR0FBMkI7UUFDckMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUI7UUFDakMsSUFBSTtRQUNKLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTztZQUNwQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQWdDLEVBQUUsMERBQTBEO1NBQzFHO0tBQ0YsQ0FBQztJQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU3QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQge1xuICBzZXR1cCxcbiAgY3JlYXRlQWN0b3IsXG4gIHNlbmRUbyxcbiAgZnJvbUNhbGxiYWNrLFxuICBhc3NpZ24sXG4gIEFjdG9yUmVmRnJvbSxcbiAgRXZlbnRPYmplY3QsXG4gIEluc3BlY3Rpb25FdmVudCxcbiAgU25hcHNob3RGcm9tLFxufSBmcm9tIFwieHN0YXRlXCI7XG5pbXBvcnQgeyBFcnJvcnMsIGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgbWlzc2luZ1ZhcmlhYmxlIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tIFwic3RyaXAtYW5zaVwiO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQge1xuICBzcGF3bkludGVyYWN0aXZlLFxuICBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnLFxufSBmcm9tIFwiLi9pbnRlcmFjdGl2ZS1wcm9jZXNzXCI7XG5cbmludGVyZmFjZSBEZXBsb3lDb250ZXh0IHtcbiAgZXhpdENvZGU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUZXJyYWZvcm0gd2lsbCBleGl0IHdpdGggMSBpZiBpdCB3YXMgY2FuY2VsbGVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBmYWlsIGluIHRoYXQgY2FzZVxuICAgKi9cbiAgY2FuY2VsbGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRGVwbG95RXZlbnQgPVxuICB8IHsgdHlwZTogXCJTVEFSVFwiOyBwdHk6IEludGVyYWN0aXZlU3Bhd25Db25maWcgfVxuICB8IHsgdHlwZTogXCJTVE9QXCIgfVxuICB8IHsgdHlwZTogXCJTRU5EX0xJTkVcIjsgaW5wdXQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiOyBvdXRwdXQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIkFQUFJPVkVEX0VYVEVSTkFMTFlcIiB9IC8vIGUuZy4gdmlhIFRGQyBVSSBvciBBUElcbiAgfCB7IHR5cGU6IFwiUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJRERFTl9FWFRFUk5BTExZXCIgfVxuICB8IHsgdHlwZTogXCJPVkVSUklERV9SRUpFQ1RFRF9FWFRFUk5BTExZXCIgfVxuICB8IHsgdHlwZTogXCJPVkVSUklERVwiIH1cbiAgfCB7IHR5cGU6IFwiUkVKRUNUX09WRVJSSURFXCIgfVxuICB8IHsgdHlwZTogXCJSRVFVRVNUX0FQUFJPVkFMXCIgfVxuICB8IHsgdHlwZTogXCJWQVJJQUJMRV9NSVNTSU5HXCI7IHZhcmlhYmxlTmFtZTogc3RyaW5nIH1cbiAgfCB7IHR5cGU6IFwiUkVRVUVTVF9TRU5USU5FTF9PVkVSUklERVwiIH1cbiAgfCB7IHR5cGU6IFwiQVBQUk9WRVwiIH1cbiAgfCB7IHR5cGU6IFwiUkVKRUNUXCIgfVxuICB8IHsgdHlwZTogXCJFWElURURcIjsgZXhpdENvZGU6IG51bWJlciB9O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXBsb3lFdmVudDxEZXBsb3lFdmVudFR5cGUgZXh0ZW5kcyBEZXBsb3lFdmVudFtcInR5cGVcIl0+KFxuICBldmVudDogRXZlbnRPYmplY3QsXG4gIHR5cGU6IERlcGxveUV2ZW50VHlwZSxcbik6IGV2ZW50IGlzIERlcGxveUV2ZW50ICYgeyB0eXBlOiBEZXBsb3lFdmVudFR5cGUgfSB7XG4gIHJldHVybiBldmVudC50eXBlID09PSB0eXBlO1xufVxuXG4vKipcbiAqIFRlcnJhZm9ybSdzIGludGVyYWN0aXZlIHByb21wdCBmb3IgYSBtaXNzaW5nIHZhcmlhYmxlIGxvb2tzIGxpa2U6XG4gKlxuICogICB2YXIuPG5hbWU+XG4gKiAgICAgRW50ZXIgYSB2YWx1ZTpcbiAqXG4gKiBUaGUgdmFyaWFibGUgbmFtZSBhcHBlYXJzIG9uIGl0cyBvd24gbGluZSwgcHJlZml4ZWQgd2l0aCBcInZhci5cIiAob3B0aW9uYWxseVxuICogaW5kZW50ZWQpLiBXZSBtYXRjaCB0aGlzIHByZWNpc2VseSBzbyB3ZSBkb24ndCBtaXN0YWtlIHRlcnJhZm9ybSBlcnJvciBvdXRwdXRcbiAqIHRoYXQgbWVyZWx5IHJlZmVyZW5jZXMgYSB2YXJpYWJsZSAoZS5nLiBcIjkyOiAgIG1pcnJvciA9IHZhci5taXJyb3JcIiBmcm9tIGFuXG4gKiBcIlVuc3VwcG9ydGVkIGFyZ3VtZW50XCIgZXJyb3IpIGZvciBhbiBhY3R1YWwgcHJvbXB0LiBUZXJyYWZvcm0gdmFyaWFibGUgbmFtZXNcbiAqIHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSBhbmQgbWF5IGNvbnRhaW4gbGV0dGVycywgZGlnaXRzLFxuICogdW5kZXJzY29yZXMgYW5kIGRhc2hlcy4gKCMyNjUpXG4gKi9cbmNvbnN0IFZBUklBQkxFX1BST01QVF9SRUdFWCA9IC9eXFxzKnZhclxcLihbQS1aYS16X11bQS1aYS16MC05Xy1dKilcXHMqJC87XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGFueSBsaW5lIGluIHRoZSBnaXZlbiAoQU5TSS1zdHJpcHBlZCkgb3V0cHV0IGlzIHRlcnJhZm9ybSdzXG4gKiBpbnRlcmFjdGl2ZSBwcm9tcHQgZm9yIGEgbWlzc2luZyB2YXJpYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWlzc2luZ1ZhcmlhYmxlUHJvbXB0KG5vQ29sb3JMaW5lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5vQ29sb3JMaW5lXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLnNvbWUoKGxpbmUpID0+IFZBUklBQkxFX1BST01QVF9SRUdFWC50ZXN0KGxpbmUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RWYXJpYWJsZU5hbWVGcm9tUHJvbXB0KGxpbmU6IHN0cmluZykge1xuICBjb25zdCBub0NvbG9yTGluZSA9IHN0cmlwQW5zaShsaW5lKTtcbiAgY29uc3QgbGluZXMgPSBub0NvbG9yTGluZS5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgbWF0Y2ggPSBsaW5lc1xuICAgIC5tYXAoKGwpID0+IGwubWF0Y2goVkFSSUFCTEVfUFJPTVBUX1JFR0VYKSlcbiAgICAuZmluZCgobSk6IG0gaXMgUmVnRXhwTWF0Y2hBcnJheSA9PiBtICE9PSBudWxsKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgIGBDb3VsZCBub3QgZmluZCB2YXJpYWJsZSBuYW1lIGluIHByb21wdDogJHtsaW5lfS4gVGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiBjZGt0bi4gUGxlYXNlIHJlcG9ydCBpdCBhdCBodHRwOi8vY2RrdG4uaW8vaXNzdWVzYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBtYXRjaFsxXTtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlcmVkUmVjZWl2ZXJGdW5jdGlvbiB7XG4gIChvdXRwdXQ6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKlxuICAgKiB1c2VkIHRvIGdldCB0aGUgbGFzdCBidWZmZXIgd2hlbiB0aGUgUFRZIGV4aXRzIHRvIGxvZyBhIGRlYnVnIG1lc3NhZ2UgaWYgdGhlcmUncyBvdXRwdXQgbGVmdCBpbiB0aGVyZVxuICAgKiAobWlnaHQgaGVscCBkZWJ1Z2dpbmcgb24gV2luZG93cyBpZiBFT0wgZnJvbSBOb2RlanMgZG9lc24ndCB3b3JrIGluIFdTTClcbiAgICovXG4gIGdldEJ1ZmZlcjogKCkgPT4gc3RyaW5nO1xufVxuXG4vLyB1c2VkIHRvIG9ubHkgc2VuZCBjb21wbGV0ZWQgbGluZXMgKD0gd2l0aCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGVtKSB0byBvdXIgbG9naWMgKCMyODI3KVxuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclVudGVybWluYXRlZExpbmVzKFxuICBoYW5kbGVyOiAob3V0cHV0OiBzdHJpbmcpID0+IHZvaWQsXG4pOiBCdWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24ge1xuICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgZnVuY3Rpb24gYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uKG91dHB1dDogc3RyaW5nKSB7XG4gICAgYnVmZmVyICs9IG91dHB1dDtcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgvW1xcblxccl0rLyk7XG5cbiAgICAvLyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBcXG4gdGhpcyB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZ1xuICAgIC8vIGVsc2UgaXQgd2lsbCBjb250YWluIGFuIFwidW5maW5pc2hlZFwiIGxpbmVcbiAgICAvLyB0aGUgZmFsbGJhY2sgdG8gYW4gZW1wdHkgc3RyaW5nIGlzIHRvIG1ha2UgVFMgaGFwcHkgYW5kIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCBcIlwiO1xuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDApIGhhbmRsZXIobGluZXMuam9pbihFT0wpICsgRU9MKTtcbiAgfVxuICBidWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24uZ2V0QnVmZmVyID0gKCkgPT4gYnVmZmVyO1xuXG4gIHJldHVybiBidWZmZXJlZFJlY2VpdmVyRnVuY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVMaW5lUmVjZWl2ZWQoc2VuZDogKGV2ZW50OiBEZXBsb3lFdmVudCkgPT4gdm9pZCkge1xuICByZXR1cm4gKG91dHB1dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGhpZGVPdXRwdXQgPSBmYWxzZTtcbiAgICBjb25zdCBub0NvbG9yTGluZSA9IHN0cmlwQW5zaShvdXRwdXQpO1xuXG4gICAgLy8gcG9zc2libGUgZXZlbnRzIGJhc2VkIG9uIGxpbmVcbiAgICBpZiAobm9Db2xvckxpbmUuaW5jbHVkZXMoXCJhcHByb3ZlZCB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcImRpc2NhcmRlZCB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJSRUpFQ1RFRF9FWFRFUk5BTExZXCIgfSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiRG8geW91IHdhbnQgdG8gcGVyZm9ybSB0aGVzZSBhY3Rpb25zXCIpIHx8XG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZXN0cm95IGFsbCByZXNvdXJjZXM/XCIpIHx8XG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcbiAgICAgICAgXCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVzdHJveSBhbGwgcmVzb3VyY2VzIGluIHdvcmtzcGFjZVwiLFxuICAgICAgKVxuICAgICkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIiwgb3V0cHV0IH0pO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiUkVRVUVTVF9BUFBST1ZBTFwiIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNNaXNzaW5nVmFyaWFibGVQcm9tcHQobm9Db2xvckxpbmUpKSB7XG4gICAgICBoaWRlT3V0cHV0ID0gdHJ1ZTtcblxuICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gZXh0cmFjdFZhcmlhYmxlTmFtZUZyb21Qcm9tcHQob3V0cHV0KTtcbiAgICAgIHNlbmQoe1xuICAgICAgICB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLFxuICAgICAgICBvdXRwdXQ6IG1pc3NpbmdWYXJpYWJsZSh2YXJpYWJsZU5hbWUpLFxuICAgICAgfSk7XG4gICAgICBzZW5kKHsgdHlwZTogXCJWQVJJQUJMRV9NSVNTSU5HXCIsIHZhcmlhYmxlTmFtZSB9KTtcbiAgICB9IGVsc2UgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiRW50ZXIgYSB2YWx1ZTpcIikpIHtcbiAgICAgIC8vIFRoaXMgY29tZXMgYWxvbmcgd2l0aCBhYm92ZSBibG9jaywgYnV0IGlzIGEgc2VwYXJhdGUgbGluZVxuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG5vQ29sb3JMaW5lLmluY2x1ZGVzKFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBzb2Z0IGZhaWxlZCBwb2xpY3kgY2hlY2s/XCIsXG4gICAgICApXG4gICAgKSB7XG4gICAgICBoaWRlT3V0cHV0ID0gdHJ1ZTtcbiAgICAgIHNlbmQoeyB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLCBvdXRwdXQgfSk7XG5cbiAgICAgIHNlbmQoeyB0eXBlOiBcIlJFUVVFU1RfU0VOVElORUxfT1ZFUlJJREVcIiB9KTtcbiAgICB9IGVsc2UgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwib3ZlcnJpZGRlbiB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVkVSUklEREVOX0VYVEVSTkFMTFlcIiB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhpZGVPdXRwdXQpIHtcbiAgICAgIHNlbmQoe1xuICAgICAgICB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLFxuICAgICAgICBvdXRwdXQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogSW5wdXQgcGFzc2VkIHRvIHRoZSBpbnZva2VkIHB0eSBhY3RvciwgY2FycnlpbmcgdGhlIHNwYXduIGNvbmZpZyBmcm9tIHRoZSBTVEFSVCBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdHlBY3RvcklucHV0IHtcbiAgcHR5OiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgaW52b2tlZCBhY3RvciB0aGF0IHJ1bnMgdGVycmFmb3JtIGluIGEgcHR5LiBJdCByZWxheXMgY29tcGxldGVkIGxpbmVzIGJhY2sgdG8gdGhlIHBhcmVudCBtYWNoaW5lIHZpYVxuICogYHNlbmRCYWNrYCBhbmQgZm9yd2FyZHMgU0VORF9MSU5FIGV2ZW50cyBmcm9tIHRoZSBwYXJlbnQgdG8gdGhlIHB0eSB2aWEgYHJlY2VpdmVgLiBUaGUgYHNwYXduYCBmdW5jdGlvbiBpcyBhXG4gKiBwYXJhbWV0ZXIgc28gdGVzdHMgY2FuIGluamVjdCBhIG1vY2sgcHR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVRlcnJhZm9ybVB0eVNlcnZpY2Uoc3Bhd24gPSBzcGF3bkludGVyYWN0aXZlKSB7XG4gIHJldHVybiBmcm9tQ2FsbGJhY2s8RGVwbG95RXZlbnQsIFB0eUFjdG9ySW5wdXQ+KFxuICAgICh7IHNlbmRCYWNrLCByZWNlaXZlLCBpbnB1dCB9KSA9PiB7XG4gICAgICBjb25zdCB7IHB0eSB9ID0gaW5wdXQ7XG5cbiAgICAgIC8vIENvbW11bmljYXRpb24gZnJvbSB0aGUgcHR5IHRvIHRoZSBjYWxsZXJcbiAgICAgIGNvbnN0IHJlY2VpdmVyID0gYnVmZmVyVW50ZXJtaW5hdGVkTGluZXMoaGFuZGxlTGluZVJlY2VpdmVkKHNlbmRCYWNrKSk7XG4gICAgICBjb25zdCB7IGV4aXRDb2RlLCBhY3Rpb25zIH0gPSBzcGF3bihwdHksIChkYXRhKSA9PiB7XG4gICAgICAgIHJlY2VpdmVyKGRhdGEpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIENvbW11bmljYXRpb24gZnJvbSB0aGUgY2FsbGVyIHRvIHRoZSBwdHlcbiAgICAgIHJlY2VpdmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBcIlNFTkRfTElORVwiKSB7XG4gICAgICAgICAgYWN0aW9ucy53cml0ZUxpbmUoZXZlbnQuaW5wdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZXhpdENvZGUudGhlbigoZXhpdENvZGUpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEJ1ZmZlciA9IHJlY2VpdmVyLmdldEJ1ZmZlcigpO1xuICAgICAgICBpZiAobGFzdEJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFRlcnJhZm9ybSBDTEkgZXhpdGVkIGJ1dCB0aGUgbGFzdCBvdXRwdXR0ZWQgbGluZSB3YXMgbm90IHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUgYW5kIGhlbmNlIGlzIHN0aWxsIGluIHRoZSBidWZmZXIgYW5kIHdhc24ndCBwcmludGVkOiBcIiR7bGFzdEJ1ZmZlcn1cImAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbmRCYWNrKHsgdHlwZTogXCJFWElURURcIiwgZXhpdENvZGUgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgbG9nZ2VyLnRyYWNlKFwiVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lOiBjbGVhbmluZyB1cCBwdHlcIik7XG4gICAgICAgIGFjdGlvbnMuc3RvcCgpO1xuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuXG5leHBvcnQgY29uc3QgdGVycmFmb3JtUHR5U2VydmljZSA9IG1ha2VUZXJyYWZvcm1QdHlTZXJ2aWNlKCk7XG5cbmV4cG9ydCBjb25zdCBkZXBsb3lNYWNoaW5lID0gc2V0dXAoe1xuICB0eXBlczoge1xuICAgIGNvbnRleHQ6IHt9IGFzIERlcGxveUNvbnRleHQsXG4gICAgZXZlbnRzOiB7fSBhcyBEZXBsb3lFdmVudCxcbiAgICBvdXRwdXQ6IHt9IGFzIHsgZXhpdENvZGU/OiBudW1iZXIgfSxcbiAgfSxcbiAgYWN0b3JzOiB7XG4gICAgcnVuVGVycmFmb3JtSW5QdHk6IHRlcnJhZm9ybVB0eVNlcnZpY2UsXG4gIH0sXG59KS5jcmVhdGVNYWNoaW5lKHtcbiAgY29udGV4dDoge30sXG4gIGluaXRpYWw6IFwiaWRsZVwiLFxuICBpZDogXCJyb290XCIsXG4gIHN0YXRlczoge1xuICAgIGlkbGU6IHtcbiAgICAgIG9uOiB7XG4gICAgICAgIFNUQVJUOiB7IHRhcmdldDogXCJydW5uaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBydW5uaW5nOiB7XG4gICAgICBpbnZva2U6IHtcbiAgICAgICAgaWQ6IFwicHR5XCIsXG4gICAgICAgIHNyYzogXCJydW5UZXJyYWZvcm1JblB0eVwiLFxuICAgICAgICBpbnB1dDogKHsgZXZlbnQgfSkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlICE9PSBcIlNUQVJUXCIpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgICAgICAgYFRlcnJhZm9ybSBDTEkgaW52b2NhdGlvbiBzdGF0ZSBtYWNoaW5lOiBVbmV4cGVjdGVkIGV2ZW50IGNhdXNlZCB0cmFuc2l0aW9uIHRvIHRoZSBydW5uaW5nIHN0YXRlOiAke2V2ZW50LnR5cGV9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IHB0eTogZXZlbnQucHR5IH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgRVhJVEVEOiB7XG4gICAgICAgICAgdGFyZ2V0OiBcImV4aXRlZFwiLFxuICAgICAgICAgIGFjdGlvbnM6IGFzc2lnbigoeyBldmVudCB9KSA9PiAoeyBleGl0Q29kZTogZXZlbnQuZXhpdENvZGUgfSkpLFxuICAgICAgICB9LFxuICAgICAgICBTVE9QOiBcIi5zdG9wcGluZ1wiLCAvLyB3YWl0IGZvciB0ZXJyYWZvcm0gdG8gZXhpdCwgZG9uJ3Qgc3RvcCBpbW1lZGlhdGVseSAoc2VlIHRoZSBcInN0b3BwaW5nXCIgc3RhdGUpXG4gICAgICB9LFxuICAgICAgaW5pdGlhbDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICBzdGF0ZXM6IHtcbiAgICAgICAgLy8gVE9ETzogd2hhdCBlbHNlIG1pZ2h0IFRGIENMSSBiZSBhc2tpbmc/IENhbiB3ZSBkZXRlY3QgYW55IHF1ZXN0aW9uIGZyb20gdGhlIFRGIENMSSB0byBzaG93IGEgZ29vZCBlcnJvcj9cbiAgICAgICAgcHJvY2Vzc2luZzoge1xuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBSRVFVRVNUX0FQUFJPVkFMOiBcImF3YWl0aW5nX2FwcHJvdmFsXCIsXG4gICAgICAgICAgICBSRVFVRVNUX1NFTlRJTkVMX09WRVJSSURFOiBcImF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlXCIsXG4gICAgICAgICAgICBWQVJJQUJMRV9NSVNTSU5HOiB7XG4gICAgICAgICAgICAgIC8vIFNlbmQgdG8gc2VsZiByYXRoZXIgdGhhbiByYWlzZSgpIHNvIGNvbnN1bWVycyBvYnNlcnZpbmcgdGhlIGFjdG9yIHZpYSBpbnNwZWN0aW9uIHN0aWxsIHNlZSB0aGlzIGV2ZW50LlxuICAgICAgICAgICAgICBhY3Rpb25zOiBzZW5kVG8oKHsgc2VsZiB9KSA9PiBzZWxmLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJFWElURURcIixcbiAgICAgICAgICAgICAgICBleGl0Q29kZTogMSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGF3YWl0aW5nX2FwcHJvdmFsOiB7XG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIEFQUFJPVkVEX0VYVEVSTkFMTFk6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFwiI3Jvb3QuZXhpdGVkXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IGFzc2lnbih7IGNhbmNlbGxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBBUFBST1ZFOiB7XG4gICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmRUbyhcInB0eVwiLCB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcInllc1wiIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFJFSkVDVDoge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgc2VuZFRvKFwicHR5XCIsIHsgdHlwZTogXCJTRU5EX0xJTkVcIiwgaW5wdXQ6IFwibm9cIiB9KSxcbiAgICAgICAgICAgICAgICBhc3NpZ24oeyBjYW5jZWxsZWQ6IHRydWUgfSksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlOiB7XG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIE9WRVJSSURERU5fRVhURVJOQUxMWTogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICBPVkVSUklERV9SRUpFQ1RFRF9FWFRFUk5BTExZOiB7XG4gICAgICAgICAgICAgIHRhcmdldDogXCIjcm9vdC5leGl0ZWRcIixcbiAgICAgICAgICAgICAgYWN0aW9uczogYXNzaWduKHsgY2FuY2VsbGVkOiB0cnVlIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFRoZSBleHRlcm5hbCBkaXNjYXJkIG1lc3NhZ2UgcG9zdGVkIGJ5IHRoZSBUZXJyYWZvcm0gVUkgaXMgdGhlIHNhbWUgYXMgZHVyaW5nIGFwcGx5LCBzbyB3ZSBjYXB0dXJlIGl0XG4gICAgICAgICAgICAvLyBhbmQgcmUtc2VuZCBhIG1vcmUgc3BlY2lmaWMgZXZlbnQuIFNlbnQgdG8gc2VsZiByYXRoZXIgdGhhbiByYWlzZSgpIHNvIGNvbnN1bWVycyBvYnNlcnZpbmcgdGhlIGFjdG9yXG4gICAgICAgICAgICAvLyB2aWEgaW5zcGVjdGlvbiBzdGlsbCBzZWUgaXQuXG4gICAgICAgICAgICBSRUpFQ1RFRF9FWFRFUk5BTExZOiB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmRUbygoeyBzZWxmIH0pID0+IHNlbGYsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIk9WRVJSSURFX1JFSkVDVEVEX0VYVEVSTkFMTFlcIixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgT1ZFUlJJREU6IHtcbiAgICAgICAgICAgICAgdGFyZ2V0OiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgYWN0aW9uczogc2VuZFRvKFwicHR5XCIsIHsgdHlwZTogXCJTRU5EX0xJTkVcIiwgaW5wdXQ6IFwib3ZlcnJpZGVcIiB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBSRUpFQ1RfT1ZFUlJJREU6IHtcbiAgICAgICAgICAgICAgdGFyZ2V0OiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIHNlbmRUbyhcInB0eVwiLCB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm5vXCIgfSksXG4gICAgICAgICAgICAgICAgYXNzaWduKHsgY2FuY2VsbGVkOiB0cnVlIH0pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBPbiBTVE9QLCB3YWl0IGZvciB0ZXJyYWZvcm0ncyBvd24gRVhJVEVEIGJlZm9yZSByZWFjaGluZyB0aGUgZmluYWwgXCJzdG9wcGVkXCIgc3RhdGUsIHNvIHRoZSBydW4gb25seVxuICAgICAgICAvLyByZXNvbHZlcyBvbmNlIGl0IGhhcyBleGl0ZWQgYW5kIHJlbGVhc2VkIGl0cyBsb2NrLiBEb24ndCByZS1zaWduYWwgaXQg4oCUIGl0IGFscmVhZHkgZ290IHRoZSBpbnRlcnJ1cHQgdmlhXG4gICAgICAgIC8vIHRoZSBwcm9jZXNzIGdyb3VwLCBhbmQgYSBzZWNvbmQgc2lnbmFsIGFib3J0cyBpdHMgZ3JhY2VmdWwgc2h1dGRvd24uXG4gICAgICAgIHN0b3BwaW5nOiB7XG4gICAgICAgICAgZW50cnk6IGFzc2lnbih7IGNhbmNlbGxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgRVhJVEVEOiB7XG4gICAgICAgICAgICAgIHRhcmdldDogXCIjcm9vdC5zdG9wcGVkXCIsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IGFzc2lnbigoeyBldmVudCB9KSA9PiAoeyBleGl0Q29kZTogZXZlbnQuZXhpdENvZGUgfSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGV4aXRlZDogeyB0eXBlOiBcImZpbmFsXCIgfSxcbiAgICBzdG9wcGVkOiB7IHR5cGU6IFwiZmluYWxcIiB9LFxuICB9LFxuICAvLyBUaGUgbWFjaGluZSdzIG91dHB1dCBpcyBwcm9kdWNlZCB3aGVuIGl0IHJlYWNoZXMgYSB0b3AtbGV2ZWwgZmluYWwgc3RhdGUgKGV4aXRlZC9zdG9wcGVkKSwgY2FycnlpbmcgdGhlXG4gIC8vIHRlcnJhZm9ybSBleGl0IGNvZGUgY2FwdHVyZWQgaW50byBjb250ZXh0IG9uIHRoZSBFWElURUQgdHJhbnNpdGlvbi5cbiAgb3V0cHV0OiAoeyBjb250ZXh0IH0pID0+ICh7IGV4aXRDb2RlOiBjb250ZXh0LmV4aXRDb2RlIH0pLFxufSk7XG5cbi8qKlxuICogQSBzbmFwc2hvdCBvZiB0aGUgZGVwbG95IG1hY2hpbmUsIGNhcnJ5aW5nIHRoZSBjdXJyZW50IHN0YXRlIHZhbHVlIGFuZCBjb250ZXh0LlxuICovXG5leHBvcnQgdHlwZSBEZXBsb3lTbmFwc2hvdCA9IFNuYXBzaG90RnJvbTx0eXBlb2YgZGVwbG95TWFjaGluZT47XG5cbi8qKlxuICogQSBydW5uaW5nIGFjdG9yIGZvciB0aGUgZGVwbG95IG1hY2hpbmUsIGFzIHJldHVybmVkIGJ5IHRoZSBjcmVhdGVBbmRTdGFydCogZmFjdG9yaWVzLlxuICovXG5leHBvcnQgdHlwZSBEZXBsb3lBY3RvciA9IEFjdG9yUmVmRnJvbTx0eXBlb2YgZGVwbG95TWFjaGluZT47XG5cbi8qKlxuICogQ2FsbGJhY2sgaW52b2tlZCBmb3IgZXZlcnkgaW5zcGVjdGlvbiBldmVudCBvbiB0aGUgZGVwbG95IGFjdG9yLiBDb25zdW1lcnMgdXNlIGl0IHRvIG9ic2VydmUgYm90aCB0aGUgZXZlbnRzXG4gKiBmbG93aW5nIHRocm91Z2ggdGhlIG1hY2hpbmUgYW5kIGVhY2ggcmVzdWx0aW5nIHNuYXBzaG90LlxuICovXG5leHBvcnQgdHlwZSBEZXBsb3lJbnNwZWN0aW9uSGFuZGxlciA9IChcbiAgaW5zcGVjdGlvbkV2ZW50OiBJbnNwZWN0aW9uRXZlbnQsXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmRTdGFydERlcGxveVNlcnZpY2UoXG4gIG9wdGlvbnM6IHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgcGFyYWxsZWxpc206IG51bWJlcjtcbiAgICBleHRyYU9wdGlvbnM6IHN0cmluZ1tdO1xuICAgIHRlcnJhZm9ybUJpbmFyeU5hbWU6IHN0cmluZztcbiAgICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgd29ya2Rpcjogc3RyaW5nO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICB9LFxuICBpbnNwZWN0PzogRGVwbG95SW5zcGVjdGlvbkhhbmRsZXIsXG4pIHtcbiAgY29uc3Qgc2VydmljZSA9IGNyZWF0ZUFjdG9yKGRlcGxveU1hY2hpbmUsIHsgaW5zcGVjdCB9KTtcbiAgY29uc3QgYXJncyA9IFtcbiAgICBcImFwcGx5XCIsXG4gICAgLi4uKG9wdGlvbnMuYXV0b0FwcHJvdmUgPyBbXCItYXV0by1hcHByb3ZlXCJdIDogW10pLFxuICAgIC8vIFwiLWlucHV0PWZhbHNlXCIsIHdlIGNhbid0IHVzZSB0aGlzIGFueW1vcmUgYnV0IFRPRE86IHdlIG5lZWQgdG8gZGV0ZWN0IFRGIENMSSBhc2tpbmcgZm9yIG1pc3NpbmcgaW5wdXRzIGFuZCBlaXRoZXIgYWxsb3cgcGFzc2luZyB0aGVtIG9yIHN0b3AgdGhlcmUgYW5kIGZhaWxcblxuICAgIC4uLm9wdGlvbnMuZXh0cmFPcHRpb25zLFxuICAgIC4uLihvcHRpb25zLnJlZnJlc2hPbmx5ID8gW1wiLXJlZnJlc2gtb25seVwiXSA6IFtdKSxcbiAgICAuLi4ob3B0aW9ucy5ub0NvbG9yID8gW1wiLW5vLWNvbG9yXCJdIDogW10pLFxuICAgIC4uLihvcHRpb25zLnBhcmFsbGVsaXNtID4gLTFcbiAgICAgID8gW2AtcGFyYWxsZWxpc209JHtvcHRpb25zLnBhcmFsbGVsaXNtfWBdXG4gICAgICA6IFtdKSxcbiAgXTtcblxuICBvcHRpb25zLnZhcnM/LmZvckVhY2goKHYpID0+IHtcbiAgICBhcmdzLnB1c2goYC12YXI9JHt2fWApO1xuICB9KTtcblxuICBvcHRpb25zLnZhckZpbGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyLWZpbGU9JHt2fWApO1xuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYEV4ZWN1dGluZyAke29wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZX0gJHthcmdzLmpvaW4oXCIgXCIpfSBpbiAke1xuICAgICAgb3B0aW9ucy53b3JrZGlyXG4gICAgfWAsXG4gICk7XG5cbiAgY29uc3QgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnID0ge1xuICAgIGZpbGU6IG9wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGN3ZDogb3B0aW9ucy53b3JrZGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudiBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCAvLyBUT0RPOiBtYWtlIHRoaXMgZXhwbGljaXQgYW5kIG1vdmUgdG8gY2FsbGVyIG9yIHdoYXRldmVyXG4gICAgfSxcbiAgfTtcblxuICBzZXJ2aWNlLnN0YXJ0KCk7XG4gIHNlcnZpY2Uuc2VuZCh7IHR5cGU6IFwiU1RBUlRcIiwgcHR5OiBjb25maWcgfSk7XG5cbiAgcmV0dXJuIHNlcnZpY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmRTdGFydERlc3Ryb3lTZXJ2aWNlKFxuICBvcHRpb25zOiB7XG4gICAgcGFyYWxsZWxpc206IG51bWJlcjtcbiAgICBleHRyYU9wdGlvbnM6IHN0cmluZ1tdO1xuICAgIHRlcnJhZm9ybUJpbmFyeU5hbWU6IHN0cmluZztcbiAgICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgd29ya2Rpcjogc3RyaW5nO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICB9LFxuICBpbnNwZWN0PzogRGVwbG95SW5zcGVjdGlvbkhhbmRsZXIsXG4pIHtcbiAgY29uc3Qgc2VydmljZSA9IGNyZWF0ZUFjdG9yKGRlcGxveU1hY2hpbmUsIHsgaW5zcGVjdCB9KTtcblxuICBjb25zdCBhcmdzID0gW1xuICAgIFwiZGVzdHJveVwiLFxuICAgIC4uLihvcHRpb25zLmF1dG9BcHByb3ZlID8gW1wiLWF1dG8tYXBwcm92ZVwiXSA6IFtdKSxcbiAgICAvLyBcIi1pbnB1dD1mYWxzZVwiLCB3ZSBjYW4ndCB1c2UgdGhpcyBhbnltb3JlIGJ1dCBUT0RPOiB3ZSBuZWVkIHRvIGRldGVjdCBURiBDTEkgYXNraW5nIGZvciBtaXNzaW5nIGlucHV0cyBhbmQgZWl0aGVyIGFsbG93IHBhc3NpbmcgdGhlbSBvciBzdG9wIHRoZXJlIGFuZCBmYWlsXG5cbiAgICAuLi5vcHRpb25zLmV4dHJhT3B0aW9ucyxcbiAgICAuLi4ob3B0aW9ucy5ub0NvbG9yID8gW1wiLW5vLWNvbG9yXCJdIDogW10pLFxuICAgIC4uLihvcHRpb25zLnBhcmFsbGVsaXNtID4gLTFcbiAgICAgID8gW2AtcGFyYWxsZWxpc209JHtvcHRpb25zLnBhcmFsbGVsaXNtfWBdXG4gICAgICA6IFtdKSxcbiAgXTtcblxuICBvcHRpb25zLnZhcnM/LmZvckVhY2goKHYpID0+IHtcbiAgICBhcmdzLnB1c2goYC12YXI9JHt2fWApO1xuICB9KTtcblxuICBvcHRpb25zLnZhckZpbGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyLWZpbGU9JHt2fWApO1xuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYEV4ZWN1dGluZyAke29wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZX0gJHthcmdzLmpvaW4oXCIgXCIpfSBpbiAke1xuICAgICAgb3B0aW9ucy53b3JrZGlyXG4gICAgfWAsXG4gICk7XG5cbiAgY29uc3QgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnID0ge1xuICAgIGZpbGU6IG9wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGN3ZDogb3B0aW9ucy53b3JrZGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudiBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCAvLyBUT0RPOiBtYWtlIHRoaXMgZXhwbGljaXQgYW5kIG1vdmUgdG8gY2FsbGVyIG9yIHdoYXRldmVyXG4gICAgfSxcbiAgfTtcblxuICBzZXJ2aWNlLnN0YXJ0KCk7XG4gIHNlcnZpY2Uuc2VuZCh7IHR5cGU6IFwiU1RBUlRcIiwgcHR5OiBjb25maWcgfSk7XG5cbiAgcmV0dXJuIHNlcnZpY2U7XG59XG4iXX0=
@@ -7,7 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
8
  };
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.spawnInteractive = void 0;
10
+ exports.spawnInteractive = spawnInteractive;
11
11
  const cross_spawn_1 = require("cross-spawn");
12
12
  const commons_1 = require("@cdktn/commons");
13
13
  const os_1 = __importDefault(require("os"));
@@ -56,5 +56,4 @@ function spawnInteractive(config, onData) {
56
56
  });
57
57
  return { exitCode, actions };
58
58
  }
59
- exports.spawnInteractive = spawnInteractive;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL2ludGVyYWN0aXZlLXByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7O0FBRUgsNkNBQW9DO0FBQ3BDLDRDQUF3QztBQUN4Qyw0Q0FBb0I7QUFvQnBCOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsTUFBOEIsRUFDOUIsTUFBOEI7O0lBRTlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFekIsNERBQTREO0lBQzVELE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBRXZCLGdCQUFNLENBQUMsS0FBSyxDQUNWLDhCQUE4QixJQUFJLFVBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FDekQsYUFBYSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLENBQUM7SUFFRixNQUFNLENBQUMsR0FBRyxJQUFBLG1CQUFLLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVyQyxNQUFNLE9BQU8sR0FBOEI7UUFDekMsS0FBSyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFOztZQUMxQixnQkFBTSxDQUFDLEtBQUssQ0FDVixxQ0FBcUMsSUFBSSxVQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQ3pELE1BQU0sUUFBUSxFQUFFLENBQ2pCLENBQUM7WUFDRixNQUFBLENBQUMsQ0FBQyxLQUFLLDBDQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFOztZQUM5QixnQkFBTSxDQUFDLEtBQUssQ0FDVixvREFBb0QsSUFBSSxVQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQ3pELE1BQU0sUUFBUSxFQUFFLENBQ2pCLENBQUM7WUFDRixNQUFBLENBQUMsQ0FBQyxLQUFLLDBDQUFFLEtBQUssQ0FBQyxHQUFHLFFBQVEsR0FBRyxZQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNULGdCQUFNLENBQUMsS0FBSyxDQUNWLDBCQUEwQixJQUFJLFVBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FDekQsR0FBRyxDQUNKLENBQUM7WUFDRixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWCxDQUFDO0tBQ0YsQ0FBQztJQUVGLE1BQUEsQ0FBQyxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQUEsQ0FBQyxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUMvQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDZixnQkFBTSxDQUFDLEtBQUssQ0FDVixpQkFBaUIsSUFBSSxVQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQ3pELHNCQUFzQixRQUFRLEVBQUUsQ0FDakMsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQW5FRCw0Q0FtRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcImNyb3NzLXNwYXduXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnIHtcbiAgZmlsZTogUGFyYW1ldGVyczx0eXBlb2Ygc3Bhd24+WzBdO1xuICBhcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBzcGF3bj5bMV07XG4gIG9wdGlvbnM6IFBhcmFtZXRlcnM8dHlwZW9mIHNwYXduPlsyXSAmIHsgY3dkOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGl2ZVByb2Nlc3NBY3Rpb25zIHtcbiAgd3JpdGU6IChyZXNwb25zZTogc3RyaW5nKSA9PiB2b2lkO1xuICB3cml0ZUxpbmU6IChyZXNwb25zZTogc3RyaW5nKSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aXZlUHJvY2VzcyB7XG4gIC8vIEFsd2F5cyByZXNvbHZlcywgcmV0dXJucyB0aGUgZXhpdCBjb2RlIG9mIHRoZSBwcm9jZXNzXG4gIGV4aXRDb2RlOiBQcm9taXNlPG51bWJlcj47XG4gIGFjdGlvbnM6IEludGVyYWN0aXZlUHJvY2Vzc0FjdGlvbnM7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBjaGlsZF9wcm9jZXNzLnNwYXduIHRoYXQgaGFuZGxlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGlmZmVyZW5jZXNcbiAqIGFuZCBwcm92aWRlIGFuIGludHVpdGl2ZSBBUEkgZm9yIGJpZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZVxuICogc3Bhd25lZCBwcm9jZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Bhd25JbnRlcmFjdGl2ZShcbiAgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnLFxuICBvbkRhdGE6IChkYXRhOiBzdHJpbmcpID0+IHZvaWQsXG4pOiBJbnRlcmFjdGl2ZVByb2Nlc3Mge1xuICBjb25zdCB7IGFyZ3MsIG9wdGlvbnMgfSA9IGNvbmZpZztcbiAgY29uc3QgZmlsZSA9IGNvbmZpZy5maWxlO1xuXG4gIC8vIElucHV0IGFuZCBvdXRwdXQgaXMgcHJvY2Vzc2VkIGFuZCBtb2RpZmllZCBieSB0aGUgY2FsbGVyLlxuICBvcHRpb25zLnN0ZGlvID0gXCJwaXBlXCI7XG5cbiAgbG9nZ2VyLnRyYWNlKFxuICAgIGBTcGF3bmluZyBwcm9jZXNzIHdpdGggZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgIH0sIG9wdGlvbnM9JHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gLFxuICApO1xuXG4gIGNvbnN0IHAgPSBzcGF3bihmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICBjb25zdCBhY3Rpb25zOiBJbnRlcmFjdGl2ZVByb2Nlc3NBY3Rpb25zID0ge1xuICAgIHdyaXRlOiAocmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgU2VuZGluZyByZXNwb25zZSB0byBwcm9jZXNzIChmaWxlPSR7ZmlsZX0sIGFyZ3M9JHtcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgICAgICB9KTogJHtyZXNwb25zZX1gLFxuICAgICAgKTtcbiAgICAgIHAuc3RkaW4/LndyaXRlKHJlc3BvbnNlKTtcbiAgICB9LFxuICAgIHdyaXRlTGluZTogKHJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYFNlbmRpbmcgcmVzcG9uc2UgKHdpdGggbmV3bGluZSkgdG8gcHJvY2VzcyAoZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICAgICAgQXJyYXkuaXNBcnJheShhcmdzKSA/IGBbJHthcmdzLmpvaW4oXCIsIFwiKX1dYCA6IGBcIiR7YXJnc31cImBcbiAgICAgICAgfSk6ICR7cmVzcG9uc2V9YCxcbiAgICAgICk7XG4gICAgICBwLnN0ZGluPy53cml0ZShgJHtyZXNwb25zZX0ke29zLkVPTH1gKTtcbiAgICB9LFxuICAgIHN0b3A6ICgpID0+IHtcbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYEFib3J0aW5nIHByb2Nlc3MgKGZpbGU9JHtmaWxlfSwgYXJncz0ke1xuICAgICAgICAgIEFycmF5LmlzQXJyYXkoYXJncykgPyBgWyR7YXJncy5qb2luKFwiLCBcIil9XWAgOiBgXCIke2FyZ3N9XCJgXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgICBwLmtpbGwoKTtcbiAgICB9LFxuICB9O1xuXG4gIHAuc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICBvbkRhdGEoY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSk7XG4gIH0pO1xuXG4gIHAuc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICBvbkRhdGEoY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSk7XG4gIH0pO1xuXG4gIGNvbnN0IGV4aXRDb2RlID0gbmV3IFByb21pc2U8bnVtYmVyPigocmVzb2x2ZSkgPT4ge1xuICAgIHAub25jZShcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUHJvY2VzcyAoZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgICAgICAgIH0pIGV4aXRlZCB3aXRoIGNvZGUgJHtleGl0Q29kZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShjb2RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgZXhpdENvZGUsIGFjdGlvbnMgfTtcbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL2ludGVyYWN0aXZlLXByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7QUE2QkgsNENBbUVDO0FBOUZELDZDQUFvQztBQUNwQyw0Q0FBd0M7QUFDeEMsNENBQW9CO0FBb0JwQjs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQThCLEVBQzlCLE1BQThCOztJQUU5QixNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXpCLDREQUE0RDtJQUM1RCxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUV2QixnQkFBTSxDQUFDLEtBQUssQ0FDViw4QkFBOEIsSUFBSSxVQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQ3pELGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUN2QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsSUFBQSxtQkFBSyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckMsTUFBTSxPQUFPLEdBQThCO1FBQ3pDLEtBQUssRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRTs7WUFDMUIsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YscUNBQXFDLElBQUksVUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUN6RCxNQUFNLFFBQVEsRUFBRSxDQUNqQixDQUFDO1lBQ0YsTUFBQSxDQUFDLENBQUMsS0FBSywwQ0FBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRTs7WUFDOUIsZ0JBQU0sQ0FBQyxLQUFLLENBQ1Ysb0RBQW9ELElBQUksVUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUN6RCxNQUFNLFFBQVEsRUFBRSxDQUNqQixDQUFDO1lBQ0YsTUFBQSxDQUFDLENBQUMsS0FBSywwQ0FBRSxLQUFLLENBQUMsR0FBRyxRQUFRLEdBQUcsWUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksRUFBRSxHQUFHLEVBQUU7WUFDVCxnQkFBTSxDQUFDLEtBQUssQ0FDViwwQkFBMEIsSUFBSSxVQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQ3pELEdBQUcsQ0FDSixDQUFDO1lBQ0YsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQztLQUNGLENBQUM7SUFFRixNQUFBLENBQUMsQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFBLENBQUMsQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YsaUJBQWlCLElBQUksVUFDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUN6RCxzQkFBc0IsUUFBUSxFQUFFLENBQ2pDLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcImNyb3NzLXNwYXduXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnIHtcbiAgZmlsZTogUGFyYW1ldGVyczx0eXBlb2Ygc3Bhd24+WzBdO1xuICBhcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBzcGF3bj5bMV07XG4gIG9wdGlvbnM6IFBhcmFtZXRlcnM8dHlwZW9mIHNwYXduPlsyXSAmIHsgY3dkOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGl2ZVByb2Nlc3NBY3Rpb25zIHtcbiAgd3JpdGU6IChyZXNwb25zZTogc3RyaW5nKSA9PiB2b2lkO1xuICB3cml0ZUxpbmU6IChyZXNwb25zZTogc3RyaW5nKSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aXZlUHJvY2VzcyB7XG4gIC8vIEFsd2F5cyByZXNvbHZlcywgcmV0dXJucyB0aGUgZXhpdCBjb2RlIG9mIHRoZSBwcm9jZXNzXG4gIGV4aXRDb2RlOiBQcm9taXNlPG51bWJlcj47XG4gIGFjdGlvbnM6IEludGVyYWN0aXZlUHJvY2Vzc0FjdGlvbnM7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBjaGlsZF9wcm9jZXNzLnNwYXduIHRoYXQgaGFuZGxlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGlmZmVyZW5jZXNcbiAqIGFuZCBwcm92aWRlIGFuIGludHVpdGl2ZSBBUEkgZm9yIGJpZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZVxuICogc3Bhd25lZCBwcm9jZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Bhd25JbnRlcmFjdGl2ZShcbiAgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnLFxuICBvbkRhdGE6IChkYXRhOiBzdHJpbmcpID0+IHZvaWQsXG4pOiBJbnRlcmFjdGl2ZVByb2Nlc3Mge1xuICBjb25zdCB7IGFyZ3MsIG9wdGlvbnMgfSA9IGNvbmZpZztcbiAgY29uc3QgZmlsZSA9IGNvbmZpZy5maWxlO1xuXG4gIC8vIElucHV0IGFuZCBvdXRwdXQgaXMgcHJvY2Vzc2VkIGFuZCBtb2RpZmllZCBieSB0aGUgY2FsbGVyLlxuICBvcHRpb25zLnN0ZGlvID0gXCJwaXBlXCI7XG5cbiAgbG9nZ2VyLnRyYWNlKFxuICAgIGBTcGF3bmluZyBwcm9jZXNzIHdpdGggZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgIH0sIG9wdGlvbnM9JHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gLFxuICApO1xuXG4gIGNvbnN0IHAgPSBzcGF3bihmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICBjb25zdCBhY3Rpb25zOiBJbnRlcmFjdGl2ZVByb2Nlc3NBY3Rpb25zID0ge1xuICAgIHdyaXRlOiAocmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgU2VuZGluZyByZXNwb25zZSB0byBwcm9jZXNzIChmaWxlPSR7ZmlsZX0sIGFyZ3M9JHtcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgICAgICB9KTogJHtyZXNwb25zZX1gLFxuICAgICAgKTtcbiAgICAgIHAuc3RkaW4/LndyaXRlKHJlc3BvbnNlKTtcbiAgICB9LFxuICAgIHdyaXRlTGluZTogKHJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYFNlbmRpbmcgcmVzcG9uc2UgKHdpdGggbmV3bGluZSkgdG8gcHJvY2VzcyAoZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICAgICAgQXJyYXkuaXNBcnJheShhcmdzKSA/IGBbJHthcmdzLmpvaW4oXCIsIFwiKX1dYCA6IGBcIiR7YXJnc31cImBcbiAgICAgICAgfSk6ICR7cmVzcG9uc2V9YCxcbiAgICAgICk7XG4gICAgICBwLnN0ZGluPy53cml0ZShgJHtyZXNwb25zZX0ke29zLkVPTH1gKTtcbiAgICB9LFxuICAgIHN0b3A6ICgpID0+IHtcbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYEFib3J0aW5nIHByb2Nlc3MgKGZpbGU9JHtmaWxlfSwgYXJncz0ke1xuICAgICAgICAgIEFycmF5LmlzQXJyYXkoYXJncykgPyBgWyR7YXJncy5qb2luKFwiLCBcIil9XWAgOiBgXCIke2FyZ3N9XCJgXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgICBwLmtpbGwoKTtcbiAgICB9LFxuICB9O1xuXG4gIHAuc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICBvbkRhdGEoY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSk7XG4gIH0pO1xuXG4gIHAuc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICBvbkRhdGEoY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSk7XG4gIH0pO1xuXG4gIGNvbnN0IGV4aXRDb2RlID0gbmV3IFByb21pc2U8bnVtYmVyPigocmVzb2x2ZSkgPT4ge1xuICAgIHAub25jZShcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUHJvY2VzcyAoZmlsZT0ke2ZpbGV9LCBhcmdzPSR7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGFyZ3MpID8gYFske2FyZ3Muam9pbihcIiwgXCIpfV1gIDogYFwiJHthcmdzfVwiYFxuICAgICAgICAgIH0pIGV4aXRlZCB3aXRoIGNvZGUgJHtleGl0Q29kZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShjb2RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgZXhpdENvZGUsIGFjdGlvbnMgfTtcbn1cbiJdfQ==
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
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
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.schema = void 0;
27
37
  // Copyright (c) HashiCorp, Inc
@@ -178,4 +188,4 @@ exports.schema = z.union([
178
188
  refreshComplete,
179
189
  logMessage,
180
190
  ]);
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFFekIsK0ZBQStGO0FBQy9GLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM1QixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMvQyxDQUFDLENBQUM7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDO0tBQ2xCLE1BQU0sQ0FBQztJQUNOLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNyQixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN6QixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUM7QUFFWCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFD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TUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUIsT0FBTztJQUNQLGFBQWE7SUFDYixhQUFhO0lBQ2IsT0FBTztJQUNQLFVBQVU7SUFDVixhQUFhO0lBQ2IsYUFBYTtJQUNiLFVBQVU7SUFDVixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLGVBQWU7SUFDZixVQUFVO0NBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIHogZnJvbSBcInpvZFwiO1xuXG4vLyBTY2hlbWFzIGZyb20gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvaW50ZXJuYWxzL21hY2hpbmUtcmVhZGFibGUtdWkuaHRtbCNjaGFuZ2Vfc3VtbWFyeVxuY29uc3QgcmVzb3VyY2UgPSB6Lm9iamVjdCh7XG4gIGFkZHI6IHouc3RyaW5nKCksXG4gIG1vZHVsZTogei5zdHJpbmcoKSxcbiAgcmVzb3VyY2U6IHouc3RyaW5nKCksXG4gIGltcGxpZWRfcHJvdmlkZXI6IHouc3RyaW5nKCksXG4gIHJlc291cmNlX3R5cGU6IHouc3RyaW5nKCksXG4gIHJlc291cmNlX25hbWU6IHouc3RyaW5nKCksXG4gIHJlc291cmNlX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG59KTtcbmNvbnN0IGJhc2VNZXNzYWdlID0gelxuICAub2JqZWN0KHtcbiAgICBcIkBsZXZlbFwiOiB6LmVudW0oW1wiaW5mb1wiLCBcImVycm9yXCIsIFwid2FyblwiXSksXG4gICAgXCJAbWVzc2FnZVwiOiB6LnN0cmluZygpLFxuICAgIFwiQG1vZHVsZVwiOiB6LnN0cmluZygpLFxuICAgIFwiQHRpbWVzdGFtcFwiOiB6LnN0cmluZygpLFxuICB9KVxuICAubG9vc2UoKTtcblxuY29uc3QgYWN0aW9uID0gei5lbnVtKFtcIm5vb3BcIiwgXCJjcmVhdGVcIiwgXCJyZWFkXCIsIFwidXBkYXRlXCIsIFwiZGVsZXRlXCJdKTtcbmNvbnN0IGNoYW5nZSA9IHoub2JqZWN0KHtcbiAgcmVzb3VyY2UsXG4gIGFjdGlvbixcbn0pO1xuY29uc3QgcmVwbGFjZUNoYW5nZSA9IGNoYW5nZS5leHRlbmQoe1xuICBhY3Rpb246IHoubGl0ZXJhbChcInJlcGxhY2VcIiksXG4gIHJlYXNvbjogei5lbnVtKFtcInRhaW50ZWRcIiwgXCJyZXF1ZXN0ZWRcIiwgXCJjYW5ub3RfdXBkYXRlXCJdKSxcbn0pO1xuY29uc3QgcGxhbm5lZENoYW5nZSA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInBsYW5uZWRfY2hhbmdlXCIpLFxuICBjaGFuZ2U6IHoudW5pb24oW3JlcGxhY2VDaGFuZ2UsIGNoYW5nZV0pLFxufSk7XG5cbmNvbnN0IHZlcnNpb24gPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ2ZXJzaW9uXCIpLFxufSk7XG5cbmNvbnN0IGNoYW5nZVN1bW1hcnkgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJjaGFuZ2Vfc3VtbWFyeVwiKSxcbiAgY2hhbmdlczogei5vYmplY3Qoe1xuICAgIGFkZDogei5udW1iZXIoKSxcbiAgICBjaGFuZ2U6IHoubnVtYmVyKCksXG4gICAgcmVtb3ZlOiB6Lm51bWJlcigpLFxuICAgIG9wZXJhdGlvbjogei5lbnVtKFtcInBsYW5cIiwgXCJhcHBseVwiLCBcImRlcGxveVwiXSksXG4gIH0pLFxufSk7XG5cbmNvbnN0IG91dHB1dHMgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJvdXRwdXRzXCIpLFxuICBvdXRwdXRzOiB6LnJlY29yZChcbiAgICB6LnN0cmluZygpLFxuICAgIHoub2JqZWN0KHtcbiAgICAgIHNlbnNpdGl2ZTogei5ib29sZWFuKCksXG4gICAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgICAgdmFsdWU6IHouc3RyaW5nKCksXG4gICAgfSksXG4gICksXG59KTtcblxuY29uc3QgYXBwbHlTdGFydCA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImFwcGx5X3N0YXJ0XCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgYWN0aW9uLFxuICAgIGlkX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlkX3ZhbHVlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IGFwcGx5UHJvZ3Jlc3MgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcHBseV9wcm9ncmVzc1wiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIGFjdGlvbixcbiAgICBlbGFwc2VkX3NlY29uZHM6IHoubnVtYmVyKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IGFwcGx5Q29tcGxldGUgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcHBseV9jb21wbGV0ZVwiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIGFjdGlvbixcbiAgICBpZF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpZF92YWx1ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVsYXBzZWRfc2Vjb25kczogei5udW1iZXIoKSxcbiAgfSksXG59KTtcblxuY29uc3QgYXBwbHlFcnJvciA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImFwcGx5X2Vycm9yZWRcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBhY3Rpb24sXG4gICAgZWxhcHNlZF9zZWNvbmRzOiB6Lm51bWJlcigpLFxuICB9KSxcbn0pO1xuXG5jb25zdCBwcm92aXNpb25TdGFydCA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInByb3Zpc2lvbl9zdGFydFwiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIHByb3Zpc2lvbmVyOiB6LnN0cmluZygpLFxuICB9KSxcbn0pO1xuXG5jb25zdCBwcm92aXNpb25Qcm9ncmVzcyA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInByb3Zpc2lvbl9wcm9ncmVzc1wiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIHByb3Zpc2lvbmVyOiB6LnN0cmluZygpLFxuICAgIG91dHB1dDogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcblxuY29uc3QgcHJvdmlzaW9uQ29tcGxldGUgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJwcm92aXNpb25fY29tcGxldGVcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBwcm92aXNpb25lcjogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcblxuY29uc3QgcHJvdmlzaW9uRXJyb3JlZCA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInByb3Zpc2lvbl9lcnJvcmVkXCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgcHJvdmlzaW9uZXI6IHouc3RyaW5nKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IHJlZnJlc2hTdGFydCA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJlZnJlc2hfc3RhcnRcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBpZF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpZF92YWx1ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbn0pO1xuXG5jb25zdCByZWZyZXNoQ29tcGxldGUgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZWZyZXNoX2NvbXBsZXRlXCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgaWRfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWRfdmFsdWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KTtcblxuY29uc3QgbG9nTWVzc2FnZSA9IGJhc2VNZXNzYWdlLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImxvZ1wiKSxcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2NoZW1hID0gei51bmlvbihbXG4gIHZlcnNpb24sXG4gIHBsYW5uZWRDaGFuZ2UsXG4gIGNoYW5nZVN1bW1hcnksXG4gIG91dHB1dHMsXG4gIGFwcGx5U3RhcnQsXG4gIGFwcGx5UHJvZ3Jlc3MsXG4gIGFwcGx5Q29tcGxldGUsXG4gIGFwcGx5RXJyb3IsXG4gIHByb3Zpc2lvblN0YXJ0LFxuICBwcm92aXNpb25Qcm9ncmVzcyxcbiAgcHJvdmlzaW9uQ29tcGxldGUsXG4gIHByb3Zpc2lvbkVycm9yZWQsXG4gIHJlZnJlc2hTdGFydCxcbiAgcmVmcmVzaENvbXBsZXRlLFxuICBsb2dNZXNzYWdlLFxuXSk7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGVzID0gei5pbmZlcjx0eXBlb2YgYWN0aW9uPjtcbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsdUNBQXlCO0FBRXpCLCtGQUErRjtBQUMvRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2xCLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3BCLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDNUIsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDekIsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDekIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDL0MsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQztLQUNsQixNQUFNLENBQUM7SUFDTixRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDckIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDekIsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDO0FBRVgsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FB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QUFFVSxRQUFBLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVCLE9BQU87SUFDUCxhQUFhO0lBQ2IsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGFBQWE7SUFDYixVQUFVO0lBQ1YsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixlQUFlO0lBQ2YsVUFBVTtDQUNYLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcblxuLy8gU2NoZW1hcyBmcm9tIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9kb2NzL2ludGVybmFscy9tYWNoaW5lLXJlYWRhYmxlLXVpLmh0bWwjY2hhbmdlX3N1bW1hcnlcbmNvbnN0IHJlc291cmNlID0gei5vYmplY3Qoe1xuICBhZGRyOiB6LnN0cmluZygpLFxuICBtb2R1bGU6IHouc3RyaW5nKCksXG4gIHJlc291cmNlOiB6LnN0cmluZygpLFxuICBpbXBsaWVkX3Byb3ZpZGVyOiB6LnN0cmluZygpLFxuICByZXNvdXJjZV90eXBlOiB6LnN0cmluZygpLFxuICByZXNvdXJjZV9uYW1lOiB6LnN0cmluZygpLFxuICByZXNvdXJjZV9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxufSk7XG5jb25zdCBiYXNlTWVzc2FnZSA9IHpcbiAgLm9iamVjdCh7XG4gICAgXCJAbGV2ZWxcIjogei5lbnVtKFtcImluZm9cIiwgXCJlcnJvclwiLCBcIndhcm5cIl0pLFxuICAgIFwiQG1lc3NhZ2VcIjogei5zdHJpbmcoKSxcbiAgICBcIkBtb2R1bGVcIjogei5zdHJpbmcoKSxcbiAgICBcIkB0aW1lc3RhbXBcIjogei5zdHJpbmcoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbmNvbnN0IGFjdGlvbiA9IHouZW51bShbXCJub29wXCIsIFwiY3JlYXRlXCIsIFwicmVhZFwiLCBcInVwZGF0ZVwiLCBcImRlbGV0ZVwiXSk7XG5jb25zdCBjaGFuZ2UgPSB6Lm9iamVjdCh7XG4gIHJlc291cmNlLFxuICBhY3Rpb24sXG59KTtcbmNvbnN0IHJlcGxhY2VDaGFuZ2UgPSBjaGFuZ2UuZXh0ZW5kKHtcbiAgYWN0aW9uOiB6LmxpdGVyYWwoXCJyZXBsYWNlXCIpLFxuICByZWFzb246IHouZW51bShbXCJ0YWludGVkXCIsIFwicmVxdWVzdGVkXCIsIFwiY2Fubm90X3VwZGF0ZVwiXSksXG59KTtcbmNvbnN0IHBsYW5uZWRDaGFuZ2UgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJwbGFubmVkX2NoYW5nZVwiKSxcbiAgY2hhbmdlOiB6LnVuaW9uKFtyZXBsYWNlQ2hhbmdlLCBjaGFuZ2VdKSxcbn0pO1xuXG5jb25zdCB2ZXJzaW9uID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwidmVyc2lvblwiKSxcbn0pO1xuXG5jb25zdCBjaGFuZ2VTdW1tYXJ5ID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiY2hhbmdlX3N1bW1hcnlcIiksXG4gIGNoYW5nZXM6IHoub2JqZWN0KHtcbiAgICBhZGQ6IHoubnVtYmVyKCksXG4gICAgY2hhbmdlOiB6Lm51bWJlcigpLFxuICAgIHJlbW92ZTogei5udW1iZXIoKSxcbiAgICBvcGVyYXRpb246IHouZW51bShbXCJwbGFuXCIsIFwiYXBwbHlcIiwgXCJkZXBsb3lcIl0pLFxuICB9KSxcbn0pO1xuXG5jb25zdCBvdXRwdXRzID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwib3V0cHV0c1wiKSxcbiAgb3V0cHV0czogei5yZWNvcmQoXG4gICAgei5zdHJpbmcoKSxcbiAgICB6Lm9iamVjdCh7XG4gICAgICBzZW5zaXRpdmU6IHouYm9vbGVhbigpLFxuICAgICAgdHlwZTogei5zdHJpbmcoKSxcbiAgICAgIHZhbHVlOiB6LnN0cmluZygpLFxuICAgIH0pLFxuICApLFxufSk7XG5cbmNvbnN0IGFwcGx5U3RhcnQgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcHBseV9zdGFydFwiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIGFjdGlvbixcbiAgICBpZF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpZF92YWx1ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbn0pO1xuXG5jb25zdCBhcHBseVByb2dyZXNzID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXBwbHlfcHJvZ3Jlc3NcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBhY3Rpb24sXG4gICAgZWxhcHNlZF9zZWNvbmRzOiB6Lm51bWJlcigpLFxuICB9KSxcbn0pO1xuXG5jb25zdCBhcHBseUNvbXBsZXRlID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXBwbHlfY29tcGxldGVcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBhY3Rpb24sXG4gICAgaWRfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWRfdmFsdWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbGFwc2VkX3NlY29uZHM6IHoubnVtYmVyKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IGFwcGx5RXJyb3IgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcHBseV9lcnJvcmVkXCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgYWN0aW9uLFxuICAgIGVsYXBzZWRfc2Vjb25kczogei5udW1iZXIoKSxcbiAgfSksXG59KTtcblxuY29uc3QgcHJvdmlzaW9uU3RhcnQgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJwcm92aXNpb25fc3RhcnRcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBwcm92aXNpb25lcjogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcblxuY29uc3QgcHJvdmlzaW9uUHJvZ3Jlc3MgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJwcm92aXNpb25fcHJvZ3Jlc3NcIiksXG4gIGhvb2s6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZSxcbiAgICBwcm92aXNpb25lcjogei5zdHJpbmcoKSxcbiAgICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IHByb3Zpc2lvbkNvbXBsZXRlID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicHJvdmlzaW9uX2NvbXBsZXRlXCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgcHJvdmlzaW9uZXI6IHouc3RyaW5nKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IHByb3Zpc2lvbkVycm9yZWQgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJwcm92aXNpb25fZXJyb3JlZFwiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIHByb3Zpc2lvbmVyOiB6LnN0cmluZygpLFxuICB9KSxcbn0pO1xuXG5jb25zdCByZWZyZXNoU3RhcnQgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZWZyZXNoX3N0YXJ0XCIpLFxuICBob29rOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2UsXG4gICAgaWRfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWRfdmFsdWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KTtcblxuY29uc3QgcmVmcmVzaENvbXBsZXRlID0gYmFzZU1lc3NhZ2UuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicmVmcmVzaF9jb21wbGV0ZVwiKSxcbiAgaG9vazogei5vYmplY3Qoe1xuICAgIHJlc291cmNlLFxuICAgIGlkX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlkX3ZhbHVlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSk7XG5cbmNvbnN0IGxvZ01lc3NhZ2UgPSBiYXNlTWVzc2FnZS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJsb2dcIiksXG59KTtcblxuZXhwb3J0IGNvbnN0IHNjaGVtYSA9IHoudW5pb24oW1xuICB2ZXJzaW9uLFxuICBwbGFubmVkQ2hhbmdlLFxuICBjaGFuZ2VTdW1tYXJ5LFxuICBvdXRwdXRzLFxuICBhcHBseVN0YXJ0LFxuICBhcHBseVByb2dyZXNzLFxuICBhcHBseUNvbXBsZXRlLFxuICBhcHBseUVycm9yLFxuICBwcm92aXNpb25TdGFydCxcbiAgcHJvdmlzaW9uUHJvZ3Jlc3MsXG4gIHByb3Zpc2lvbkNvbXBsZXRlLFxuICBwcm92aXNpb25FcnJvcmVkLFxuICByZWZyZXNoU3RhcnQsXG4gIHJlZnJlc2hDb21wbGV0ZSxcbiAgbG9nTWVzc2FnZSxcbl0pO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9IHouaW5mZXI8dHlwZW9mIGFjdGlvbj47XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"terraform-cli.d.ts","sourceRoot":"","sources":["../../../src/lib/models/terraform-cli.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkBlD,qBAAa,gBACX,SAAQ,qBACR,YAAW,aAAa;aAGN,QAAQ,EAAE,MAAM;aAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;gBAD5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAI/C;AAED,uBAAe,oBAAoB;IACjC,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AACD,MAAM,MAAM,YAAY,GAAG,OAAO,oBAAoB,CAAC;AAkCvD,qBAAa,YAAa,YAAW,SAAS;IAY1C,OAAO,CAAC,QAAQ,CAAC,WAAW;aACZ,KAAK,EAAE,gBAAgB;IAZzC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGc;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGkB;gBAGxB,WAAW,EAAE,WAAW,EACzB,KAAK,EAAE,gBAAgB,EACvC,yBAAyB,YAAY,MAAM,YAAY,YAAY,EAAE,eACzD,MAAM,2BAAuB;IAe9B,IAAI,CAAC,IAAI,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,OAAO,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFjB,OAAO,KAAK,YAAY,GAQvB;IAED,OAAO,KAAK,UAAU,GAMrB;IAEY,IAAI,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DJ,MAAM,CACjB,EACE,WAAmB,EACnB,WAAmB,EACnB,OAAe,EACf,WAAgB,EAChB,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAoBrB,OAAO,CAClB,EACE,WAAmB,EACnB,WAAgB,EAChB,OAAe,EACf,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;YAmBpB,aAAa;IAkHd,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAqB1B,MAAM,IAAI,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAAE,CAAC;IAwBrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,KAAK;CAGnB;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,mCAAmC,CAAC,UAAU,EAAE,MAAM,iBAK3E"}
1
+ {"version":3,"file":"terraform-cli.d.ts","sourceRoot":"","sources":["../../../src/lib/models/terraform-cli.ts"],"names":[],"mappings":"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"}
@@ -15,18 +15,30 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
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
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.tryRemoveGeneratedConfigurationFile = exports.tryReadGeneratedConfigurationFile = exports.TerraformCli = exports.TerraformCliPlan = void 0;
39
+ exports.TerraformCli = exports.TerraformCliPlan = void 0;
40
+ exports.tryReadGeneratedConfigurationFile = tryReadGeneratedConfigurationFile;
41
+ exports.tryRemoveGeneratedConfigurationFile = tryRemoveGeneratedConfigurationFile;
30
42
  // Copyright (c) HashiCorp, Inc
31
43
  // SPDX-License-Identifier: MPL-2.0
32
44
  const strip_ansi_1 = __importDefault(require("strip-ansi"));
@@ -354,12 +366,10 @@ async function tryReadGeneratedConfigurationFile(workingDir) {
354
366
  }
355
367
  return fs.readFileSync(generatedConfigPath, "utf-8");
356
368
  }
357
- exports.tryReadGeneratedConfigurationFile = tryReadGeneratedConfigurationFile;
358
369
  async function tryRemoveGeneratedConfigurationFile(workingDir) {
359
370
  const generatedConfigPath = path_1.default.join(workingDir, GENERATE_CONFIG_OUT_FILE);
360
371
  if (fs.existsSync(generatedConfigPath)) {
361
372
  fs.unlinkSync(generatedConfigPath);
362
373
  }
363
374
  }
364
- exports.tryRemoveGeneratedConfigurationFile = tryRemoveGeneratedConfigurationFile;
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL3RlcnJhZm9ybS1jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDREQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsMkNBTXFCO0FBRXJCLHFEQU8wQjtBQUMxQixtQ0FBaUM7QUFDakMsc0NBQTRDO0FBQzVDLHNEQUF3RDtBQUN4RCwrREFBeUQ7QUFDekQsZ0RBQXdCO0FBQ3hCLDZDQUErQjtBQUUvQixNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRTFELE1BQWEsZ0JBQ1gsU0FBUSxpQ0FBcUI7SUFHN0IsWUFDa0IsUUFBZ0IsRUFDaEIsSUFBNEI7UUFFNUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZ0JBQWdCLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBd0I7SUFHOUMsQ0FBQztDQUNGO0FBVkQsNENBVUM7QUFFRCxNQUFlLG9CQUFvQjtDQUdsQztBQUdELDRGQUE0RjtBQUM1RixnR0FBZ0c7QUFDaEcsTUFBTSxzQkFBdUIsU0FBUSxvQkFBb0I7SUFDdkQscURBQXFEO0lBQ3JELElBQUk7SUFDSiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUNKLDJDQUEyQztJQUMzQywrQkFBK0I7SUFDL0IsSUFBSTtJQUNKLGdGQUFnRjtJQUNoRixnRkFBZ0Y7SUFDaEYsa0JBQWtCO0lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixPQUFPLENB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IEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHN0cmlwQW5zaSBmcm9tIFwic3RyaXAtYW5zaVwiO1xuaW1wb3J0IHtcbiAgRXJyb3JzLFxuICBleGVjLFxuICBsb2dnZXIsXG4gIHJlYWRDREtURlZlcnNpb24sXG4gIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG59IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtLFxuICBUZXJyYWZvcm1QbGFuLFxuICBUZXJyYWZvcm1PdXRwdXQsXG4gIEFic3RyYWN0VGVycmFmb3JtUGxhbixcbiAgVGVycmFmb3JtRGVwbG95U3RhdGUsXG59IGZyb20gXCIuL3RlcnJhZm9ybVwiO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuLi9zeW50aC1zdGFja1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlLFxuICBjcmVhdGVBbmRTdGFydERlc3Ryb3lTZXJ2aWNlLFxuICBEZXBsb3lBY3RvcixcbiAgRGVwbG95SW5zcGVjdGlvbkhhbmRsZXIsXG4gIERlcGxveVNuYXBzaG90LFxuICBpc0RlcGxveUV2ZW50LFxufSBmcm9tIFwiLi9kZXBsb3ktbWFjaGluZVwiO1xuaW1wb3J0IHsgd2FpdEZvciB9IGZyb20gXCJ4c3RhdGVcIjtcbmltcG9ydCB7IG1pc3NpbmdWYXJpYWJsZSB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHRlcnJhZm9ybUpzb25TY2hlbWEgfSBmcm9tIFwiLi4vdGVycmFmb3JtLWpzb25cIjtcbmltcG9ydCB7IHNwYXduSW50ZXJhY3RpdmUgfSBmcm9tIFwiLi9pbnRlcmFjdGl2ZS1wcm9jZXNzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5cbmNvbnN0IEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSA9IFwiZ2VuZXJhdGVkX3Jlc291cmNlcy50ZlwiO1xuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtQ2xpUGxhblxuICBleHRlbmRzIEFic3RyYWN0VGVycmFmb3JtUGxhblxuICBpbXBsZW1lbnRzIFRlcnJhZm9ybVBsYW5cbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW46IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICkge1xuICAgIHN1cGVyKHBsYW5GaWxlLCBwbGFuPy5yZXNvdXJjZV9jaGFuZ2VzLCBwbGFuPy5vdXRwdXRfY2hhbmdlcyk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPdXRwdXRGaWx0ZXIge1xuICBwdWJsaWMgc3RhdGljIGNvbmRpdGlvbjogKGxpbmU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgcHVibGljIHN0YXRpYyB0cmFuc2Zvcm06IChsaW5lOiBzdHJpbmcpID0+IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIE91dHB1dEZpbHRlciA9IHR5cGVvZiBBYnN0cmFjdE91dHB1dEZpbHRlcjtcblxuLy8gVGhlIHBsYW4gbWlnaHQgZXJyb3IgaWYgdGhlcmUgaXMgYSB2YXJpYWJsZSBtaXNzaW5nLCBidXQgdGhlIGVycm9yIG1lc3NhZ2UgaGludHMgdGhlIHVzZXJcbi8vIGluIGEgd3JvbmcgZGlyZWN0aW9uLiBXZSB0aGVyZWZvcmUgY2F0Y2ggdGhlIGVycm9yIGFuZCByZXRocm93IGl0IHdpdGggYSBtb3JlIGhlbHBmdWwgbWVzc2FnZVxuY2xhc3MgVmFyaWFibGVSZXF1aXJlZEZpbHRlciBleHRlbmRzIEFic3RyYWN0T3V0cHV0RmlsdGVyIHtcbiAgLy8gRXhhbXBsZSBmb3IgXCJObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcIiBlcnJvclxuICAvLyDilbdcbiAgLy8g4pSCIEVycm9yOiBObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcbiAgLy8g4pSCXG4gIC8vIOKUgiAgIG9uIGNkay50Zi5qc29uIGxpbmUgMzEsIGluIHZhcmlhYmxlOlxuICAvLyDilIIgICAzMTogICAgIFwid2l0aC1kYXNoZXNcIjoge1xuICAvLyDilIJcbiAgLy8g4pSCIFRoZSByb290IG1vZHVsZSBpbnB1dCB2YXJpYWJsZSBcIndpdGgtZGFzaGVzXCIgaXMgbm90IHNldCwgYW5kIGhhcyBubyBkZWZhdWx0XG4gIC8vIOKUgiB2YWx1ZS4gVXNlIGEgLXZhciBvciAtdmFyLWZpbGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSB2YWx1ZSBmb3JcbiAgLy8g4pSCIHRoaXMgdmFyaWFibGVcbiAgcHVibGljIHN0YXRpYyBjb25kaXRpb24oaW5wdXQ6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmUgPSBzdHJpcEFuc2koaW5wdXQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGxpbmUuaW5jbHVkZXMoXCJFcnJvcjogTm8gdmFsdWUgZm9yIHJlcXVpcmVkIHZhcmlhYmxlXCIpICYmXG4gICAgICBsaW5lLmluY2x1ZGVzKFwiVGhlIHJvb3QgbW9kdWxlIGlucHV0IHZhcmlhYmxlXCIpXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIHRyYW5zZm9ybShsaW5lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydE1hcmtlciA9ICdUaGUgcm9vdCBtb2R1bGUgaW5wdXQgdmFyaWFibGUgXCInO1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGxpbmUuc3Vic3RyaW5nKFxuICAgICAgbGluZS5pbmRleE9mKHN0YXJ0TWFya2VyKSArIHN0YXJ0TWFya2VyLmxlbmd0aCxcbiAgICAgIGxpbmUuaW5kZXhPZignXCIgaXMgbm90IHNldCcpLFxuICAgICk7XG5cbiAgICByZXR1cm4gbWlzc2luZ1ZhcmlhYmxlKHZhcmlhYmxlTmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybUNsaSBpbXBsZW1lbnRzIFRlcnJhZm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSB3b3JrZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25TdGRvdXQ6IChcbiAgICBzdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKSA9PiAoc3Rkb3V0OiBCdWZmZXIgfCBzdHJpbmcpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25TdGRlcnI6IChcbiAgICBzdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKSA9PiAoc3RkZXJyOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICAgIHB1YmxpYyByZWFkb25seSBzdGFjazogU3ludGhlc2l6ZWRTdGFjayxcbiAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyID0gKF9waGFzZTogc3RyaW5nLCBfZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+XG4gICAgICAoX3N0ZG91dDogc3RyaW5nLCBfaXNFcnIgPSBmYWxzZSkgPT4ge30sXG4gICkge1xuICAgIHRoaXMud29ya2RpciA9IHN0YWNrLndvcmtpbmdEaXJlY3Rvcnk7XG4gICAgdGhpcy5vblN0ZG91dCA9XG4gICAgICAocGhhc2U6IHN0cmluZywgZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+IChzdGRvdXQ6IEJ1ZmZlciB8IHN0cmluZykgPT5cbiAgICAgICAgY3JlYXRlVGVycmFmb3JtTG9nSGFuZGxlcihcbiAgICAgICAgICBwaGFzZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICkoQnVmZmVyLmlzQnVmZmVyKHN0ZG91dCkgPyBzdGRvdXQudG9TdHJpbmcoKSA6IHN0ZG91dCk7XG4gICAgdGhpcy5vblN0ZGVyciA9XG4gICAgICAocGhhc2U6IHN0cmluZywgZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+XG4gICAgICAoc3RkZXJyOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PlxuICAgICAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKHBoYXNlLCBmaWx0ZXIpKHN0ZGVyci50b1N0cmluZygpLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KG9wdHM6IHtcbiAgICBuZWVkc1VwZ3JhZGU6IGJvb2xlYW47XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgbWlncmF0ZVN0YXRlOiBib29sZWFuO1xuICAgIG5lZWRzTG9ja2ZpbGVVcGRhdGU6IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNldFVzZXJBZ2VudCgpO1xuXG4gICAgY29uc3QgYXJncyA9IFtcImluaXRcIl07XG4gICAgaWYgKG9wdHMubmVlZHNVcGdyYWRlKSB7XG4gICAgICBhcmdzLnB1c2goXCItdXBncmFkZVwiKTtcbiAgICB9XG4gICAgaWYgKG9wdHMubm9Db2xvcikge1xuICAgICAgYXJncy5wdXNoKFwiLW5vLWNvbG9yXCIpO1xuICAgIH1cbiAgICBpZiAob3B0cy5taWdyYXRlU3RhdGUpIHtcbiAgICAgIGFyZ3MucHVzaChcIi1taWdyYXRlLXN0YXRlXCIpO1xuICAgIH1cblxuICAgIGxldCBpbml0Q2FuTm90Q29udGludWUgPSAoX2VycjogYW55KSA9PiB7fTtcbiAgICBjb25zdCByZWplY3RzSWZJbml0Q2FuTm90Q29udGludWUgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaW5pdENhbk5vdENvbnRpbnVlID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc3Rkb3V0ID0gdGhpcy5vblN0ZG91dChcImluaXRcIik7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBleGl0Q29kZSB9ID0gc3Bhd25JbnRlcmFjdGl2ZShcbiAgICAgIHtcbiAgICAgICAgZmlsZTogdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgYW55LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZG91dChkYXRhKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuaW5jbHVkZXMoXCJTaG91bGQgVGVycmFmb3JtIG1pZ3JhdGUgeW91ciBleGlzdGluZyBzdGF0ZT9cIikgfHxcbiAgICAgICAgICBkYXRhLmluY2x1ZGVzKFwiRG8geW91IHdhbnQgdG8gY29weSBleGlzdGluZyBzdGF0ZSB0byB0aGUgbmV3IGJhY2tlbmRcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVE9ETzogVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB0ZXJyYWZvcm0gaXMgcGFzc2VkIHRoZSAtbWlncmF0ZS1zdGF0ZSBhbnl3YXksIHNvIHRoaXMgY2hlY2sgaXMgcmVkdW5kYW50XG4gICAgICAgICAgaWYgKG9wdHMubWlncmF0ZVN0YXRlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLndyaXRlTGluZShcInllc1wiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aW9ucy5zdG9wKCk7XG4gICAgICAgICAgICBpbml0Q2FuTm90Q29udGludWUoXG4gICAgICAgICAgICAgIFwiUGxlYXNlIHBhc3MgdGhlIC0tbWlncmF0ZS1zdGF0ZSBmbGFnIHRvIG1pZ3JhdGUgeW91ciBzdGF0ZVwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiB7XG4gICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2dyZXNzID0gZXhpdENvZGUudGhlbigoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0ZXJyYWZvcm0gaW5pdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbcHJvZ3Jlc3MsIHJlamVjdHNJZkluaXRDYW5Ob3RDb250aW51ZV0pO1xuXG4gICAgLy8gVE9ETzogdGhpcyBtaWdodCBoYXZlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgd2UncmVcbiAgICAvLyBydW5uaW5nIGEgcmVtb3RlIHBsYW4gb3IgYSBsb2NhbCBvbmUgKHNvIHdlIHJ1biBpdCBhbHdheXMgZm9yIGFsbCBwbGF0Zm9ybXMpXG4gICAgLy8gd2hpbGUgd2UnZCBvbmx5IG5lZWQgaXQgZm9yIHJlbW90ZSBwbGFuc1xuICAgIGlmIChvcHRzLm5lZWRzTG9ja2ZpbGVVcGRhdGUpIHtcbiAgICAgIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcbiAgICAgICAgICBcInByb3ZpZGVyc1wiLFxuICAgICAgICAgIFwibG9ja1wiLFxuICAgICAgICAgIFwiLXBsYXRmb3JtPWxpbnV4X2FtZDY0XCIsXG4gICAgICAgICAgLi4uKG9wdHMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICAgIG5vQ29sb3I6IG9wdHMubm9Db2xvcixcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcImluaXRcIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJpbml0XCIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpc0Nsb3VkU3RhY2soKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uYmFja2VuZD8ucmVtb3RlIHx8IHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uY2xvdWQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ltcG9ydHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihwYXJzZWRTdGFjay5pbXBvcnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYW4ob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge1xuICAgICAgZGVzdHJveSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICB2YXJzID0gW10sXG4gICAgICB2YXJGaWxlcyA9IFtdLFxuICAgICAgbm9Db2xvciA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbXCJwbGFuXCIsIFwiLWlucHV0PWZhbHNlXCJdO1xuXG4gICAgY29uc3QgZ2VuZXJhdGVkQ29uZmlnRmlsZSA9IHBhdGguam9pbihcbiAgICAgIHRoaXMud29ya2RpcixcbiAgICAgIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSxcbiAgICApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ0ZpbGUpKSB7XG4gICAgICBmcy5yZW1vdmUoZ2VuZXJhdGVkQ29uZmlnRmlsZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0ltcG9ydHMpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLWdlbmVyYXRlLWNvbmZpZy1vdXQ9JHtHRU5FUkFURV9DT05GSUdfT1VUX0ZJTEV9YCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0Nsb3VkU3RhY2spIHtcbiAgICAgIGNvbnN0IHBsYW5GaWxlID0gXCJwbGFuXCI7XG4gICAgICBvcHRpb25zLnB1c2goXCItb3V0XCIsIHBsYW5GaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoZGVzdHJveSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLWRlc3Ryb3lcIik7XG4gICAgfVxuICAgIGlmIChyZWZyZXNoT25seSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLXJlZnJlc2gtb25seVwiKTtcbiAgICB9XG4gICAgaWYgKHBhcmFsbGVsaXNtID4gLTEpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLXBhcmFsbGVsaXNtPSR7cGFyYWxsZWxpc219YCk7XG4gICAgfVxuICAgIGlmIChub0NvbG9yKSB7XG4gICAgICBvcHRpb25zLnB1c2goXCItbm8tY29sb3JcIik7XG4gICAgfVxuXG4gICAgdmFycy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXI9JHt2fWApKTtcbiAgICB2YXJGaWxlcy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXItZmlsZT0ke3Z9YCkpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4ZWN1dGluZyAke3RlcnJhZm9ybUJpbmFyeU5hbWV9ICR7b3B0aW9ucy5qb2luKFwiIFwiKX0gaW4gJHt0aGlzLndvcmtkaXJ9YCxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcblxuICAgIGF3YWl0IGV4ZWMoXG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcixcbiAgICAgIH0sXG4gICAgICB0aGlzLm9uU3Rkb3V0KFwicGxhblwiLCBbVmFyaWFibGVSZXF1aXJlZEZpbHRlcl0pLFxuICAgICAgdGhpcy5vblN0ZGVycihcInBsYW5cIiwgW1ZhcmlhYmxlUmVxdWlyZWRGaWx0ZXJdKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlcGxveShcbiAgICB7XG4gICAgICBhdXRvQXBwcm92ZSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIG5vQ29sb3IgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICBleHRyYU9wdGlvbnMgPSBbXSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVTZXJ2aWNlKFwiZGVwbG95XCIsIGNhbGxiYWNrLCAoaW5zcGVjdCkgPT5cbiAgICAgIGNyZWF0ZUFuZFN0YXJ0RGVwbG95U2VydmljZShcbiAgICAgICAge1xuICAgICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgICAgd29ya2RpcjogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIHJlZnJlc2hPbmx5LFxuICAgICAgICAgIG5vQ29sb3IsXG4gICAgICAgICAgYXV0b0FwcHJvdmUsXG4gICAgICAgICAgcGFyYWxsZWxpc20sXG4gICAgICAgICAgZXh0cmFPcHRpb25zLFxuICAgICAgICAgIHZhcnMsXG4gICAgICAgICAgdmFyRmlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGluc3BlY3QsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveShcbiAgICB7XG4gICAgICBhdXRvQXBwcm92ZSA9IGZhbHNlLFxuICAgICAgcGFyYWxsZWxpc20gPSAtMSxcbiAgICAgIG5vQ29sb3IgPSBmYWxzZSxcbiAgICAgIGV4dHJhT3B0aW9ucyA9IFtdLFxuICAgICAgdmFycyA9IFtdLFxuICAgICAgdmFyRmlsZXMgPSBbXSxcbiAgICB9LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+IHtcbiAgICBhd2FpdCB0aGlzLnNldFVzZXJBZ2VudCgpO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlcnZpY2UoXCJkZXN0cm95XCIsIGNhbGxiYWNrLCAoaW5zcGVjdCkgPT5cbiAgICAgIGNyZWF0ZUFuZFN0YXJ0RGVzdHJveVNlcnZpY2UoXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgICAgIHdvcmtkaXI6IHRoaXMud29ya2RpcixcbiAgICAgICAgICBhdXRvQXBwcm92ZSxcbiAgICAgICAgICBwYXJhbGxlbGlzbSxcbiAgICAgICAgICBub0NvbG9yLFxuICAgICAgICAgIGV4dHJhT3B0aW9ucyxcbiAgICAgICAgICB2YXJzLFxuICAgICAgICAgIHZhckZpbGVzLFxuICAgICAgICB9LFxuICAgICAgICBpbnNwZWN0LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXJ2aWNlKFxuICAgIHR5cGU6IFwiZGVwbG95XCIgfCBcImRlc3Ryb3lcIixcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgICBjcmVhdGVTZXJ2aWNlOiAoaW5zcGVjdDogRGVwbG95SW5zcGVjdGlvbkhhbmRsZXIpID0+IERlcGxveUFjdG9yLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+IHtcbiAgICAvLyBFdmVudHMgcmVhY2ggdXMgdGhyb3VnaCBpbnNwZWN0aW9uLCB3aGljaCBmaXJlcyBmb3IgdGhlIHdob2xlIGFjdG9yIHRyZWUuIEZpbHRlciB0byB0aGUgcm9vdCBkZXBsb3kgYWN0b3JcbiAgICAvLyAoaXRzIHNlc3Npb25JZCBlcXVhbHMgdGhlIHRyZWUncyByb290SWQpIHNvIHdlIGRvbid0IHJlYWN0IHRvIHRoZSBpbnZva2VkIHB0eSBjaGlsZCdzIG93biBldmVudHMuIENvbXBhcmluZ1xuICAgIC8vIHNlc3Npb25JZCByYXRoZXIgdGhhbiB0aGUgYWN0b3IgcmVmIGtlZXBzIHRoaXMgc2VsZi1jb250YWluZWQ6IGluc3BlY3Rpb24gZmlyZXMgZHVyaW5nIHN0YXJ0dXAsIGJlZm9yZSB0aGVcbiAgICAvLyBgc2VydmljZWAgYmluZGluZyBiZWxvdyBpcyBpbml0aWFsaXplZC5cbiAgICBjb25zdCBpbnNwZWN0OiBEZXBsb3lJbnNwZWN0aW9uSGFuZGxlciA9IChpbnNwZWN0aW9uRXZlbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaW5zcGVjdGlvbkV2ZW50LnR5cGUgIT09IFwiQHhzdGF0ZS5ldmVudFwiIHx8XG4gICAgICAgIGluc3BlY3Rpb25FdmVudC5hY3RvclJlZi5zZXNzaW9uSWQgIT09IGluc3BlY3Rpb25FdmVudC5yb290SWRcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV2ZW50ID0gaW5zcGVjdGlvbkV2ZW50LmV2ZW50O1xuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9VVFBVVF9SRUNFSVZFRFwiKSlcbiAgICAgICAgdGhpcy5vblN0ZG91dCh0eXBlKShldmVudC5vdXRwdXQpO1xuICAgICAgZWxzZSBpZiAoaXNEZXBsb3lFdmVudChldmVudCwgXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIpKVxuICAgICAgICBjYWxsYmFjayh7IHR5cGU6IFwiZXh0ZXJuYWwgYXBwcm92YWwgcmVwbHlcIiwgYXBwcm92ZWQ6IHRydWUgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIikpXG4gICAgICAgIGNhbGxiYWNrKHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiLCBhcHByb3ZlZDogZmFsc2UgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBjcmVhdGVTZXJ2aWNlKGluc3BlY3QpO1xuXG4gICAgLy8gVHJhbnNpdGlvbnMgY29tZSBmcm9tIHRoZSBhY3RvcidzIG93biBzdWJzY3JpcHRpb24sIHdoaWNoIHlpZWxkcyB0eXBlZCBzbmFwc2hvdHMgZm9yIHRoZSByb290IGFjdG9yIG9ubHkuXG4gICAgbGV0IHByZXZpb3VzU3RhdGU6IERlcGxveVNuYXBzaG90W1widmFsdWVcIl0gPSBcImlkbGVcIjtcbiAgICBjb25zdCBoYW5kbGVTbmFwc2hvdCA9IChzbmFwc2hvdDogRGVwbG95U25hcHNob3QpID0+IHtcbiAgICAgIC8vIE9ubHkgc2VuZCB1cGRhdGVzIG9uIGFjdHVhbCBzdGF0ZSBjaGFuZ2U7IGEgc25hcHNob3QgaXMgZW1pdHRlZCBldmVuIHdoZW4gb25seSBhbiBldmVudCBoYXBwZW5lZC5cbiAgICAgIGlmIChzbmFwc2hvdC5tYXRjaGVzKHByZXZpb3VzU3RhdGUpKSByZXR1cm47XG5cbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYFRlcnJhZm9ybSBDTEkgc3RhdGUgbWFjaGluZSBzdGF0ZSB0cmFuc2l0aW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHByZXZpb3VzU3RhdGUsXG4gICAgICAgICl9ID0+ICR7SlNPTi5zdHJpbmdpZnkoc25hcHNob3QudmFsdWUpfWAsXG4gICAgICApO1xuXG4gICAgICBpZiAoc25hcHNob3QubWF0Y2hlcyh7IHJ1bm5pbmc6IFwiYXdhaXRpbmdfYXBwcm92YWxcIiB9KSkge1xuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiLFxuICAgICAgICAgIGFwcHJvdmU6ICgpID0+IHNlcnZpY2Uuc2VuZCh7IHR5cGU6IFwiQVBQUk9WRVwiIH0pLFxuICAgICAgICAgIHJlamVjdDogKCkgPT4gc2VydmljZS5zZW5kKHsgdHlwZTogXCJSRUpFQ1RcIiB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHNuYXBzaG90Lm1hdGNoZXMoeyBydW5uaW5nOiBcImF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlXCIgfSkpIHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICBvdmVycmlkZTogKCkgPT4gc2VydmljZS5zZW5kKHsgdHlwZTogXCJPVkVSUklERVwiIH0pLFxuICAgICAgICAgIHJlamVjdDogKCkgPT4gc2VydmljZS5zZW5kKHsgdHlwZTogXCJSRUpFQ1RfT1ZFUlJJREVcIiB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHNuYXBzaG90Lm1hdGNoZXMoeyBydW5uaW5nOiBcInByb2Nlc3NpbmdcIiB9KSkge1xuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdHlwZTogXCJydW5uaW5nXCIsXG4gICAgICAgICAgY2FuY2VsbGVkOiBCb29sZWFuKHNuYXBzaG90LmNvbnRleHQuY2FuY2VsbGVkKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBwcmV2aW91c1N0YXRlID0gc25hcHNob3QudmFsdWU7XG4gICAgfTtcblxuICAgIHNlcnZpY2Uuc3Vic2NyaWJlKGhhbmRsZVNuYXBzaG90KTtcbiAgICBoYW5kbGVTbmFwc2hvdChzZXJ2aWNlLmdldFNuYXBzaG90KCkpO1xuXG4gICAgLy8gc3RvcCB0ZXJyYWZvcm0gYXBwbHkgaWYgc2lnbmFsZWQgYXMgc3VjaCBmcm9tIHRoZSBvdXRzaWRlIChlLmcuIHZpYSBjdHJsK2MpXG4gICAgdGhpcy5hYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgXCJhYm9ydFwiLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlNUT1BcIiB9KTtcbiAgICAgIH0sXG4gICAgICB7IG9uY2U6IHRydWUgfSxcbiAgICApO1xuXG4gICAgY29uc3Qgc25hcHNob3QgPSBhd2FpdCB3YWl0Rm9yKFxuICAgICAgc2VydmljZSxcbiAgICAgIChzbmFwc2hvdCkgPT4gc25hcHNob3Quc3RhdHVzID09PSBcImRvbmVcIixcbiAgICAgIHtcbiAgICAgICAgdGltZW91dDogSW5maW5pdHksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBUaGUgZmluYWwgc3RhdGUgcHJvZHVjZXMgdGhlIHRlcnJhZm9ybSBleGl0IGNvZGUgYXMgdGhlIG1hY2hpbmUncyBvdXRwdXQuXG4gICAgY29uc3QgZXhpdENvZGUgPSBzbmFwc2hvdC5vdXRwdXQ/LmV4aXRDb2RlO1xuXG4gICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgYEludm9raW5nIFRlcnJhZm9ybSBDTEkgZm9yICR7dHlwZX0gZG9uZSAoc3RhdGUgbWFjaGluZSByZWFjaGVkIGZpbmFsIHN0YXRlKS4gTGFzdCBleGl0IGNvZGU6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgKX0uIENvbnRleHQ6ICR7SlNPTi5zdHJpbmdpZnkoc25hcHNob3QuY29udGV4dCl9YCxcbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgZXhpdENvZGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgZXhpdENvZGUgIT09IDAgJiZcbiAgICAgICFzbmFwc2hvdC5jb250ZXh0LmNhbmNlbGxlZCAvLyBkb24ndCBmYWlsIGlmIHdlIGNhbmNlbGxlZCB0aGUgcnVuXG4gICAgKSB7XG4gICAgICB0aHJvdyBgSW52b2tpbmcgVGVycmFmb3JtIENMSSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtleGl0Q29kZX1gO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNhbmNlbGxlZDogQm9vbGVhbihzbmFwc2hvdC5jb250ZXh0LmNhbmNlbGxlZCkgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2ZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBleGVjKFxuICAgICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgICBbXCItdlwiXSxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICAgIG5vQ29sb3I6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMub25TdGRvdXQoXCJ2ZXJzaW9uXCIpLFxuICAgICAgICB0aGlzLm9uU3RkZXJyKFwidmVyc2lvblwiKSxcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGVycmFmb3JtIENMSSBub3QgcHJlc2VudCAtIFBsZWFzZSBpbnN0YWxsIGEgY3VycmVudCB2ZXJzaW9uIGh0dHBzOi8vbGVhcm4uaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vZ2V0dGluZy1zdGFydGVkL2luc3RhbGwuaHRtbFwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb3V0cHV0KCk6IFByb21pc2U8eyBba2V5OiBzdHJpbmddOiBUZXJyYWZvcm1PdXRwdXQgfT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IGV4ZWMoXG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgW1wib3V0cHV0XCIsIFwiLWpzb25cIl0sXG4gICAgICB7XG4gICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBzaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXG4gICAgICB9LFxuICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBsb2cgdGhlIG91dHB1dCBoZXJlIHNpbmNlIHdlIHVzZSBpdCBsYXRlciBvblxuICAgICAgKCkgPT4ge30sXG4gICAgICB0aGlzLm9uU3RkZXJyKFwib3V0cHV0XCIpLFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2Uob3V0cHV0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuRXh0ZXJuYWwoXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgdGVycmFmb3JtIG91dHB1dDogJHtlfS4gVGhlIG91dHB1dCB3YXMgJyR7b3V0cHV0fSdgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VXNlckFnZW50KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJlYWQgdGhlIGNka3RmIHZlcnNpb24gZnJvbSB0aGUgJ2Nkay50Zi5qc29uJyBmaWxlXG4gICAgLy8gYW5kIHNldCB0aGUgdXNlciBhZ2VudC5cbiAgICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgcmVhZENES1RGVmVyc2lvbih0aGlzLndvcmtkaXIpO1xuICAgIGlmICh2ZXJzaW9uICE9IFwiXCIpIHtcbiAgICAgIHByb2Nlc3MuZW52LlRGX0FQUEVORF9VU0VSX0FHRU5UID1cbiAgICAgICAgXCJjZGt0bi9cIiArXG4gICAgICAgIHZlcnNpb24gK1xuICAgICAgICBcIiAoK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4pXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjbGVhbiBhbnl0aGluZyB1cCBmb3IgYSBydW5uaW5nIGV4ZWN1dGlvbiBpbiB0aGUgQ0xJIHNpbmNlIHRoZXJlIGlzIG5vIGxlZnQtb3ZlciBzdGF0ZSBpbiBjb250cmFzdCB0byBhbiBvcGVuIFRlcnJhZm9ybSBDbG91ZCBydW5cbiAgcHVibGljIGFzeW5jIGFib3J0KCkge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJ5UmVhZEdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKFxuICB3b3JraW5nRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgY29uc3QgZ2VuZXJhdGVkQ29uZmlnUGF0aCA9IHBhdGguam9pbih3b3JraW5nRGlyLCBHRU5FUkFURV9DT05GSUdfT1VUX0ZJTEUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2VuZXJhdGVkQ29uZmlnUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGdlbmVyYXRlZENvbmZpZ1BhdGgsIFwidXRmLThcIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlSZW1vdmVHZW5lcmF0ZWRDb25maWd1cmF0aW9uRmlsZSh3b3JraW5nRGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgZ2VuZXJhdGVkQ29uZmlnUGF0aCA9IHBhdGguam9pbih3b3JraW5nRGlyLCBHRU5FUkFURV9DT05GSUdfT1VUX0ZJTEUpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKSkge1xuICAgIGZzLnVubGlua1N5bmMoZ2VuZXJhdGVkQ29uZmlnUGF0aCk7XG4gIH1cbn1cbiJdfQ==
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL3RlcnJhZm9ybS1jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOGdCQSw4RUFRQztBQUVELGtGQUtDO0FBN2hCRCwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDREQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsMkNBTXFCO0FBRXJCLHFEQU8wQjtBQUMxQixtQ0FBaUM7QUFDakMsc0NBQTRDO0FBQzVDLHNEQUF3RDtBQUN4RCwrREFBeUQ7QUFDekQsZ0RBQXdCO0FBQ3hCLDZDQUErQjtBQUUvQixNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRTFELE1BQWEsZ0JBQ1gsU0FBUSxpQ0FBcUI7SUFHN0IsWUFDa0IsUUFBZ0IsRUFDaEIsSUFBNEI7UUFFNUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZ0JBQWdCLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBd0I7SUFHOUMsQ0FBQztDQUNGO0FBVkQsNENBVUM7QUFFRCxNQUFlLG9CQUFvQjtDQUdsQztBQUdELDRGQUE0RjtBQUM1RixnR0FBZ0c7QUFDaEcsTUFBTSxzQkFBdUIsU0FBUSxvQkFBb0I7SUFDdkQscURBQXFEO0lBQ3JELElBQUk7SUFDSiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUNKLDJDQUEyQztJQUMzQywrQkFBK0I7SUFDL0IsSUFBSTtJQUNKLGdGQUFnRjtJQUNoRixnRkFBZ0Y7SUFDaEYsa0JBQWtCO0lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JB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IENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gXCJzdHJpcC1hbnNpXCI7XG5pbXBvcnQge1xuICBFcnJvcnMsXG4gIGV4ZWMsXG4gIGxvZ2dlcixcbiAgcmVhZENES1RGVmVyc2lvbixcbiAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm0sXG4gIFRlcnJhZm9ybVBsYW4sXG4gIFRlcnJhZm9ybU91dHB1dCxcbiAgQWJzdHJhY3RUZXJyYWZvcm1QbGFuLFxuICBUZXJyYWZvcm1EZXBsb3lTdGF0ZSxcbn0gZnJvbSBcIi4vdGVycmFmb3JtXCI7XG5pbXBvcnQgeyBTeW50aGVzaXplZFN0YWNrIH0gZnJvbSBcIi4uL3N5bnRoLXN0YWNrXCI7XG5pbXBvcnQge1xuICBjcmVhdGVBbmRTdGFydERlcGxveVNlcnZpY2UsXG4gIGNyZWF0ZUFuZFN0YXJ0RGVzdHJveVNlcnZpY2UsXG4gIERlcGxveUFjdG9yLFxuICBEZXBsb3lJbnNwZWN0aW9uSGFuZGxlcixcbiAgRGVwbG95U25hcHNob3QsXG4gIGlzRGVwbG95RXZlbnQsXG59IGZyb20gXCIuL2RlcGxveS1tYWNoaW5lXCI7XG5pbXBvcnQgeyB3YWl0Rm9yIH0gZnJvbSBcInhzdGF0ZVwiO1xuaW1wb3J0IHsgbWlzc2luZ1ZhcmlhYmxlIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgdGVycmFmb3JtSnNvblNjaGVtYSB9IGZyb20gXCIuLi90ZXJyYWZvcm0tanNvblwiO1xuaW1wb3J0IHsgc3Bhd25JbnRlcmFjdGl2ZSB9IGZyb20gXCIuL2ludGVyYWN0aXZlLXByb2Nlc3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcblxuY29uc3QgR0VORVJBVEVfQ09ORklHX09VVF9GSUxFID0gXCJnZW5lcmF0ZWRfcmVzb3VyY2VzLnRmXCI7XG5cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1DbGlQbGFuXG4gIGV4dGVuZHMgQWJzdHJhY3RUZXJyYWZvcm1QbGFuXG4gIGltcGxlbWVudHMgVGVycmFmb3JtUGxhblxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGxhbkZpbGU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGxhbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgKSB7XG4gICAgc3VwZXIocGxhbkZpbGUsIHBsYW4/LnJlc291cmNlX2NoYW5nZXMsIHBsYW4/Lm91dHB1dF9jaGFuZ2VzKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE91dHB1dEZpbHRlciB7XG4gIHB1YmxpYyBzdGF0aWMgY29uZGl0aW9uOiAobGluZTogc3RyaW5nKSA9PiBib29sZWFuO1xuICBwdWJsaWMgc3RhdGljIHRyYW5zZm9ybTogKGxpbmU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgT3V0cHV0RmlsdGVyID0gdHlwZW9mIEFic3RyYWN0T3V0cHV0RmlsdGVyO1xuXG4vLyBUaGUgcGxhbiBtaWdodCBlcnJvciBpZiB0aGVyZSBpcyBhIHZhcmlhYmxlIG1pc3NpbmcsIGJ1dCB0aGUgZXJyb3IgbWVzc2FnZSBoaW50cyB0aGUgdXNlclxuLy8gaW4gYSB3cm9uZyBkaXJlY3Rpb24uIFdlIHRoZXJlZm9yZSBjYXRjaCB0aGUgZXJyb3IgYW5kIHJldGhyb3cgaXQgd2l0aCBhIG1vcmUgaGVscGZ1bCBtZXNzYWdlXG5jbGFzcyBWYXJpYWJsZVJlcXVpcmVkRmlsdGVyIGV4dGVuZHMgQWJzdHJhY3RPdXRwdXRGaWx0ZXIge1xuICAvLyBFeGFtcGxlIGZvciBcIk5vIHZhbHVlIGZvciByZXF1aXJlZCB2YXJpYWJsZVwiIGVycm9yXG4gIC8vIOKVt1xuICAvLyDilIIgRXJyb3I6IE5vIHZhbHVlIGZvciByZXF1aXJlZCB2YXJpYWJsZVxuICAvLyDilIJcbiAgLy8g4pSCICAgb24gY2RrLnRmLmpzb24gbGluZSAzMSwgaW4gdmFyaWFibGU6XG4gIC8vIOKUgiAgIDMxOiAgICAgXCJ3aXRoLWRhc2hlc1wiOiB7XG4gIC8vIOKUglxuICAvLyDilIIgVGhlIHJvb3QgbW9kdWxlIGlucHV0IHZhcmlhYmxlIFwid2l0aC1kYXNoZXNcIiBpcyBub3Qgc2V0LCBhbmQgaGFzIG5vIGRlZmF1bHRcbiAgLy8g4pSCIHZhbHVlLiBVc2UgYSAtdmFyIG9yIC12YXItZmlsZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdG8gcHJvdmlkZSBhIHZhbHVlIGZvclxuICAvLyDilIIgdGhpcyB2YXJpYWJsZVxuICBwdWJsaWMgc3RhdGljIGNvbmRpdGlvbihpbnB1dDogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluZSA9IHN0cmlwQW5zaShpbnB1dCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbGluZS5pbmNsdWRlcyhcIkVycm9yOiBObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcIikgJiZcbiAgICAgIGxpbmUuaW5jbHVkZXMoXCJUaGUgcm9vdCBtb2R1bGUgaW5wdXQgdmFyaWFibGVcIilcbiAgICApO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgdHJhbnNmb3JtKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0YXJ0TWFya2VyID0gJ1RoZSByb290IG1vZHVsZSBpbnB1dCB2YXJpYWJsZSBcIic7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gbGluZS5zdWJzdHJpbmcoXG4gICAgICBsaW5lLmluZGV4T2Yoc3RhcnRNYXJrZXIpICsgc3RhcnRNYXJrZXIubGVuZ3RoLFxuICAgICAgbGluZS5pbmRleE9mKCdcIiBpcyBub3Qgc2V0JyksXG4gICAgKTtcblxuICAgIHJldHVybiBtaXNzaW5nVmFyaWFibGUodmFyaWFibGVOYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtQ2xpIGltcGxlbWVudHMgVGVycmFmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBvblN0ZG91dDogKFxuICAgIHN0YXRlTmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChzdGRvdXQ6IEJ1ZmZlciB8IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBvblN0ZGVycjogKFxuICAgIHN0YXRlTmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChzdGRlcnI6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YWNrOiBTeW50aGVzaXplZFN0YWNrLFxuICAgIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIgPSAoX3BoYXNlOiBzdHJpbmcsIF9maWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT5cbiAgICAgIChfc3Rkb3V0OiBzdHJpbmcsIF9pc0VyciA9IGZhbHNlKSA9PiB7fSxcbiAgKSB7XG4gICAgdGhpcy53b3JrZGlyID0gc3RhY2sud29ya2luZ0RpcmVjdG9yeTtcbiAgICB0aGlzLm9uU3Rkb3V0ID1cbiAgICAgIChwaGFzZTogc3RyaW5nLCBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT4gKHN0ZG91dDogQnVmZmVyIHwgc3RyaW5nKSA9PlxuICAgICAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKFxuICAgICAgICAgIHBoYXNlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgKShCdWZmZXIuaXNCdWZmZXIoc3Rkb3V0KSA/IHN0ZG91dC50b1N0cmluZygpIDogc3Rkb3V0KTtcbiAgICB0aGlzLm9uU3RkZXJyID1cbiAgICAgIChwaGFzZTogc3RyaW5nLCBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT5cbiAgICAgIChzdGRlcnI6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+XG4gICAgICAgIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIocGhhc2UsIGZpbHRlcikoc3RkZXJyLnRvU3RyaW5nKCksIHRydWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXQob3B0czoge1xuICAgIG5lZWRzVXBncmFkZTogYm9vbGVhbjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBtaWdyYXRlU3RhdGU6IGJvb2xlYW47XG4gICAgbmVlZHNMb2NrZmlsZVVwZGF0ZTogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2V0VXNlckFnZW50KCk7XG5cbiAgICBjb25zdCBhcmdzID0gW1wiaW5pdFwiXTtcbiAgICBpZiAob3B0cy5uZWVkc1VwZ3JhZGUpIHtcbiAgICAgIGFyZ3MucHVzaChcIi11cGdyYWRlXCIpO1xuICAgIH1cbiAgICBpZiAob3B0cy5ub0NvbG9yKSB7XG4gICAgICBhcmdzLnB1c2goXCItbm8tY29sb3JcIik7XG4gICAgfVxuICAgIGlmIChvcHRzLm1pZ3JhdGVTdGF0ZSkge1xuICAgICAgYXJncy5wdXNoKFwiLW1pZ3JhdGUtc3RhdGVcIik7XG4gICAgfVxuXG4gICAgbGV0IGluaXRDYW5Ob3RDb250aW51ZSA9IChfZXJyOiBhbnkpID0+IHt9O1xuICAgIGNvbnN0IHJlamVjdHNJZkluaXRDYW5Ob3RDb250aW51ZSA9IG5ldyBQcm9taXNlKChfcmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpbml0Q2FuTm90Q29udGludWUgPSByZWplY3Q7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGRvdXQgPSB0aGlzLm9uU3Rkb3V0KFwiaW5pdFwiKTtcbiAgICBjb25zdCB7IGFjdGlvbnMsIGV4aXRDb2RlIH0gPSBzcGF3bkludGVyYWN0aXZlKFxuICAgICAge1xuICAgICAgICBmaWxlOiB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgICBhcmdzLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudiBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgc3Rkb3V0KGRhdGEpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YS5pbmNsdWRlcyhcIlNob3VsZCBUZXJyYWZvcm0gbWlncmF0ZSB5b3VyIGV4aXN0aW5nIHN0YXRlP1wiKSB8fFxuICAgICAgICAgIGRhdGEuaW5jbHVkZXMoXCJEbyB5b3Ugd2FudCB0byBjb3B5IGV4aXN0aW5nIHN0YXRlIHRvIHRoZSBuZXcgYmFja2VuZFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUT0RPOiBUaGlzIG9ubHkgaGFwcGVucyB3aGVuIHRlcnJhZm9ybSBpcyBwYXNzZWQgdGhlIC1taWdyYXRlLXN0YXRlIGFueXdheSwgc28gdGhpcyBjaGVjayBpcyByZWR1bmRhbnRcbiAgICAgICAgICBpZiAob3B0cy5taWdyYXRlU3RhdGUpIHtcbiAgICAgICAgICAgIGFjdGlvbnMud3JpdGVMaW5lKFwieWVzXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICAgICAgICAgIGluaXRDYW5Ob3RDb250aW51ZShcbiAgICAgICAgICAgICAgXCJQbGVhc2UgcGFzcyB0aGUgLS1taWdyYXRlLXN0YXRlIGZsYWcgdG8gbWlncmF0ZSB5b3VyIHN0YXRlXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMuYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHtcbiAgICAgIGFjdGlvbnMuc3RvcCgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBleGl0Q29kZS50aGVuKChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRlcnJhZm9ybSBpbml0IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtwcm9ncmVzcywgcmVqZWN0c0lmSW5pdENhbk5vdENvbnRpbnVlXSk7XG5cbiAgICAvLyBUT0RPOiB0aGlzIG1pZ2h0IGhhdmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB3ZSdyZVxuICAgIC8vIHJ1bm5pbmcgYSByZW1vdGUgcGxhbiBvciBhIGxvY2FsIG9uZSAoc28gd2UgcnVuIGl0IGFsd2F5cyBmb3IgYWxsIHBsYXRmb3JtcylcbiAgICAvLyB3aGlsZSB3ZSdkIG9ubHkgbmVlZCBpdCBmb3IgcmVtb3RlIHBsYW5zXG4gICAgaWYgKG9wdHMubmVlZHNMb2NrZmlsZVVwZGF0ZSkge1xuICAgICAgYXdhaXQgZXhlYyhcbiAgICAgICAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICAgICAgW1xuICAgICAgICAgIFwicHJvdmlkZXJzXCIsXG4gICAgICAgICAgXCJsb2NrXCIsXG4gICAgICAgICAgXCItcGxhdGZvcm09bGludXhfYW1kNjRcIixcbiAgICAgICAgICAuLi4ob3B0cy5ub0NvbG9yID8gW1wiLW5vLWNvbG9yXCJdIDogW10pLFxuICAgICAgICBdLFxuICAgICAgICB7XG4gICAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBzaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgbm9Db2xvcjogb3B0cy5ub0NvbG9yLFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLm9uU3Rkb3V0KFwiaW5pdFwiKSxcbiAgICAgICAgdGhpcy5vblN0ZGVycihcImluaXRcIiksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzQ2xvdWRTdGFjaygpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXJzZWRTdGFjayA9IHRlcnJhZm9ybUpzb25TY2hlbWEucGFyc2UoXG4gICAgICBKU09OLnBhcnNlKHRoaXMuc3RhY2suY29udGVudCksXG4gICAgKTtcblxuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgcGFyc2VkU3RhY2sudGVycmFmb3JtPy5iYWNrZW5kPy5yZW1vdGUgfHwgcGFyc2VkU3RhY2sudGVycmFmb3JtPy5jbG91ZCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzSW1wb3J0cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXJzZWRTdGFjayA9IHRlcnJhZm9ybUpzb25TY2hlbWEucGFyc2UoXG4gICAgICBKU09OLnBhcnNlKHRoaXMuc3RhY2suY29udGVudCksXG4gICAgKTtcblxuICAgIHJldHVybiBCb29sZWFuKHBhcnNlZFN0YWNrLmltcG9ydCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxhbihvcHRzOiB7XG4gICAgZGVzdHJveTogYm9vbGVhbjtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBkZXN0cm95ID0gZmFsc2UsXG4gICAgICByZWZyZXNoT25seSA9IGZhbHNlLFxuICAgICAgcGFyYWxsZWxpc20gPSAtMSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgICBub0NvbG9yID0gZmFsc2UsXG4gICAgfSA9IG9wdHM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtcInBsYW5cIiwgXCItaW5wdXQ9ZmFsc2VcIl07XG5cbiAgICBjb25zdCBnZW5lcmF0ZWRDb25maWdGaWxlID0gcGF0aC5qb2luKFxuICAgICAgdGhpcy53b3JrZGlyLFxuICAgICAgR0VORVJBVEVfQ09ORklHX09VVF9GSUxFLFxuICAgICk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZ2VuZXJhdGVkQ29uZmlnRmlsZSkpIHtcbiAgICAgIGZzLnJlbW92ZShnZW5lcmF0ZWRDb25maWdGaWxlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzSW1wb3J0cykge1xuICAgICAgb3B0aW9ucy5wdXNoKGAtZ2VuZXJhdGUtY29uZmlnLW91dD0ke0dFTkVSQVRFX0NPTkZJR19PVVRfRklMRX1gKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzQ2xvdWRTdGFjaykge1xuICAgICAgY29uc3QgcGxhbkZpbGUgPSBcInBsYW5cIjtcbiAgICAgIG9wdGlvbnMucHVzaChcIi1vdXRcIiwgcGxhbkZpbGUpO1xuICAgIH1cblxuICAgIGlmIChkZXN0cm95KSB7XG4gICAgICBvcHRpb25zLnB1c2goXCItZGVzdHJveVwiKTtcbiAgICB9XG4gICAgaWYgKHJlZnJlc2hPbmx5KSB7XG4gICAgICBvcHRpb25zLnB1c2goXCItcmVmcmVzaC1vbmx5XCIpO1xuICAgIH1cbiAgICBpZiAocGFyYWxsZWxpc20gPiAtMSkge1xuICAgICAgb3B0aW9ucy5wdXNoKGAtcGFyYWxsZWxpc209JHtwYXJhbGxlbGlzbX1gKTtcbiAgICB9XG4gICAgaWYgKG5vQ29sb3IpIHtcbiAgICAgIG9wdGlvbnMucHVzaChcIi1uby1jb2xvclwiKTtcbiAgICB9XG5cbiAgICB2YXJzLmZvckVhY2goKHYpID0+IG9wdGlvbnMucHVzaChgLXZhcj0ke3Z9YCkpO1xuICAgIHZhckZpbGVzLmZvckVhY2goKHYpID0+IG9wdGlvbnMucHVzaChgLXZhci1maWxlPSR7dn1gKSk7XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgRXhlY3V0aW5nICR7dGVycmFmb3JtQmluYXJ5TmFtZX0gJHtvcHRpb25zLmpvaW4oXCIgXCIpfSBpbiAke3RoaXMud29ya2Rpcn1gLFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLnNldFVzZXJBZ2VudCgpO1xuXG4gICAgYXdhaXQgZXhlYyhcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICBvcHRpb25zLFxuICAgICAge1xuICAgICAgICBjd2Q6IHRoaXMud29ya2RpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICBub0NvbG9yLFxuICAgICAgfSxcbiAgICAgIHRoaXMub25TdGRvdXQoXCJwbGFuXCIsIFtWYXJpYWJsZVJlcXVpcmVkRmlsdGVyXSksXG4gICAgICB0aGlzLm9uU3RkZXJyKFwicGxhblwiLCBbVmFyaWFibGVSZXF1aXJlZEZpbHRlcl0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwbG95KFxuICAgIHtcbiAgICAgIGF1dG9BcHByb3ZlID0gZmFsc2UsXG4gICAgICByZWZyZXNoT25seSA9IGZhbHNlLFxuICAgICAgbm9Db2xvciA9IGZhbHNlLFxuICAgICAgcGFyYWxsZWxpc20gPSAtMSxcbiAgICAgIGV4dHJhT3B0aW9ucyA9IFtdLFxuICAgICAgdmFycyA9IFtdLFxuICAgICAgdmFyRmlsZXMgPSBbXSxcbiAgICB9LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+IHtcbiAgICBhd2FpdCB0aGlzLnNldFVzZXJBZ2VudCgpO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlcnZpY2UoXCJkZXBsb3lcIiwgY2FsbGJhY2ssIChpbnNwZWN0KSA9PlxuICAgICAgY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlKFxuICAgICAgICB7XG4gICAgICAgICAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICAgICAgICB3b3JrZGlyOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgcmVmcmVzaE9ubHksXG4gICAgICAgICAgbm9Db2xvcixcbiAgICAgICAgICBhdXRvQXBwcm92ZSxcbiAgICAgICAgICBwYXJhbGxlbGlzbSxcbiAgICAgICAgICBleHRyYU9wdGlvbnMsXG4gICAgICAgICAgdmFycyxcbiAgICAgICAgICB2YXJGaWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgaW5zcGVjdCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXN0cm95KFxuICAgIHtcbiAgICAgIGF1dG9BcHByb3ZlID0gZmFsc2UsXG4gICAgICBwYXJhbGxlbGlzbSA9IC0xLFxuICAgICAgbm9Db2xvciA9IGZhbHNlLFxuICAgICAgZXh0cmFPcHRpb25zID0gW10sXG4gICAgICB2YXJzID0gW10sXG4gICAgICB2YXJGaWxlcyA9IFtdLFxuICAgIH0sXG4gICAgY2FsbGJhY2s6IChzdGF0ZTogVGVycmFmb3JtRGVwbG95U3RhdGUpID0+IHZvaWQsXG4gICk6IFByb21pc2U8eyBjYW5jZWxsZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGF3YWl0IHRoaXMuc2V0VXNlckFnZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VydmljZShcImRlc3Ryb3lcIiwgY2FsbGJhY2ssIChpbnNwZWN0KSA9PlxuICAgICAgY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZShcbiAgICAgICAge1xuICAgICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgICAgd29ya2RpcjogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGF1dG9BcHByb3ZlLFxuICAgICAgICAgIHBhcmFsbGVsaXNtLFxuICAgICAgICAgIG5vQ29sb3IsXG4gICAgICAgICAgZXh0cmFPcHRpb25zLFxuICAgICAgICAgIHZhcnMsXG4gICAgICAgICAgdmFyRmlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGluc3BlY3QsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVNlcnZpY2UoXG4gICAgdHlwZTogXCJkZXBsb3lcIiB8IFwiZGVzdHJveVwiLFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICAgIGNyZWF0ZVNlcnZpY2U6IChpbnNwZWN0OiBEZXBsb3lJbnNwZWN0aW9uSGFuZGxlcikgPT4gRGVwbG95QWN0b3IsXG4gICk6IFByb21pc2U8eyBjYW5jZWxsZWQ6IGJvb2xlYW4gfT4ge1xuICAgIC8vIEV2ZW50cyByZWFjaCB1cyB0aHJvdWdoIGluc3BlY3Rpb24sIHdoaWNoIGZpcmVzIGZvciB0aGUgd2hvbGUgYWN0b3IgdHJlZS4gRmlsdGVyIHRvIHRoZSByb290IGRlcGxveSBhY3RvclxuICAgIC8vIChpdHMgc2Vzc2lvbklkIGVxdWFscyB0aGUgdHJlZSdzIHJvb3RJZCkgc28gd2UgZG9uJ3QgcmVhY3QgdG8gdGhlIGludm9rZWQgcHR5IGNoaWxkJ3Mgb3duIGV2ZW50cy4gQ29tcGFyaW5nXG4gICAgLy8gc2Vzc2lvbklkIHJhdGhlciB0aGFuIHRoZSBhY3RvciByZWYga2VlcHMgdGhpcyBzZWxmLWNvbnRhaW5lZDogaW5zcGVjdGlvbiBmaXJlcyBkdXJpbmcgc3RhcnR1cCwgYmVmb3JlIHRoZVxuICAgIC8vIGBzZXJ2aWNlYCBiaW5kaW5nIGJlbG93IGlzIGluaXRpYWxpemVkLlxuICAgIGNvbnN0IGluc3BlY3Q6IERlcGxveUluc3BlY3Rpb25IYW5kbGVyID0gKGluc3BlY3Rpb25FdmVudCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpbnNwZWN0aW9uRXZlbnQudHlwZSAhPT0gXCJAeHN0YXRlLmV2ZW50XCIgfHxcbiAgICAgICAgaW5zcGVjdGlvbkV2ZW50LmFjdG9yUmVmLnNlc3Npb25JZCAhPT0gaW5zcGVjdGlvbkV2ZW50LnJvb3RJZFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXZlbnQgPSBpbnNwZWN0aW9uRXZlbnQuZXZlbnQ7XG4gICAgICBsb2dnZXIudHJhY2UoXG4gICAgICAgIGBUZXJyYWZvcm0gQ0xJIHN0YXRlIG1hY2hpbmUgZXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQpfWAsXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiT1VUUFVUX1JFQ0VJVkVEXCIpKVxuICAgICAgICB0aGlzLm9uU3Rkb3V0KHR5cGUpKGV2ZW50Lm91dHB1dCk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIkFQUFJPVkVEX0VYVEVSTkFMTFlcIikpXG4gICAgICAgIGNhbGxiYWNrKHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiLCBhcHByb3ZlZDogdHJ1ZSB9KTtcbiAgICAgIGVsc2UgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiUkVKRUNURURfRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soeyB0eXBlOiBcImV4dGVybmFsIGFwcHJvdmFsIHJlcGx5XCIsIGFwcHJvdmVkOiBmYWxzZSB9KTtcbiAgICAgIGVsc2UgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiT1ZFUlJJRERFTl9FWFRFUk5BTExZXCIpKVxuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdHlwZTogXCJleHRlcm5hbCBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiLFxuICAgICAgICAgIG92ZXJyaWRkZW46IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAoaXNEZXBsb3lFdmVudChldmVudCwgXCJPVkVSUklERV9SRUpFQ1RFRF9FWFRFUk5BTExZXCIpKVxuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdHlwZTogXCJleHRlcm5hbCBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiLFxuICAgICAgICAgIG92ZXJyaWRkZW46IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VydmljZSA9IGNyZWF0ZVNlcnZpY2UoaW5zcGVjdCk7XG5cbiAgICAvLyBUcmFuc2l0aW9ucyBjb21lIGZyb20gdGhlIGFjdG9yJ3Mgb3duIHN1YnNjcmlwdGlvbiwgd2hpY2ggeWllbGRzIHR5cGVkIHNuYXBzaG90cyBmb3IgdGhlIHJvb3QgYWN0b3Igb25seS5cbiAgICBsZXQgcHJldmlvdXNTdGF0ZTogRGVwbG95U25hcHNob3RbXCJ2YWx1ZVwiXSA9IFwiaWRsZVwiO1xuICAgIGNvbnN0IGhhbmRsZVNuYXBzaG90ID0gKHNuYXBzaG90OiBEZXBsb3lTbmFwc2hvdCkgPT4ge1xuICAgICAgLy8gT25seSBzZW5kIHVwZGF0ZXMgb24gYWN0dWFsIHN0YXRlIGNoYW5nZTsgYSBzbmFwc2hvdCBpcyBlbWl0dGVkIGV2ZW4gd2hlbiBvbmx5IGFuIGV2ZW50IGhhcHBlbmVkLlxuICAgICAgaWYgKHNuYXBzaG90Lm1hdGNoZXMocHJldmlvdXNTdGF0ZSkpIHJldHVybjtcblxuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIHN0YXRlIHRyYW5zaXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAgKX0gPT4gJHtKU09OLnN0cmluZ2lmeShzbmFwc2hvdC52YWx1ZSl9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzbmFwc2hvdC5tYXRjaGVzKHsgcnVubmluZzogXCJhd2FpdGluZ19hcHByb3ZhbFwiIH0pKSB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIGFwcHJvdmFsXCIsXG4gICAgICAgICAgYXBwcm92ZTogKCkgPT4gc2VydmljZS5zZW5kKHsgdHlwZTogXCJBUFBST1ZFXCIgfSksXG4gICAgICAgICAgcmVqZWN0OiAoKSA9PiBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlJFSkVDVFwiIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoc25hcHNob3QubWF0Y2hlcyh7IHJ1bm5pbmc6IFwiYXdhaXRpbmdfc2VudGluZWxfb3ZlcnJpZGVcIiB9KSkge1xuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiLFxuICAgICAgICAgIG92ZXJyaWRlOiAoKSA9PiBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIk9WRVJSSURFXCIgfSksXG4gICAgICAgICAgcmVqZWN0OiAoKSA9PiBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlJFSkVDVF9PVkVSUklERVwiIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoc25hcHNob3QubWF0Y2hlcyh7IHJ1bm5pbmc6IFwicHJvY2Vzc2luZ1wiIH0pKSB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiBcInJ1bm5pbmdcIixcbiAgICAgICAgICBjYW5jZWxsZWQ6IEJvb2xlYW4oc25hcHNob3QuY29udGV4dC5jYW5jZWxsZWQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzU3RhdGUgPSBzbmFwc2hvdC52YWx1ZTtcbiAgICB9O1xuXG4gICAgc2VydmljZS5zdWJzY3JpYmUoaGFuZGxlU25hcHNob3QpO1xuICAgIGhhbmRsZVNuYXBzaG90KHNlcnZpY2UuZ2V0U25hcHNob3QoKSk7XG5cbiAgICAvLyBzdG9wIHRlcnJhZm9ybSBhcHBseSBpZiBzaWduYWxlZCBhcyBzdWNoIGZyb20gdGhlIG91dHNpZGUgKGUuZy4gdmlhIGN0cmwrYylcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNlcnZpY2Uuc2VuZCh7IHR5cGU6IFwiU1RPUFwiIH0pO1xuICAgICAgfSxcbiAgICAgIHsgb25jZTogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICBjb25zdCBzbmFwc2hvdCA9IGF3YWl0IHdhaXRGb3IoXG4gICAgICBzZXJ2aWNlLFxuICAgICAgKHNuYXBzaG90KSA9PiBzbmFwc2hvdC5zdGF0dXMgPT09IFwiZG9uZVwiLFxuICAgICAge1xuICAgICAgICB0aW1lb3V0OiBJbmZpbml0eSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIFRoZSBmaW5hbCBzdGF0ZSBwcm9kdWNlcyB0aGUgdGVycmFmb3JtIGV4aXQgY29kZSBhcyB0aGUgbWFjaGluZSdzIG91dHB1dC5cbiAgICBjb25zdCBleGl0Q29kZSA9IHNuYXBzaG90Lm91dHB1dD8uZXhpdENvZGU7XG5cbiAgICBsb2dnZXIudHJhY2UoXG4gICAgICBgSW52b2tpbmcgVGVycmFmb3JtIENMSSBmb3IgJHt0eXBlfSBkb25lIChzdGF0ZSBtYWNoaW5lIHJlYWNoZWQgZmluYWwgc3RhdGUpLiBMYXN0IGV4aXQgY29kZTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICApfS4gQ29udGV4dDogJHtKU09OLnN0cmluZ2lmeShzbmFwc2hvdC5jb250ZXh0KX1gLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBleGl0Q29kZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBleGl0Q29kZSAhPT0gMCAmJlxuICAgICAgIXNuYXBzaG90LmNvbnRleHQuY2FuY2VsbGVkIC8vIGRvbid0IGZhaWwgaWYgd2UgY2FuY2VsbGVkIHRoZSBydW5cbiAgICApIHtcbiAgICAgIHRocm93IGBJbnZva2luZyBUZXJyYWZvcm0gQ0xJIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2FuY2VsbGVkOiBCb29sZWFuKHNuYXBzaG90LmNvbnRleHQuY2FuY2VsbGVkKSB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcIi12XCJdLFxuICAgICAgICB7XG4gICAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBzaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcInZlcnNpb25cIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJ2ZXJzaW9uXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUZXJyYWZvcm0gQ0xJIG5vdCBwcmVzZW50IC0gUGxlYXNlIGluc3RhbGwgYSBjdXJyZW50IHZlcnNpb24gaHR0cHM6Ly9sZWFybi5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbC5odG1sXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvdXRwdXQoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IFRlcnJhZm9ybU91dHB1dCB9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICBbXCJvdXRwdXRcIiwgXCItanNvblwiXSxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgb3V0cHV0IGhlcmUgc2luY2Ugd2UgdXNlIGl0IGxhdGVyIG9uXG4gICAgICAoKSA9PiB7fSxcbiAgICAgIHRoaXMub25TdGRlcnIoXCJvdXRwdXRcIiksXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0ZXJyYWZvcm0gb3V0cHV0OiAke2V9LiBUaGUgb3V0cHV0IHdhcyAnJHtvdXRwdXR9J2AsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyQWdlbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVhZCB0aGUgY2RrdGYgdmVyc2lvbiBmcm9tIHRoZSAnY2RrLnRmLmpzb24nIGZpbGVcbiAgICAvLyBhbmQgc2V0IHRoZSB1c2VyIGFnZW50LlxuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCByZWFkQ0RLVEZWZXJzaW9uKHRoaXMud29ya2Rpcik7XG4gICAgaWYgKHZlcnNpb24gIT0gXCJcIikge1xuICAgICAgcHJvY2Vzcy5lbnYuVEZfQVBQRU5EX1VTRVJfQUdFTlQgPVxuICAgICAgICBcImNka3RuL1wiICtcbiAgICAgICAgdmVyc2lvbiArXG4gICAgICAgIFwiICgraHR0cHM6Ly9naXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbilcIjtcbiAgICB9XG4gIH1cblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIGNsZWFuIGFueXRoaW5nIHVwIGZvciBhIHJ1bm5pbmcgZXhlY3V0aW9uIGluIHRoZSBDTEkgc2luY2UgdGhlcmUgaXMgbm8gbGVmdC1vdmVyIHN0YXRlIGluIGNvbnRyYXN0IHRvIGFuIG9wZW4gVGVycmFmb3JtIENsb3VkIHJ1blxuICBwdWJsaWMgYXN5bmMgYWJvcnQoKSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUoXG4gIHdvcmtpbmdEaXI6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoZ2VuZXJhdGVkQ29uZmlnUGF0aCwgXCJ1dGYtOFwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKHdvcmtpbmdEaXI6IHN0cmluZykge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ1BhdGgpKSB7XG4gICAgZnMudW5saW5rU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKTtcbiAgfVxufVxuIl19