@cloudsnorkel/cdk-github-runners 0.11.3 → 0.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.gitattributes +1 -0
  2. package/.jsii +8 -8
  3. package/assets/delete-failed-runner.lambda/index.js +24 -32
  4. package/assets/idle-runner-repear.lambda/index.js +29 -37
  5. package/assets/image-builders/aws-image-builder/delete-ami.lambda/index.js +14 -28
  6. package/assets/image-builders/aws-image-builder/filter-failed-builds.lambda/index.js +4 -14
  7. package/assets/image-builders/aws-image-builder/reaper.lambda/index.js +18 -30
  8. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +10 -16
  9. package/assets/providers/ami-root-device.lambda/index.js +12 -23
  10. package/assets/providers/build-image.lambda/index.js +16 -24
  11. package/assets/providers/update-lambda.lambda/index.js +5 -15
  12. package/assets/setup.lambda/index.js +4 -4
  13. package/assets/status.lambda/index.js +48 -55
  14. package/assets/token-retriever.lambda/index.js +24 -32
  15. package/assets/webhook-handler.lambda/index.js +32 -42
  16. package/lib/access.js +1 -1
  17. package/lib/delete-failed-runner-function.js +2 -2
  18. package/lib/idle-runner-repear-function.js +2 -2
  19. package/lib/idle-runner-repear.lambda.js +6 -6
  20. package/lib/image-builders/api.js +1 -1
  21. package/lib/image-builders/aws-image-builder/builder.js +1 -1
  22. package/lib/image-builders/aws-image-builder/delete-ami-function.js +2 -2
  23. package/lib/image-builders/aws-image-builder/delete-ami.lambda.js +11 -11
  24. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  25. package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
  26. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  27. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  28. package/lib/image-builders/aws-image-builder/filter-failed-builds-function.js +2 -2
  29. package/lib/image-builders/aws-image-builder/filter-failed-builds.lambda.js +5 -5
  30. package/lib/image-builders/aws-image-builder/reaper-function.js +2 -2
  31. package/lib/image-builders/aws-image-builder/reaper.lambda.js +15 -13
  32. package/lib/image-builders/aws-image-builder/versioner-function.js +2 -2
  33. package/lib/image-builders/aws-image-builder/versioner.lambda.js +9 -9
  34. package/lib/image-builders/codebuild-deprecated.js +1 -1
  35. package/lib/image-builders/components.js +1 -1
  36. package/lib/image-builders/static.js +1 -1
  37. package/lib/lambda-helpers.js +5 -5
  38. package/lib/providers/ami-root-device-function.js +2 -2
  39. package/lib/providers/ami-root-device.lambda.js +8 -7
  40. package/lib/providers/build-image-function.js +2 -2
  41. package/lib/providers/build-image.lambda.js +15 -13
  42. package/lib/providers/codebuild.js +2 -2
  43. package/lib/providers/common.js +3 -3
  44. package/lib/providers/ec2.js +2 -2
  45. package/lib/providers/ecs.js +1 -1
  46. package/lib/providers/fargate.js +2 -2
  47. package/lib/providers/lambda.js +2 -2
  48. package/lib/providers/update-lambda-function.js +2 -2
  49. package/lib/providers/update-lambda.lambda.js +6 -6
  50. package/lib/runner.js +5 -2
  51. package/lib/secrets.js +1 -1
  52. package/lib/setup-function.js +2 -2
  53. package/lib/status-function.js +2 -2
  54. package/lib/status.lambda.js +20 -17
  55. package/lib/token-retriever-function.js +2 -2
  56. package/lib/webhook-handler-function.js +2 -2
  57. package/lib/webhook-handler.lambda.js +5 -5
  58. package/package.json +17 -9
@@ -12865,7 +12865,6 @@ var require_cjs = __commonJS({
12865
12865
  };
12866
12866
  var AC = globalThis.AbortController;
12867
12867
  var AS = globalThis.AbortSignal;
12868
- var _a;
12869
12868
  if (typeof AC === "undefined") {
12870
12869
  AS = class AbortSignal {
12871
12870
  onabort;
@@ -12882,7 +12881,6 @@ var require_cjs = __commonJS({
12882
12881
  }
12883
12882
  signal = new AS();
12884
12883
  abort(reason) {
12885
- var _a2, _b;
12886
12884
  if (this.signal.aborted)
12887
12885
  return;
12888
12886
  this.signal.reason = reason;
@@ -12890,10 +12888,10 @@ var require_cjs = __commonJS({
12890
12888
  for (const fn of this.signal._onabort) {
12891
12889
  fn(reason);
12892
12890
  }
12893
- (_b = (_a2 = this.signal).onabort) == null ? void 0 : _b.call(_a2, reason);
12891
+ this.signal.onabort?.(reason);
12894
12892
  }
12895
12893
  };
12896
- let printACPolyfillWarning = ((_a = PROCESS.env) == null ? void 0 : _a.LRU_CACHE_IGNORE_AC_WARNING) !== "1";
12894
+ let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== "1";
12897
12895
  const warnACPolyfill = () => {
12898
12896
  if (!printACPolyfillWarning)
12899
12897
  return;
@@ -13548,7 +13546,6 @@ var require_cjs = __commonJS({
13548
13546
  * {@link LRUCache#delete}
13549
13547
  */
13550
13548
  set(k, v, setOptions = {}) {
13551
- var _a2, _b, _c;
13552
13549
  if (v === void 0) {
13553
13550
  this.delete(k);
13554
13551
  return this;
@@ -13586,10 +13583,10 @@ var require_cjs = __commonJS({
13586
13583
  oldVal.__abortController.abort(new Error("replaced"));
13587
13584
  } else if (!noDisposeOnSet) {
13588
13585
  if (this.#hasDispose) {
13589
- (_a2 = this.#dispose) == null ? void 0 : _a2.call(this, oldVal, k, "set");
13586
+ this.#dispose?.(oldVal, k, "set");
13590
13587
  }
13591
13588
  if (this.#hasDisposeAfter) {
13592
- (_b = this.#disposed) == null ? void 0 : _b.push([oldVal, k, "set"]);
13589
+ this.#disposed?.push([oldVal, k, "set"]);
13593
13590
  }
13594
13591
  }
13595
13592
  this.#removeItemSize(index);
@@ -13618,8 +13615,8 @@ var require_cjs = __commonJS({
13618
13615
  if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {
13619
13616
  const dt = this.#disposed;
13620
13617
  let task;
13621
- while (task = dt == null ? void 0 : dt.shift()) {
13622
- (_c = this.#disposeAfter) == null ? void 0 : _c.call(this, ...task);
13618
+ while (task = dt?.shift()) {
13619
+ this.#disposeAfter?.(...task);
13623
13620
  }
13624
13621
  }
13625
13622
  return this;
@@ -13629,7 +13626,6 @@ var require_cjs = __commonJS({
13629
13626
  * `undefined` if cache is empty.
13630
13627
  */
13631
13628
  pop() {
13632
- var _a2;
13633
13629
  try {
13634
13630
  while (this.#size) {
13635
13631
  const val = this.#valList[this.#head];
@@ -13646,14 +13642,13 @@ var require_cjs = __commonJS({
13646
13642
  if (this.#hasDisposeAfter && this.#disposed) {
13647
13643
  const dt = this.#disposed;
13648
13644
  let task;
13649
- while (task = dt == null ? void 0 : dt.shift()) {
13650
- (_a2 = this.#disposeAfter) == null ? void 0 : _a2.call(this, ...task);
13645
+ while (task = dt?.shift()) {
13646
+ this.#disposeAfter?.(...task);
13651
13647
  }
13652
13648
  }
13653
13649
  }
13654
13650
  }
13655
13651
  #evict(free) {
13656
- var _a2, _b;
13657
13652
  const head = this.#head;
13658
13653
  const k = this.#keyList[head];
13659
13654
  const v = this.#valList[head];
@@ -13661,10 +13656,10 @@ var require_cjs = __commonJS({
13661
13656
  v.__abortController.abort(new Error("evicted"));
13662
13657
  } else if (this.#hasDispose || this.#hasDisposeAfter) {
13663
13658
  if (this.#hasDispose) {
13664
- (_a2 = this.#dispose) == null ? void 0 : _a2.call(this, v, k, "evict");
13659
+ this.#dispose?.(v, k, "evict");
13665
13660
  }
13666
13661
  if (this.#hasDisposeAfter) {
13667
- (_b = this.#disposed) == null ? void 0 : _b.push([v, k, "evict"]);
13662
+ this.#disposed?.push([v, k, "evict"]);
13668
13663
  }
13669
13664
  }
13670
13665
  this.#removeItemSize(head);
@@ -13739,7 +13734,7 @@ var require_cjs = __commonJS({
13739
13734
  }
13740
13735
  const ac = new AC();
13741
13736
  const { signal } = options;
13742
- signal == null ? void 0 : signal.addEventListener("abort", () => ac.abort(signal.reason), {
13737
+ signal?.addEventListener("abort", () => ac.abort(signal.reason), {
13743
13738
  signal: ac.signal
13744
13739
  });
13745
13740
  const fetchOpts = {
@@ -13810,8 +13805,7 @@ var require_cjs = __commonJS({
13810
13805
  }
13811
13806
  };
13812
13807
  const pcall = (res, rej) => {
13813
- var _a2;
13814
- const fmp = (_a2 = this.#fetchMethod) == null ? void 0 : _a2.call(this, k, v, fetchOpts);
13808
+ const fmp = this.#fetchMethod?.(k, v, fetchOpts);
13815
13809
  if (fmp && fmp instanceof Promise) {
13816
13810
  fmp.then((v2) => res(v2), rej);
13817
13811
  }
@@ -14000,7 +13994,6 @@ var require_cjs = __commonJS({
14000
13994
  * Returns true if the key was deleted, false otherwise.
14001
13995
  */
14002
13996
  delete(k) {
14003
- var _a2, _b, _c, _d;
14004
13997
  let deleted = false;
14005
13998
  if (this.#size !== 0) {
14006
13999
  const index = this.#keyMap.get(k);
@@ -14015,10 +14008,10 @@ var require_cjs = __commonJS({
14015
14008
  v.__abortController.abort(new Error("deleted"));
14016
14009
  } else if (this.#hasDispose || this.#hasDisposeAfter) {
14017
14010
  if (this.#hasDispose) {
14018
- (_a2 = this.#dispose) == null ? void 0 : _a2.call(this, v, k, "delete");
14011
+ this.#dispose?.(v, k, "delete");
14019
14012
  }
14020
14013
  if (this.#hasDisposeAfter) {
14021
- (_b = this.#disposed) == null ? void 0 : _b.push([v, k, "delete"]);
14014
+ this.#disposed?.push([v, k, "delete"]);
14022
14015
  }
14023
14016
  }
14024
14017
  this.#keyMap.delete(k);
@@ -14037,11 +14030,11 @@ var require_cjs = __commonJS({
14037
14030
  }
14038
14031
  }
14039
14032
  }
14040
- if (this.#hasDisposeAfter && ((_c = this.#disposed) == null ? void 0 : _c.length)) {
14033
+ if (this.#hasDisposeAfter && this.#disposed?.length) {
14041
14034
  const dt = this.#disposed;
14042
14035
  let task;
14043
- while (task = dt == null ? void 0 : dt.shift()) {
14044
- (_d = this.#disposeAfter) == null ? void 0 : _d.call(this, ...task);
14036
+ while (task = dt?.shift()) {
14037
+ this.#disposeAfter?.(...task);
14045
14038
  }
14046
14039
  }
14047
14040
  return deleted;
@@ -14050,7 +14043,6 @@ var require_cjs = __commonJS({
14050
14043
  * Clear the cache entirely, throwing away all values.
14051
14044
  */
14052
14045
  clear() {
14053
- var _a2, _b, _c;
14054
14046
  for (const index of this.#rindexes({ allowStale: true })) {
14055
14047
  const v = this.#valList[index];
14056
14048
  if (this.#isBackgroundFetch(v)) {
@@ -14058,10 +14050,10 @@ var require_cjs = __commonJS({
14058
14050
  } else {
14059
14051
  const k = this.#keyList[index];
14060
14052
  if (this.#hasDispose) {
14061
- (_a2 = this.#dispose) == null ? void 0 : _a2.call(this, v, k, "delete");
14053
+ this.#dispose?.(v, k, "delete");
14062
14054
  }
14063
14055
  if (this.#hasDisposeAfter) {
14064
- (_b = this.#disposed) == null ? void 0 : _b.push([v, k, "delete"]);
14056
+ this.#disposed?.push([v, k, "delete"]);
14065
14057
  }
14066
14058
  }
14067
14059
  }
@@ -14083,8 +14075,8 @@ var require_cjs = __commonJS({
14083
14075
  if (this.#hasDisposeAfter && this.#disposed) {
14084
14076
  const dt = this.#disposed;
14085
14077
  let task;
14086
- while (task = dt == null ? void 0 : dt.shift()) {
14087
- (_c = this.#disposeAfter) == null ? void 0 : _c.call(this, ...task);
14078
+ while (task = dt?.shift()) {
14079
+ this.#disposeAfter?.(...task);
14088
14080
  }
14089
14081
  }
14090
14082
  }
@@ -17498,20 +17490,20 @@ __export(webhook_handler_lambda_exports, {
17498
17490
  });
17499
17491
  module.exports = __toCommonJS(webhook_handler_lambda_exports);
17500
17492
  var crypto = __toESM(require("crypto"));
17501
- var AWS2 = __toESM(require("aws-sdk"));
17493
+ var import_client_sfn = require("@aws-sdk/client-sfn");
17502
17494
 
17503
17495
  // src/lambda-github.ts
17504
17496
  var import_auth_app = __toESM(require_dist_node12());
17505
17497
  var import_rest = __toESM(require_dist_node19());
17506
17498
 
17507
17499
  // src/lambda-helpers.ts
17508
- var AWS = __toESM(require("aws-sdk"));
17509
- var sm = new AWS.SecretsManager();
17500
+ var import_client_secrets_manager = require("@aws-sdk/client-secrets-manager");
17501
+ var sm = new import_client_secrets_manager.SecretsManagerClient();
17510
17502
  async function getSecretValue(arn) {
17511
17503
  if (!arn) {
17512
17504
  throw new Error("Missing secret ARN");
17513
17505
  }
17514
- const secret = await sm.getSecretValue({ SecretId: arn }).promise();
17506
+ const secret = await sm.send(new import_client_secrets_manager.GetSecretValueCommand({ SecretId: arn }));
17515
17507
  if (!secret.SecretString) {
17516
17508
  throw new Error(`No SecretString in ${arn}`);
17517
17509
  }
@@ -17580,7 +17572,7 @@ async function getOctokit(installationId) {
17580
17572
  }
17581
17573
 
17582
17574
  // src/webhook-handler.lambda.ts
17583
- var sf = new AWS2.StepFunctions();
17575
+ var sf = new import_client_sfn.SFNClient();
17584
17576
  function getHeader(event, header) {
17585
17577
  for (const headerName of Object.keys(event.headers)) {
17586
17578
  if (headerName.toLowerCase() === header.toLowerCase()) {
@@ -17610,15 +17602,14 @@ function verifyBody(event, secret) {
17610
17602
  return body.toString();
17611
17603
  }
17612
17604
  async function isDeploymentPending(payload) {
17613
- var _a, _b, _c;
17614
- const statusesUrl = (_a = payload.deployment) == null ? void 0 : _a.statuses_url;
17605
+ const statusesUrl = payload.deployment?.statuses_url;
17615
17606
  if (statusesUrl === void 0) {
17616
17607
  return false;
17617
17608
  }
17618
17609
  try {
17619
- const { octokit } = await getOctokit((_b = payload.installation) == null ? void 0 : _b.id);
17610
+ const { octokit } = await getOctokit(payload.installation?.id);
17620
17611
  const statuses = await octokit.request(statusesUrl);
17621
- return ((_c = statuses.data[0]) == null ? void 0 : _c.state) === "waiting";
17612
+ return statuses.data[0]?.state === "waiting";
17622
17613
  } catch (e) {
17623
17614
  console.error("Unable to check deployment. Try adding deployment read permission.", e);
17624
17615
  return false;
@@ -17636,7 +17627,6 @@ function matchLabelsToProvider(labels) {
17636
17627
  return void 0;
17637
17628
  }
17638
17629
  async function handler(event) {
17639
- var _a;
17640
17630
  if (!process.env.WEBHOOK_SECRET_ARN || !process.env.STEP_FUNCTION_ARN || !process.env.SUPPORTED_LABELS) {
17641
17631
  throw new Error("Missing environment variables");
17642
17632
  }
@@ -17707,17 +17697,17 @@ async function handler(event) {
17707
17697
  repo: payload.repository.name,
17708
17698
  jobId: payload.workflow_job.id,
17709
17699
  jobUrl: payload.workflow_job.html_url,
17710
- installationId: ((_a = payload.installation) == null ? void 0 : _a.id) ?? -1,
17700
+ installationId: payload.installation?.id ?? -1,
17711
17701
  // always pass value because step function can't handle missing input
17712
17702
  labels: payload.workflow_job.labels,
17713
17703
  provider
17714
17704
  });
17715
- const execution = await sf.startExecution({
17705
+ const execution = await sf.send(new import_client_sfn.StartExecutionCommand({
17716
17706
  stateMachineArn: process.env.STEP_FUNCTION_ARN,
17717
17707
  input,
17718
17708
  // name is not random so multiple execution of this webhook won't cause multiple builders to start
17719
17709
  name: executionName
17720
- }).promise();
17710
+ }));
17721
17711
  console.log(`Started ${execution.executionArn}`);
17722
17712
  console.log(input);
17723
17713
  return {
package/lib/access.js CHANGED
@@ -58,7 +58,7 @@ class LambdaAccess {
58
58
  }
59
59
  }
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- LambdaAccess[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.LambdaAccess", version: "0.11.3" };
61
+ LambdaAccess[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.LambdaAccess", version: "0.11.4" };
62
62
  exports.LambdaAccess = LambdaAccess;
63
63
  /**
64
64
  * @internal
@@ -12,7 +12,7 @@ class DeleteFailedRunnerFunction extends lambda.Function {
12
12
  super(scope, id, {
13
13
  description: 'src/delete-failed-runner.lambda.ts',
14
14
  ...props,
15
- runtime: new lambda.Runtime('nodejs16.x', lambda.RuntimeFamily.NODEJS),
15
+ runtime: new lambda.Runtime('nodejs18.x', lambda.RuntimeFamily.NODEJS),
16
16
  handler: 'index.handler',
17
17
  code: lambda.Code.fromAsset(path.join(__dirname, '../assets/delete-failed-runner.lambda')),
18
18
  });
@@ -20,4 +20,4 @@ class DeleteFailedRunnerFunction extends lambda.Function {
20
20
  }
21
21
  }
22
22
  exports.DeleteFailedRunnerFunction = DeleteFailedRunnerFunction;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWZhaWxlZC1ydW5uZXItZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVsZXRlLWZhaWxlZC1ydW5uZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUM7UUFDL0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsb0NBQW9DO1lBQ2pELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBWEQsZ0VBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLmpzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcHMgZm9yIERlbGV0ZUZhaWxlZFJ1bm5lckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlRmFpbGVkUnVubmVyRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL2RlbGV0ZS1mYWlsZWQtcnVubmVyLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlRmFpbGVkUnVubmVyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IERlbGV0ZUZhaWxlZFJ1bm5lckZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2RlbGV0ZS1mYWlsZWQtcnVubmVyLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMTYueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2Fzc2V0cy9kZWxldGUtZmFpbGVkLXJ1bm5lci5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWZhaWxlZC1ydW5uZXItZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVsZXRlLWZhaWxlZC1ydW5uZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUM7UUFDL0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsb0NBQW9DO1lBQ2pELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBWEQsZ0VBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLmpzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcHMgZm9yIERlbGV0ZUZhaWxlZFJ1bm5lckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlRmFpbGVkUnVubmVyRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL2RlbGV0ZS1mYWlsZWQtcnVubmVyLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlRmFpbGVkUnVubmVyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IERlbGV0ZUZhaWxlZFJ1bm5lckZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2RlbGV0ZS1mYWlsZWQtcnVubmVyLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMTgueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2Fzc2V0cy9kZWxldGUtZmFpbGVkLXJ1bm5lci5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
@@ -12,7 +12,7 @@ class IdleRunnerRepearFunction extends lambda.Function {
12
12
  super(scope, id, {
13
13
  description: 'src/idle-runner-repear.lambda.ts',
14
14
  ...props,
15
- runtime: new lambda.Runtime('nodejs16.x', lambda.RuntimeFamily.NODEJS),
15
+ runtime: new lambda.Runtime('nodejs18.x', lambda.RuntimeFamily.NODEJS),
16
16
  handler: 'index.handler',
17
17
  code: lambda.Code.fromAsset(path.join(__dirname, '../assets/idle-runner-repear.lambda')),
18
18
  });
@@ -20,4 +20,4 @@ class IdleRunnerRepearFunction extends lambda.Function {
20
20
  }
21
21
  }
22
22
  exports.IdleRunnerRepearFunction = IdleRunnerRepearFunction;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1ydW5uZXItcmVwZWFyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lkbGUtcnVubmVyLXJlcGVhci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDM0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxrQ0FBa0M7WUFDL0MsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHFDQUFxQyxDQUFDLENBQUM7U0FDekYsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCw0REFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMuanMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgSWRsZVJ1bm5lclJlcGVhckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWRsZVJ1bm5lclJlcGVhckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pZGxlLXJ1bm5lci1yZXBlYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBJZGxlUnVubmVyUmVwZWFyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IElkbGVSdW5uZXJSZXBlYXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9pZGxlLXJ1bm5lci1yZXBlYXIubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxNi54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vYXNzZXRzL2lkbGUtcnVubmVyLXJlcGVhci5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1ydW5uZXItcmVwZWFyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lkbGUtcnVubmVyLXJlcGVhci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDM0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxrQ0FBa0M7WUFDL0MsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHFDQUFxQyxDQUFDLENBQUM7U0FDekYsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCw0REFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMuanMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgSWRsZVJ1bm5lclJlcGVhckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWRsZVJ1bm5lclJlcGVhckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pZGxlLXJ1bm5lci1yZXBlYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBJZGxlUnVubmVyUmVwZWFyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IElkbGVSdW5uZXJSZXBlYXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9pZGxlLXJ1bm5lci1yZXBlYXIubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxOC54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vYXNzZXRzL2lkbGUtcnVubmVyLXJlcGVhci5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handler = void 0;
4
- const AWS = require("aws-sdk");
4
+ const client_sfn_1 = require("@aws-sdk/client-sfn");
5
5
  const lambda_github_1 = require("./lambda-github");
6
- const sfn = new AWS.StepFunctions();
6
+ const sfn = new client_sfn_1.SFNClient();
7
7
  async function handler(event) {
8
8
  const result = { batchItemFailures: [] };
9
9
  const octokitCache = {};
@@ -12,7 +12,7 @@ async function handler(event) {
12
12
  console.log(`Checking runner for ${input.owner}/${input.repo} [execution-id=${input.runnerName}]`);
13
13
  const retryLater = () => result.batchItemFailures.push({ itemIdentifier: record.messageId });
14
14
  // check if step function is still running
15
- const execution = await sfn.describeExecution({ executionArn: input.executionArn }).promise();
15
+ const execution = await sfn.send(new client_sfn_1.DescribeExecutionCommand({ executionArn: input.executionArn }));
16
16
  if (execution.status != 'RUNNING') {
17
17
  // no need to test again as runner already finished
18
18
  console.log('Runner already finished');
@@ -57,11 +57,11 @@ async function handler(event) {
57
57
  // stop step function first, so it's marked as aborted with the proper error
58
58
  // if we delete the runner first, the step function will be marked as failed with a generic error
59
59
  console.log(`Stopping step function ${input.executionArn}...`);
60
- await sfn.stopExecution({
60
+ await sfn.send(new client_sfn_1.StopExecutionCommand({
61
61
  executionArn: input.executionArn,
62
62
  error: 'IdleRunner',
63
63
  cause: `Runner ${input.runnerName} on ${input.owner}/${input.repo} is idle for too long (${diffMs / 1000} seconds and limit is ${input.maxIdleSeconds} seconds)`,
64
- }).promise();
64
+ }));
65
65
  }
66
66
  catch (e) {
67
67
  console.error(`Failed to stop step function ${input.executionArn}: ${e}`);
@@ -99,4 +99,4 @@ async function handler(event) {
99
99
  return result;
100
100
  }
101
101
  exports.handler = handler;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1ydW5uZXItcmVwZWFyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pZGxlLXJ1bm5lci1yZXBlYXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLCtCQUErQjtBQUMvQixtREFBd0Q7QUFXeEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFN0IsS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUF5QjtJQUNyRCxNQUFNLE1BQU0sR0FBK0IsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBK0IsRUFBRSxDQUFDO0lBRXBELEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQTBCLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFbkcsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUU3RiwwQ0FBMEM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUYsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUNqQyxtREFBbUQ7WUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVM7U0FD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QyxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzFFLFVBQVUsRUFBRSxDQUFDO3dCQUNiLFNBQVM7cUJBQ1Y7b0JBRUQsSUFBSTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDL0MsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLOzRCQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ2hCLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRTt5QkFDckIsQ0FBQyxDQUFDO3FCQUNKO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDNUQsVUFBVSxFQUFFLENBQUM7d0JBQ2IsU0FBUztxQkFDVjtpQkFDRjtxQkFBTTtvQkFDTCxpREFBaUQ7b0JBQ2pELFVBQVUsRUFBRSxDQUFDO2lCQUNkO2dCQUVELEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2IsTUFBTTthQUNQO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsOEhBQThIO1lBQzlILE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUN4RCxVQUFVLEVBQUUsQ0FBQztTQUNkO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBdkdELDBCQXVHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9jdG9raXQgfSBmcm9tICdAb2N0b2tpdC9yZXN0JztcbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IGdldE9jdG9raXQsIGdldFJ1bm5lciB9IGZyb20gJy4vbGFtYmRhLWdpdGh1Yic7XG5cbmludGVyZmFjZSBJZGxlUmVhcGVyTGFtYmRhSW5wdXQge1xuICByZWFkb25seSBleGVjdXRpb25Bcm46IHN0cmluZztcbiAgcmVhZG9ubHkgcnVubmVyTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBvd25lcjogc3RyaW5nO1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbGxhdGlvbklkPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhJZGxlU2Vjb25kczogbnVtYmVyO1xufVxuXG5jb25zdCBzZm4gPSBuZXcgQVdTLlN0ZXBGdW5jdGlvbnMoKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5TUVNFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlNRU0JhdGNoUmVzcG9uc2U+IHtcbiAgY29uc3QgcmVzdWx0OiBBV1NMYW1iZGEuU1FTQmF0Y2hSZXNwb25zZSA9IHsgYmF0Y2hJdGVtRmFpbHVyZXM6IFtdIH07XG4gIGNvbnN0IG9jdG9raXRDYWNoZTogeyBba2V5OiBudW1iZXJdOiBPY3Rva2l0IH0gPSB7fTtcblxuICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudC5SZWNvcmRzKSB7XG4gICAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKHJlY29yZC5ib2R5KSBhcyBJZGxlUmVhcGVyTGFtYmRhSW5wdXQ7XG4gICAgY29uc29sZS5sb2coYENoZWNraW5nIHJ1bm5lciBmb3IgJHtpbnB1dC5vd25lcn0vJHtpbnB1dC5yZXBvfSBbZXhlY3V0aW9uLWlkPSR7aW5wdXQucnVubmVyTmFtZX1dYCk7XG5cbiAgICBjb25zdCByZXRyeUxhdGVyID0gKCkgPT4gcmVzdWx0LmJhdGNoSXRlbUZhaWx1cmVzLnB1c2goeyBpdGVtSWRlbnRpZmllcjogcmVjb3JkLm1lc3NhZ2VJZCB9KTtcblxuICAgIC8vIGNoZWNrIGlmIHN0ZXAgZnVuY3Rpb24gaXMgc3RpbGwgcnVubmluZ1xuICAgIGNvbnN0IGV4ZWN1dGlvbiA9IGF3YWl0IHNmbi5kZXNjcmliZUV4ZWN1dGlvbih7IGV4ZWN1dGlvbkFybjogaW5wdXQuZXhlY3V0aW9uQXJuIH0pLnByb21pc2UoKTtcbiAgICBpZiAoZXhlY3V0aW9uLnN0YXR1cyAhPSAnUlVOTklORycpIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gdGVzdCBhZ2FpbiBhcyBydW5uZXIgYWxyZWFkeSBmaW5pc2hlZFxuICAgICAgY29uc29sZS5sb2coJ1J1bm5lciBhbHJlYWR5IGZpbmlzaGVkJyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBnZXQgZ2l0aHViIGFjY2Vzc1xuICAgIGxldCBvY3Rva2l0OiBPY3Rva2l0O1xuICAgIGlmIChvY3Rva2l0Q2FjaGVbaW5wdXQuaW5zdGFsbGF0aW9uSWQgPz8gLTFdKSB7XG4gICAgICBvY3Rva2l0ID0gb2N0b2tpdENhY2hlW2lucHV0Lmluc3RhbGxhdGlvbklkID8/IC0xXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2N0b2tpdCA9IG9jdG9raXRDYWNoZVtpbnB1dC5pbnN0YWxsYXRpb25JZCA/PyAtMV0gPSAoYXdhaXQgZ2V0T2N0b2tpdChpbnB1dC5pbnN0YWxsYXRpb25JZCkpLm9jdG9raXQ7XG4gICAgfVxuXG4gICAgLy8gZmluZCBydW5uZXJcbiAgICBjb25zdCBydW5uZXIgPSBhd2FpdCBnZXRSdW5uZXIob2N0b2tpdCwgaW5wdXQub3duZXIsIGlucHV0LnJlcG8sIGlucHV0LnJ1bm5lck5hbWUpO1xuICAgIGlmICghcnVubmVyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBSdW5uZXIgbm90IHJ1bm5pbmcgeWV0IGZvciAke2lucHV0Lm93bmVyfS8ke2lucHV0LnJlcG99OiR7aW5wdXQucnVubmVyTmFtZX1gKTtcbiAgICAgIHJldHJ5TGF0ZXIoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIGlmIG5vdCBpZGxlLCB0cnkgYWdhaW4gbGF0ZXJcbiAgICAvLyB3ZSB3YW50IHRvIHRyeSBhZ2FpbiBiZWNhdXNlIHRoZSBydW5uZXIgbWlnaHQgYmUgcmV0cmllZCBkdWUgdG8gZS5nLiBsYW1iZGEgdGltZW91dFxuICAgIC8vIHdlIG5lZWQgdG8ga2VlcCBmb2xsb3dpbmcgdGhlIHJldHJ5IHRvbyBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgZ28gaWRsZVxuICAgIGlmIChydW5uZXIuYnVzeSkge1xuICAgICAgY29uc29sZS5sb2coJ1J1bm5lciBpcyBub3QgaWRsZScpO1xuICAgICAgcmV0cnlMYXRlcigpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgbWF4IGlkbGUgdGltZW91dCBoYXMgcmVhY2hlZFxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgbGFiZWwgb2YgcnVubmVyLmxhYmVscykge1xuICAgICAgaWYgKGxhYmVsLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdjZGtnaHI6c3RhcnRlZDonKSkge1xuICAgICAgICBjb25zdCBzdGFydGVkID0gcGFyc2VGbG9hdChsYWJlbC5uYW1lLnNwbGl0KCc6JylbMl0pO1xuICAgICAgICBjb25zdCBzdGFydGVkRGF0ZSA9IG5ldyBEYXRlKHN0YXJ0ZWQgKiAxMDAwKTtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZGlmZk1zID0gbm93LmdldFRpbWUoKSAtIHN0YXJ0ZWREYXRlLmdldFRpbWUoKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhgUnVubmVyICR7aW5wdXQucnVubmVyTmFtZX0gc3RhcnRlZCAke2RpZmZNcy8xMDAwfSBzZWNvbmRzIGFnb2ApO1xuXG4gICAgICAgIGlmIChkaWZmTXMgPiAxMDAwICogaW5wdXQubWF4SWRsZVNlY29uZHMpIHtcbiAgICAgICAgICAvLyBtYXggaWRsZSB0aW1lIHJlYWNoZWQsIGRlbGV0ZSBydW5uZXJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgUnVubmVyICR7aW5wdXQucnVubmVyTmFtZX0gaXMgaWRsZSBmb3IgdG9vIGxvbmdgKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBzdG9wIHN0ZXAgZnVuY3Rpb24gZmlyc3QsIHNvIGl0J3MgbWFya2VkIGFzIGFib3J0ZWQgd2l0aCB0aGUgcHJvcGVyIGVycm9yXG4gICAgICAgICAgICAvLyBpZiB3ZSBkZWxldGUgdGhlIHJ1bm5lciBmaXJzdCwgdGhlIHN0ZXAgZnVuY3Rpb24gd2lsbCBiZSBtYXJrZWQgYXMgZmFpbGVkIHdpdGggYSBnZW5lcmljIGVycm9yXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgc3RlcCBmdW5jdGlvbiAke2lucHV0LmV4ZWN1dGlvbkFybn0uLi5gKTtcbiAgICAgICAgICAgIGF3YWl0IHNmbi5zdG9wRXhlY3V0aW9uKHtcbiAgICAgICAgICAgICAgZXhlY3V0aW9uQXJuOiBpbnB1dC5leGVjdXRpb25Bcm4sXG4gICAgICAgICAgICAgIGVycm9yOiAnSWRsZVJ1bm5lcicsXG4gICAgICAgICAgICAgIGNhdXNlOiBgUnVubmVyICR7aW5wdXQucnVubmVyTmFtZX0gb24gJHtpbnB1dC5vd25lcn0vJHtpbnB1dC5yZXBvfSBpcyBpZGxlIGZvciB0b28gbG9uZyAoJHtkaWZmTXMgLyAxMDAwfSBzZWNvbmRzIGFuZCBsaW1pdCBpcyAke2lucHV0Lm1heElkbGVTZWNvbmRzfSBzZWNvbmRzKWAsXG4gICAgICAgICAgICB9KS5wcm9taXNlKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHN0b3Agc3RlcCBmdW5jdGlvbiAke2lucHV0LmV4ZWN1dGlvbkFybn06ICR7ZX1gKTtcbiAgICAgICAgICAgIHJldHJ5TGF0ZXIoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGVsZXRpbmcgcnVubmVyICR7cnVubmVyLmlkfS4uLmApO1xuICAgICAgICAgICAgYXdhaXQgb2N0b2tpdC5yZXN0LmFjdGlvbnMuZGVsZXRlU2VsZkhvc3RlZFJ1bm5lckZyb21SZXBvKHtcbiAgICAgICAgICAgICAgb3duZXI6IGlucHV0Lm93bmVyLFxuICAgICAgICAgICAgICByZXBvOiBpbnB1dC5yZXBvLFxuICAgICAgICAgICAgICBydW5uZXJfaWQ6IHJ1bm5lci5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBkZWxldGUgcnVubmVyICR7cnVubmVyLmlkfTogJHtlfWApO1xuICAgICAgICAgICAgcmV0cnlMYXRlcigpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHN0aWxsIGlkbGUsIHRpbWVvdXQgbm90IHJlYWNoZWQgLS0gcmV0cnkgbGF0ZXJcbiAgICAgICAgICByZXRyeUxhdGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZm91bmQpIHtcbiAgICAgIC8vIG5vIHN0YXJ0ZWQgbGFiZWw/IHJldHJ5IGxhdGVyIChpdCB3b24ndCByZXRyeSBmb3JldmVyIGFzIGV2ZW50dWFsbHkgdGhlIHJ1bm5lciB3aWxsIHN0b3AgYW5kIHRoZSBzdGVwIGZ1bmN0aW9uIHdpbGwgZmluaXNoKVxuICAgICAgY29uc29sZS5lcnJvcignTm8gYGNka2docjpzdGFydGVkOnh4eGAgbGFiZWwgZm91bmQ/Pz8nKTtcbiAgICAgIHJldHJ5TGF0ZXIoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1ydW5uZXItcmVwZWFyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pZGxlLXJ1bm5lci1yZXBlYXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9EQUFnRztBQUdoRyxtREFBd0Q7QUFXeEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxzQkFBUyxFQUFFLENBQUM7QUFFckIsS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUF5QjtJQUNyRCxNQUFNLE1BQU0sR0FBK0IsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBK0IsRUFBRSxDQUFDO0lBRXBELEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQTBCLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFbkcsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUU3RiwwQ0FBMEM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQXdCLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO1lBQ2pDLG1EQUFtRDtZQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDdkMsU0FBUztTQUNWO1FB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QUFnQyxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzFFLFVBQVUsRUFBRSxDQUFDO3dCQUNiLFNBQVM7cUJBQ1Y7b0JBRUQsSUFBSTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDL0MsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLOzRCQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ2hCLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRTt5QkFDckIsQ0FBQyxDQUFDO3FCQUNKO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDNUQsVUFBVSxFQUFFLENBQUM7d0JBQ2IsU0FBUztxQkFDVjtpQkFDRjtxQkFBTTtvQkFDTCxpREFBaUQ7b0JBQ2pELFVBQVUsRUFBRSxDQUFDO2lCQUNkO2dCQUVELEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2IsTUFBTTthQUNQO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsOEhBQThIO1lBQzlILE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUN4RCxVQUFVLEVBQUUsQ0FBQztTQUNkO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBdkdELDBCQXVHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZCwgU0ZOQ2xpZW50LCBTdG9wRXhlY3V0aW9uQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZm4nO1xuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gJ0BvY3Rva2l0L3Jlc3QnO1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgZ2V0T2N0b2tpdCwgZ2V0UnVubmVyIH0gZnJvbSAnLi9sYW1iZGEtZ2l0aHViJztcblxuaW50ZXJmYWNlIElkbGVSZWFwZXJMYW1iZGFJbnB1dCB7XG4gIHJlYWRvbmx5IGV4ZWN1dGlvbkFybjogc3RyaW5nO1xuICByZWFkb25seSBydW5uZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG93bmVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbGF0aW9uSWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heElkbGVTZWNvbmRzOiBudW1iZXI7XG59XG5cbmNvbnN0IHNmbiA9IG5ldyBTRk5DbGllbnQoKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5TUVNFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlNRU0JhdGNoUmVzcG9uc2U+IHtcbiAgY29uc3QgcmVzdWx0OiBBV1NMYW1iZGEuU1FTQmF0Y2hSZXNwb25zZSA9IHsgYmF0Y2hJdGVtRmFpbHVyZXM6IFtdIH07XG4gIGNvbnN0IG9jdG9raXRDYWNoZTogeyBba2V5OiBudW1iZXJdOiBPY3Rva2l0IH0gPSB7fTtcblxuICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudC5SZWNvcmRzKSB7XG4gICAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKHJlY29yZC5ib2R5KSBhcyBJZGxlUmVhcGVyTGFtYmRhSW5wdXQ7XG4gICAgY29uc29sZS5sb2coYENoZWNraW5nIHJ1bm5lciBmb3IgJHtpbnB1dC5vd25lcn0vJHtpbnB1dC5yZXBvfSBbZXhlY3V0aW9uLWlkPSR7aW5wdXQucnVubmVyTmFtZX1dYCk7XG5cbiAgICBjb25zdCByZXRyeUxhdGVyID0gKCkgPT4gcmVzdWx0LmJhdGNoSXRlbUZhaWx1cmVzLnB1c2goeyBpdGVtSWRlbnRpZmllcjogcmVjb3JkLm1lc3NhZ2VJZCB9KTtcblxuICAgIC8vIGNoZWNrIGlmIHN0ZXAgZnVuY3Rpb24gaXMgc3RpbGwgcnVubmluZ1xuICAgIGNvbnN0IGV4ZWN1dGlvbiA9IGF3YWl0IHNmbi5zZW5kKG5ldyBEZXNjcmliZUV4ZWN1dGlvbkNvbW1hbmQoeyBleGVjdXRpb25Bcm46IGlucHV0LmV4ZWN1dGlvbkFybiB9KSk7XG4gICAgaWYgKGV4ZWN1dGlvbi5zdGF0dXMgIT0gJ1JVTk5JTkcnKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIHRlc3QgYWdhaW4gYXMgcnVubmVyIGFscmVhZHkgZmluaXNoZWRcbiAgICAgIGNvbnNvbGUubG9nKCdSdW5uZXIgYWxyZWFkeSBmaW5pc2hlZCcpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGdpdGh1YiBhY2Nlc3NcbiAgICBsZXQgb2N0b2tpdDogT2N0b2tpdDtcbiAgICBpZiAob2N0b2tpdENhY2hlW2lucHV0Lmluc3RhbGxhdGlvbklkID8/IC0xXSkge1xuICAgICAgb2N0b2tpdCA9IG9jdG9raXRDYWNoZVtpbnB1dC5pbnN0YWxsYXRpb25JZCA/PyAtMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG9jdG9raXQgPSBvY3Rva2l0Q2FjaGVbaW5wdXQuaW5zdGFsbGF0aW9uSWQgPz8gLTFdID0gKGF3YWl0IGdldE9jdG9raXQoaW5wdXQuaW5zdGFsbGF0aW9uSWQpKS5vY3Rva2l0O1xuICAgIH1cblxuICAgIC8vIGZpbmQgcnVubmVyXG4gICAgY29uc3QgcnVubmVyID0gYXdhaXQgZ2V0UnVubmVyKG9jdG9raXQsIGlucHV0Lm93bmVyLCBpbnB1dC5yZXBvLCBpbnB1dC5ydW5uZXJOYW1lKTtcbiAgICBpZiAoIXJ1bm5lcikge1xuICAgICAgY29uc29sZS5lcnJvcihgUnVubmVyIG5vdCBydW5uaW5nIHlldCBmb3IgJHtpbnB1dC5vd25lcn0vJHtpbnB1dC5yZXBvfToke2lucHV0LnJ1bm5lck5hbWV9YCk7XG4gICAgICByZXRyeUxhdGVyKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBpZiBub3QgaWRsZSwgdHJ5IGFnYWluIGxhdGVyXG4gICAgLy8gd2Ugd2FudCB0byB0cnkgYWdhaW4gYmVjYXVzZSB0aGUgcnVubmVyIG1pZ2h0IGJlIHJldHJpZWQgZHVlIHRvIGUuZy4gbGFtYmRhIHRpbWVvdXRcbiAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgZm9sbG93aW5nIHRoZSByZXRyeSB0b28gYW5kIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IGdvIGlkbGVcbiAgICBpZiAocnVubmVyLmJ1c3kpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdSdW5uZXIgaXMgbm90IGlkbGUnKTtcbiAgICAgIHJldHJ5TGF0ZXIoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIG1heCBpZGxlIHRpbWVvdXQgaGFzIHJlYWNoZWRcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIHJ1bm5lci5sYWJlbHMpIHtcbiAgICAgIGlmIChsYWJlbC5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnY2RrZ2hyOnN0YXJ0ZWQ6JykpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRlZCA9IHBhcnNlRmxvYXQobGFiZWwubmFtZS5zcGxpdCgnOicpWzJdKTtcbiAgICAgICAgY29uc3Qgc3RhcnRlZERhdGUgPSBuZXcgRGF0ZShzdGFydGVkICogMTAwMCk7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGRpZmZNcyA9IG5vdy5nZXRUaW1lKCkgLSBzdGFydGVkRGF0ZS5nZXRUaW1lKCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coYFJ1bm5lciAke2lucHV0LnJ1bm5lck5hbWV9IHN0YXJ0ZWQgJHtkaWZmTXMvMTAwMH0gc2Vjb25kcyBhZ29gKTtcblxuICAgICAgICBpZiAoZGlmZk1zID4gMTAwMCAqIGlucHV0Lm1heElkbGVTZWNvbmRzKSB7XG4gICAgICAgICAgLy8gbWF4IGlkbGUgdGltZSByZWFjaGVkLCBkZWxldGUgcnVubmVyXG4gICAgICAgICAgY29uc29sZS5sb2coYFJ1bm5lciAke2lucHV0LnJ1bm5lck5hbWV9IGlzIGlkbGUgZm9yIHRvbyBsb25nYCk7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gc3RvcCBzdGVwIGZ1bmN0aW9uIGZpcnN0LCBzbyBpdCdzIG1hcmtlZCBhcyBhYm9ydGVkIHdpdGggdGhlIHByb3BlciBlcnJvclxuICAgICAgICAgICAgLy8gaWYgd2UgZGVsZXRlIHRoZSBydW5uZXIgZmlyc3QsIHRoZSBzdGVwIGZ1bmN0aW9uIHdpbGwgYmUgbWFya2VkIGFzIGZhaWxlZCB3aXRoIGEgZ2VuZXJpYyBlcnJvclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nIHN0ZXAgZnVuY3Rpb24gJHtpbnB1dC5leGVjdXRpb25Bcm59Li4uYCk7XG4gICAgICAgICAgICBhd2FpdCBzZm4uc2VuZChuZXcgU3RvcEV4ZWN1dGlvbkNvbW1hbmQoe1xuICAgICAgICAgICAgICBleGVjdXRpb25Bcm46IGlucHV0LmV4ZWN1dGlvbkFybixcbiAgICAgICAgICAgICAgZXJyb3I6ICdJZGxlUnVubmVyJyxcbiAgICAgICAgICAgICAgY2F1c2U6IGBSdW5uZXIgJHtpbnB1dC5ydW5uZXJOYW1lfSBvbiAke2lucHV0Lm93bmVyfS8ke2lucHV0LnJlcG99IGlzIGlkbGUgZm9yIHRvbyBsb25nICgke2RpZmZNcyAvIDEwMDB9IHNlY29uZHMgYW5kIGxpbWl0IGlzICR7aW5wdXQubWF4SWRsZVNlY29uZHN9IHNlY29uZHMpYCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gc3RvcCBzdGVwIGZ1bmN0aW9uICR7aW5wdXQuZXhlY3V0aW9uQXJufTogJHtlfWApO1xuICAgICAgICAgICAgcmV0cnlMYXRlcigpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEZWxldGluZyBydW5uZXIgJHtydW5uZXIuaWR9Li4uYCk7XG4gICAgICAgICAgICBhd2FpdCBvY3Rva2l0LnJlc3QuYWN0aW9ucy5kZWxldGVTZWxmSG9zdGVkUnVubmVyRnJvbVJlcG8oe1xuICAgICAgICAgICAgICBvd25lcjogaW5wdXQub3duZXIsXG4gICAgICAgICAgICAgIHJlcG86IGlucHV0LnJlcG8sXG4gICAgICAgICAgICAgIHJ1bm5lcl9pZDogcnVubmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSBydW5uZXIgJHtydW5uZXIuaWR9OiAke2V9YCk7XG4gICAgICAgICAgICByZXRyeUxhdGVyKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RpbGwgaWRsZSwgdGltZW91dCBub3QgcmVhY2hlZCAtLSByZXRyeSBsYXRlclxuICAgICAgICAgIHJldHJ5TGF0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgLy8gbm8gc3RhcnRlZCBsYWJlbD8gcmV0cnkgbGF0ZXIgKGl0IHdvbid0IHJldHJ5IGZvcmV2ZXIgYXMgZXZlbnR1YWxseSB0aGUgcnVubmVyIHdpbGwgc3RvcCBhbmQgdGhlIHN0ZXAgZnVuY3Rpb24gd2lsbCBmaW5pc2gpXG4gICAgICBjb25zb2xlLmVycm9yKCdObyBgY2RrZ2hyOnN0YXJ0ZWQ6eHh4YCBsYWJlbCBmb3VuZD8/PycpO1xuICAgICAgcmV0cnlMYXRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -42,6 +42,6 @@ class RunnerImageBuilder extends common_1.RunnerImageBuilderBase {
42
42
  }
43
43
  }
44
44
  _a = JSII_RTTI_SYMBOL_1;
45
- RunnerImageBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder", version: "0.11.3" };
45
+ RunnerImageBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder", version: "0.11.4" };
46
46
  exports.RunnerImageBuilder = RunnerImageBuilder;
47
47
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwQztBQUUxQywyREFBd0U7QUFDeEUsMkNBQTBEO0FBQzFELHFDQUFtRztBQUNuRyxnREFBeUM7QUFFekM7Ozs7OztHQU1HO0FBQ0gsTUFBc0Isa0JBQW1CLFNBQVEsK0JBQXNCO0lBQ3JFOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN0RSxJQUFJLEtBQUssRUFBRSxVQUFVLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUM1Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsa0hBQWtILENBQUMsQ0FBQztTQUN0SjtRQUVELElBQUksS0FBSyxFQUFFLFdBQVcsS0FBSywrQkFBc0IsQ0FBQyxVQUFVLEVBQUU7WUFDNUQsT0FBTyxJQUFJLHVDQUEyQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQ7YUFBTSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssK0JBQXNCLENBQUMsaUJBQWlCLEVBQUU7WUFDMUUsT0FBTyxJQUFJLHFEQUFpQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDaEU7UUFFRCxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxJQUFJLFdBQUUsQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN0RCxPQUFPLElBQUksdUNBQTJCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxRDthQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxJQUFJLHFEQUFpQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQzs7OztBQXZCbUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF3c0ltYWdlQnVpbGRlclJ1bm5lckltYWdlQnVpbGRlciB9IGZyb20gJy4vYXdzLWltYWdlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29kZUJ1aWxkUnVubmVySW1hZ2VCdWlsZGVyIH0gZnJvbSAnLi9jb2RlYnVpbGQnO1xuaW1wb3J0IHsgUnVubmVySW1hZ2VCdWlsZGVyQmFzZSwgUnVubmVySW1hZ2VCdWlsZGVyUHJvcHMsIFJ1bm5lckltYWdlQnVpbGRlclR5cGUgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBPcyB9IGZyb20gJy4uL3Byb3ZpZGVycy9jb21tb24nO1xuXG4vKipcbiAqIEdpdEh1YiBSdW5uZXIgaW1hZ2UgYnVpbGRlci4gQnVpbGRzIGEgRG9ja2VyIGltYWdlIG9yIEFNSSB3aXRoIEdpdEh1YiBSdW5uZXIgYW5kIG90aGVyIHJlcXVpcmVtZW50cyBpbnN0YWxsZWQuXG4gKlxuICogSW1hZ2VzIGNhbiBiZSBjdXN0b21pemVkIGJlZm9yZSBwYXNzZWQgaW50byB0aGUgcHJvdmlkZXIgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGNvbXBvbmVudHMgdG8gYmUgaW5zdGFsbGVkLlxuICpcbiAqIEltYWdlcyBhcmUgcmVidWlsdCBldmVyeSB3ZWVrIGJ5IGRlZmF1bHQgdG8gZW5zdXJlIHRoYXQgdGhlIGxhdGVzdCBzZWN1cml0eSBwYXRjaGVzIGFyZSBhcHBsaWVkLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUnVubmVySW1hZ2VCdWlsZGVyIGV4dGVuZHMgUnVubmVySW1hZ2VCdWlsZGVyQmFzZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgaW1hZ2UgYnVpbGRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcHJvcGVydGllcy4gVGhlIGltcGxlbWVudGF0aW9uIHdpbGwgZGlmZmVyIGJhc2VkIG9uIHRoZSBPUywgYXJjaGl0ZWN0dXJlLCBhbmQgcmVxdWVzdGVkIGJ1aWxkZXIgdHlwZS5cbiAgICovXG4gIHN0YXRpYyBuZXcoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBSdW5uZXJJbWFnZUJ1aWxkZXJQcm9wcyk6IFJ1bm5lckltYWdlQnVpbGRlciB7XG4gICAgaWYgKHByb3BzPy5jb21wb25lbnRzICYmIHByb3BzLnJ1bm5lclZlcnNpb24pIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKCdydW5uZXJWZXJzaW9uIGlzIGlnbm9yZWQgd2hlbiBjb21wb25lbnRzIGFyZSBzcGVjaWZpZWQuIFRoZSBydW5uZXIgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbXBvbmVudHMuJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzPy5idWlsZGVyVHlwZSA9PT0gUnVubmVySW1hZ2VCdWlsZGVyVHlwZS5DT0RFX0JVSUxEKSB7XG4gICAgICByZXR1cm4gbmV3IENvZGVCdWlsZFJ1bm5lckltYWdlQnVpbGRlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzPy5idWlsZGVyVHlwZSA9PT0gUnVubmVySW1hZ2VCdWlsZGVyVHlwZS5BV1NfSU1BR0VfQlVJTERFUikge1xuICAgICAgcmV0dXJuIG5ldyBBd3NJbWFnZUJ1aWxkZXJSdW5uZXJJbWFnZUJ1aWxkZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3MgPSBwcm9wcz8ub3MgPz8gT3MuTElOVVhfVUJVTlRVO1xuICAgIGlmIChvcy5pcyhPcy5MSU5VWF9VQlVOVFUpIHx8IG9zLmlzKE9zLkxJTlVYX0FNQVpPTl8yKSkge1xuICAgICAgcmV0dXJuIG5ldyBDb2RlQnVpbGRSdW5uZXJJbWFnZUJ1aWxkZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgfSBlbHNlIGlmIChvcy5pcyhPcy5XSU5ET1dTKSkge1xuICAgICAgcmV0dXJuIG5ldyBBd3NJbWFnZUJ1aWxkZXJSdW5uZXJJbWFnZUJ1aWxkZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGZpbmQgcnVubmVyIGltYWdlIGJ1aWxkZXIgaW1wbGVtZW50YXRpb24gZm9yICR7b3MubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -152,7 +152,7 @@ class ImageBuilderComponent extends common_1.ImageBuilderObjectBase {
152
152
  }
153
153
  }
154
154
  _a = JSII_RTTI_SYMBOL_1;
155
- ImageBuilderComponent[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent", version: "0.11.3" };
155
+ ImageBuilderComponent[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.ImageBuilderComponent", version: "0.11.4" };
156
156
  exports.ImageBuilderComponent = ImageBuilderComponent;
157
157
  /**
158
158
  * @internal
@@ -12,7 +12,7 @@ class DeleteAmiFunction extends lambda.Function {
12
12
  super(scope, id, {
13
13
  description: 'src/image-builders/aws-image-builder/delete-ami.lambda.ts',
14
14
  ...props,
15
- runtime: new lambda.Runtime('nodejs16.x', lambda.RuntimeFamily.NODEJS),
15
+ runtime: new lambda.Runtime('nodejs18.x', lambda.RuntimeFamily.NODEJS),
16
16
  handler: 'index.handler',
17
17
  code: lambda.Code.fromAsset(path.join(__dirname, '../../../assets/image-builders/aws-image-builder/delete-ami.lambda')),
18
18
  });
@@ -20,4 +20,4 @@ class DeleteAmiFunction extends lambda.Function {
20
20
  }
21
21
  }
22
22
  exports.DeleteAmiFunction = DeleteAmiFunction;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFtaS1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9kZWxldGUtYW1pLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUE2RTtBQUM3RSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBU2pEOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxNQUFNLENBQUMsUUFBUTtJQUNwRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsV0FBVyxFQUFFLDJEQUEyRDtZQUN4RSxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN0RSxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0VBQW9FLENBQUMsQ0FBQztTQUN4SCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRjtBQVhELDhDQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy5qcyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBEZWxldGVBbWlGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUFtaUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9kZWxldGUtYW1pLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlQW1pRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IERlbGV0ZUFtaUZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2RlbGV0ZS1hbWkubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxNi54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vYXNzZXRzL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2RlbGV0ZS1hbWkubGFtYmRhJykpLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcbiAgfVxufSJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFtaS1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9kZWxldGUtYW1pLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUE2RTtBQUM3RSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBU2pEOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxNQUFNLENBQUMsUUFBUTtJQUNwRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsV0FBVyxFQUFFLDJEQUEyRDtZQUN4RSxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN0RSxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0VBQW9FLENBQUMsQ0FBQztTQUN4SCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRjtBQVhELDhDQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy5qcyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBEZWxldGVBbWlGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUFtaUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9kZWxldGUtYW1pLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlQW1pRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IERlbGV0ZUFtaUZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2RlbGV0ZS1hbWkubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxOC54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vYXNzZXRzL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2RlbGV0ZS1hbWkubGFtYmRhJykpLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcbiAgfVxufSJdfQ==
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handler = void 0;
4
- const AWS = require("aws-sdk");
4
+ const client_ec2_1 = require("@aws-sdk/client-ec2");
5
5
  const lambda_helpers_1 = require("../../lambda-helpers");
6
- const ec2 = new AWS.EC2();
6
+ const ec2 = new client_ec2_1.EC2Client();
7
7
  async function deleteAmis(launchTemplateId, stackName, builderName, deleteAll) {
8
8
  // this runs daily and images are built once a week, so there shouldn't be a need for pagination
9
- const images = await ec2.describeImages({
9
+ const images = await ec2.send(new client_ec2_1.DescribeImagesCommand({
10
10
  Owners: ['self'],
11
11
  Filters: [
12
12
  {
@@ -18,16 +18,16 @@ async function deleteAmis(launchTemplateId, stackName, builderName, deleteAll) {
18
18
  Values: [builderName],
19
19
  },
20
20
  ],
21
- }).promise();
21
+ }));
22
22
  let imagesToDelete = images.Images ?? [];
23
23
  console.log(`Found ${imagesToDelete.length} AMIs`);
24
24
  console.log(JSON.stringify(imagesToDelete.map(i => i.ImageId)));
25
25
  if (!deleteAll) {
26
26
  // get launch template information to filter out the active image
27
- const launchTemplates = await ec2.describeLaunchTemplateVersions({
27
+ const launchTemplates = await ec2.send(new client_ec2_1.DescribeLaunchTemplateVersionsCommand({
28
28
  LaunchTemplateId: launchTemplateId,
29
29
  Versions: ['$Default'],
30
- }).promise();
30
+ }));
31
31
  if (!launchTemplates.LaunchTemplateVersions) {
32
32
  console.error(`Unable to describe launch template ${launchTemplateId}`);
33
33
  return;
@@ -46,15 +46,15 @@ async function deleteAmis(launchTemplateId, stackName, builderName, deleteAll) {
46
46
  continue;
47
47
  }
48
48
  console.log(`Deregistering ${image.ImageId}`);
49
- await ec2.deregisterImage({
49
+ await ec2.send(new client_ec2_1.DeregisterImageCommand({
50
50
  ImageId: image.ImageId,
51
- }).promise();
51
+ }));
52
52
  for (const blockMapping of image.BlockDeviceMappings ?? []) {
53
53
  if (blockMapping.Ebs?.SnapshotId) {
54
54
  console.log(`Deleting ${blockMapping.Ebs.SnapshotId}`);
55
- await ec2.deleteSnapshot({
55
+ await ec2.send(new client_ec2_1.DeleteSnapshotCommand({
56
56
  SnapshotId: blockMapping.Ebs.SnapshotId,
57
- }).promise();
57
+ }));
58
58
  }
59
59
  }
60
60
  }
@@ -84,4 +84,4 @@ async function handler(event, context) {
84
84
  }
85
85
  }
86
86
  exports.handler = handler;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFtaS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvZGVsZXRlLWFtaS5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLHlEQUE2RDtBQUc3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQVMxQixLQUFLLFVBQVUsVUFBVSxDQUFDLGdCQUF3QixFQUFFLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxTQUFrQjtJQUM1RyxnR0FBZ0c7SUFDaEcsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDcEI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDdEI7U0FDRjtLQUNGLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUViLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxjQUFjLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQztJQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFaEUsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLGlFQUFpRTtRQUNqRSxNQUFNLGVBQWUsR0FBRyxNQUFNLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQztZ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QyxTQUFTLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckcsTUFBTSxJQUFBLHNDQUFxQixFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsTUFBTTtTQUNUO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLFdBQVcsRUFBRTtZQUNwQyxNQUFNLElBQUEsc0NBQXFCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRyxDQUFXLENBQUMsT0FBTyxJQUFJLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbkg7S0FDRjtBQUNILENBQUM7QUF2QkQsMEJBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3VzdG9tUmVzb3VyY2VSZXNwb25kIH0gZnJvbSAnLi4vLi4vbGFtYmRhLWhlbHBlcnMnO1xuXG5cbmNvbnN0IGVjMiA9IG5ldyBBV1MuRUMyKCk7XG5cbnR5cGUgRGVsZXRlQW1pSW5wdXQgPSB7XG4gIFJlcXVlc3RUeXBlOiAnU2NoZWR1bGVkJztcbiAgU3RhY2tOYW1lOiBzdHJpbmc7XG4gIEJ1aWxkZXJOYW1lOiBzdHJpbmc7XG4gIExhdW5jaFRlbXBsYXRlSWQ6IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZGVsZXRlQW1pcyhsYXVuY2hUZW1wbGF0ZUlkOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nLCBidWlsZGVyTmFtZTogc3RyaW5nLCBkZWxldGVBbGw6IGJvb2xlYW4pIHtcbiAgLy8gdGhpcyBydW5zIGRhaWx5IGFuZCBpbWFnZXMgYXJlIGJ1aWx0IG9uY2UgYSB3ZWVrLCBzbyB0aGVyZSBzaG91bGRuJ3QgYmUgYSBuZWVkIGZvciBwYWdpbmF0aW9uXG4gIGNvbnN0IGltYWdlcyA9IGF3YWl0IGVjMi5kZXNjcmliZUltYWdlcyh7XG4gICAgT3duZXJzOiBbJ3NlbGYnXSxcbiAgICBGaWx0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIE5hbWU6ICd0YWc6R2l0SHViUnVubmVyczpTdGFjaycsXG4gICAgICAgIFZhbHVlczogW3N0YWNrTmFtZV0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBOYW1lOiAndGFnOkdpdEh1YlJ1bm5lcnM6QnVpbGRlcicsXG4gICAgICAgIFZhbHVlczogW2J1aWxkZXJOYW1lXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSkucHJvbWlzZSgpO1xuXG4gIGxldCBpbWFnZXNUb0RlbGV0ZSA9IGltYWdlcy5JbWFnZXMgPz8gW107XG5cbiAgY29uc29sZS5sb2coYEZvdW5kICR7aW1hZ2VzVG9EZWxldGUubGVuZ3RofSBBTUlzYCk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGltYWdlc1RvRGVsZXRlLm1hcChpID0+IGkuSW1hZ2VJZCkpKTtcblxuICBpZiAoIWRlbGV0ZUFsbCkge1xuICAgIC8vIGdldCBsYXVuY2ggdGVtcGxhdGUgaW5mb3JtYXRpb24gdG8gZmlsdGVyIG91dCB0aGUgYWN0aXZlIGltYWdlXG4gICAgY29uc3QgbGF1bmNoVGVtcGxhdGVzID0gYXdhaXQgZWMyLmRlc2NyaWJlTGF1bmNoVGVtcGxhdGVWZXJzaW9ucyh7XG4gICAgICBMYXVuY2hUZW1wbGF0ZUlkOiBsYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgVmVyc2lvbnM6IFsnJERlZmF1bHQnXSxcbiAgICB9KS5wcm9taXNlKCk7XG4gICAgaWYgKCFsYXVuY2hUZW1wbGF0ZXMuTGF1bmNoVGVtcGxhdGVWZXJzaW9ucykge1xuICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIGRlc2NyaWJlIGxhdW5jaCB0ZW1wbGF0ZSAke2xhdW5jaFRlbXBsYXRlSWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbGF1bmNoVGVtcGxhdGVzLkxhdW5jaFRlbXBsYXRlVmVyc2lvbnNbMF07XG5cbiAgICAvLyBub24tYWN0aXZlIGltYWdlc1xuICAgIGltYWdlc1RvRGVsZXRlID0gaW1hZ2VzVG9EZWxldGUuZmlsdGVyKGkgPT4gaS5JbWFnZUlkICE9IGxhdW5jaFRlbXBsYXRlLkxhdW5jaFRlbXBsYXRlRGF0YT8uSW1hZ2VJZCk7XG4gICAgLy8gaW1hZ2VzIG9sZGVyIHRoYW4gdHdvIGRheXMgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHdoZXJlIGFuIGltYWdlIGlzIGNyZWF0ZWQgd2hpbGUgd2UncmUgY2xlYW5pbmcgdXBcbiAgICBpbWFnZXNUb0RlbGV0ZSA9IGltYWdlc1RvRGVsZXRlLmZpbHRlcihpID0+IGkuQ3JlYXRpb25EYXRlICYmIERhdGUucGFyc2UoaS5DcmVhdGlvbkRhdGUpIDwgKERhdGUubm93KCkgLSAxMDAwICogNjAgKiA2MCAqIDQ4KSk7XG5cbiAgICBjb25zb2xlLmxvZyhgJHtpbWFnZXNUb0RlbGV0ZS5sZW5ndGh9IEFNSXMgbGVmdCBhZnRlciBmaWx0ZXJpbmcgYnkgZGF0ZSBhbmQgZXhjbHVkaW5nIEFNSSB1c2VkIGJ5IGxhdW5jaCB0ZW1wbGF0ZWApO1xuICB9XG5cbiAgLy8gZGVsZXRlIGFsbCB0aGF0IHdlIGZvdW5kXG4gIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzVG9EZWxldGUpIHtcbiAgICBpZiAoIWltYWdlLkltYWdlSWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTm8gaW1hZ2UgaWQ/ICR7SlNPTi5zdHJpbmdpZnkoaW1hZ2UpfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYERlcmVnaXN0ZXJpbmcgJHtpbWFnZS5JbWFnZUlkfWApO1xuXG4gICAgYXdhaXQgZWMyLmRlcmVnaXN0ZXJJbWFnZSh7XG4gICAgICBJbWFnZUlkOiBpbWFnZS5JbWFnZUlkLFxuICAgIH0pLnByb21pc2UoKTtcblxuICAgIGZvciAoY29uc3QgYmxvY2tNYXBwaW5nIG9mIGltYWdlLkJsb2NrRGV2aWNlTWFwcGluZ3MgPz8gW10pIHtcbiAgICAgIGlmIChibG9ja01hcHBpbmcuRWJzPy5TbmFwc2hvdElkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBEZWxldGluZyAke2Jsb2NrTWFwcGluZy5FYnMuU25hcHNob3RJZH1gKTtcblxuICAgICAgICBhd2FpdCBlYzIuZGVsZXRlU25hcHNob3Qoe1xuICAgICAgICAgIFNuYXBzaG90SWQ6IGJsb2NrTWFwcGluZy5FYnMuU25hcHNob3RJZCxcbiAgICAgICAgfSkucHJvbWlzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogRGVsZXRlQW1pSW5wdXQgfCBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50LCBjb250ZXh0OiBBV1NMYW1iZGEuQ29udGV4dCkge1xuICB0cnkge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgLi4uZXZlbnQsIFJlc3BvbnNlVVJMOiAnLi4uJyB9KSk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgICBjYXNlICdTY2hlZHVsZWQnOlxuICAgICAgICBhd2FpdCBkZWxldGVBbWlzKGV2ZW50LkxhdW5jaFRlbXBsYXRlSWQsIGV2ZW50LlN0YWNrTmFtZSwgZXZlbnQuQnVpbGRlck5hbWUsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgIGF3YWl0IGN1c3RvbVJlc291cmNlUmVzcG9uZChldmVudCwgJ1NVQ0NFU1MnLCAnT0snLCAnRGVsZXRlQW1pcycsIHt9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBhd2FpdCBkZWxldGVBbWlzKCcnLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuU3RhY2tOYW1lLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuQnVpbGRlck5hbWUsIHRydWUpO1xuICAgICAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdTVUNDRVNTJywgJ09LJywgZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkLCB7fSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlICE9ICdTY2hlZHVsZWQnKSB7XG4gICAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdGQUlMRUQnLCAoZSBhcyBFcnJvcikubWVzc2FnZSB8fCAnSW50ZXJuYWwgRXJyb3InLCBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsIHt9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFtaS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvZGVsZXRlLWFtaS5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBTTZCO0FBRTdCLHlEQUE2RDtBQUU3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQztBQVM1QixLQUFLLFVBQVUsVUFBVSxDQUFDLGdCQUF3QixFQUFFLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxTQUFrQjtJQUM1RyxnR0FBZ0c7SUFDaEcsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksa0NBQXFCLENBQUM7UUFDdEQsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNwQjtZQUNEO2dCQUNFLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQzthQUN0QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDLENBQUM7SUFFSixJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUV6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsY0FBYyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUM7SUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhFLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxpRUFBaUU7UUFDakUsTUFBTSxlQUFlLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUks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SyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyRyxNQUFNLElBQUEsc0NBQXFCLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixNQUFNO1NBQ1Q7S0FDRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksV0FBVyxFQUFFO1lBQ3BDLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFHLENBQVcsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuSDtLQUNGO0FBQ0gsQ0FBQztBQXZCRCwwQkF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWxldGVTbmFwc2hvdENvbW1hbmQsXG4gIERlcmVnaXN0ZXJJbWFnZUNvbW1hbmQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVMYXVuY2hUZW1wbGF0ZVZlcnNpb25zQ29tbWFuZCxcbiAgRUMyQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWMyJztcbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGN1c3RvbVJlc291cmNlUmVzcG9uZCB9IGZyb20gJy4uLy4uL2xhbWJkYS1oZWxwZXJzJztcblxuY29uc3QgZWMyID0gbmV3IEVDMkNsaWVudCgpO1xuXG50eXBlIERlbGV0ZUFtaUlucHV0ID0ge1xuICBSZXF1ZXN0VHlwZTogJ1NjaGVkdWxlZCc7XG4gIFN0YWNrTmFtZTogc3RyaW5nO1xuICBCdWlsZGVyTmFtZTogc3RyaW5nO1xuICBMYXVuY2hUZW1wbGF0ZUlkOiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUFtaXMobGF1bmNoVGVtcGxhdGVJZDogc3RyaW5nLCBzdGFja05hbWU6IHN0cmluZywgYnVpbGRlck5hbWU6IHN0cmluZywgZGVsZXRlQWxsOiBib29sZWFuKSB7XG4gIC8vIHRoaXMgcnVucyBkYWlseSBhbmQgaW1hZ2VzIGFyZSBidWlsdCBvbmNlIGEgd2Vlaywgc28gdGhlcmUgc2hvdWxkbid0IGJlIGEgbmVlZCBmb3IgcGFnaW5hdGlvblxuICBjb25zdCBpbWFnZXMgPSBhd2FpdCBlYzIuc2VuZChuZXcgRGVzY3JpYmVJbWFnZXNDb21tYW5kKHtcbiAgICBPd25lcnM6IFsnc2VsZiddLFxuICAgIEZpbHRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgTmFtZTogJ3RhZzpHaXRIdWJSdW5uZXJzOlN0YWNrJyxcbiAgICAgICAgVmFsdWVzOiBbc3RhY2tOYW1lXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIE5hbWU6ICd0YWc6R2l0SHViUnVubmVyczpCdWlsZGVyJyxcbiAgICAgICAgVmFsdWVzOiBbYnVpbGRlck5hbWVdLFxuICAgICAgfSxcbiAgICBdLFxuICB9KSk7XG5cbiAgbGV0IGltYWdlc1RvRGVsZXRlID0gaW1hZ2VzLkltYWdlcyA/PyBbXTtcblxuICBjb25zb2xlLmxvZyhgRm91bmQgJHtpbWFnZXNUb0RlbGV0ZS5sZW5ndGh9IEFNSXNgKTtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoaW1hZ2VzVG9EZWxldGUubWFwKGkgPT4gaS5JbWFnZUlkKSkpO1xuXG4gIGlmICghZGVsZXRlQWxsKSB7XG4gICAgLy8gZ2V0IGxhdW5jaCB0ZW1wbGF0ZSBpbmZvcm1hdGlvbiB0byBmaWx0ZXIgb3V0IHRoZSBhY3RpdmUgaW1hZ2VcbiAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZXMgPSBhd2FpdCBlYzIuc2VuZChuZXcgRGVzY3JpYmVMYXVuY2hUZW1wbGF0ZVZlcnNpb25zQ29tbWFuZCh7XG4gICAgICBMYXVuY2hUZW1wbGF0ZUlkOiBsYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgVmVyc2lvbnM6IFsnJERlZmF1bHQnXSxcbiAgICB9KSk7XG4gICAgaWYgKCFsYXVuY2hUZW1wbGF0ZXMuTGF1bmNoVGVtcGxhdGVWZXJzaW9ucykge1xuICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIGRlc2NyaWJlIGxhdW5jaCB0ZW1wbGF0ZSAke2xhdW5jaFRlbXBsYXRlSWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbGF1bmNoVGVtcGxhdGVzLkxhdW5jaFRlbXBsYXRlVmVyc2lvbnNbMF07XG5cbiAgICAvLyBub24tYWN0aXZlIGltYWdlc1xuICAgIGltYWdlc1RvRGVsZXRlID0gaW1hZ2VzVG9EZWxldGUuZmlsdGVyKGkgPT4gaS5JbWFnZUlkICE9IGxhdW5jaFRlbXBsYXRlLkxhdW5jaFRlbXBsYXRlRGF0YT8uSW1hZ2VJZCk7XG4gICAgLy8gaW1hZ2VzIG9sZGVyIHRoYW4gdHdvIGRheXMgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHdoZXJlIGFuIGltYWdlIGlzIGNyZWF0ZWQgd2hpbGUgd2UncmUgY2xlYW5pbmcgdXBcbiAgICBpbWFnZXNUb0RlbGV0ZSA9IGltYWdlc1RvRGVsZXRlLmZpbHRlcihpID0+IGkuQ3JlYXRpb25EYXRlICYmIERhdGUucGFyc2UoaS5DcmVhdGlvbkRhdGUpIDwgKERhdGUubm93KCkgLSAxMDAwICogNjAgKiA2MCAqIDQ4KSk7XG5cbiAgICBjb25zb2xlLmxvZyhgJHtpbWFnZXNUb0RlbGV0ZS5sZW5ndGh9IEFNSXMgbGVmdCBhZnRlciBmaWx0ZXJpbmcgYnkgZGF0ZSBhbmQgZXhjbHVkaW5nIEFNSSB1c2VkIGJ5IGxhdW5jaCB0ZW1wbGF0ZWApO1xuICB9XG5cbiAgLy8gZGVsZXRlIGFsbCB0aGF0IHdlIGZvdW5kXG4gIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzVG9EZWxldGUpIHtcbiAgICBpZiAoIWltYWdlLkltYWdlSWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTm8gaW1hZ2UgaWQ/ICR7SlNPTi5zdHJpbmdpZnkoaW1hZ2UpfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYERlcmVnaXN0ZXJpbmcgJHtpbWFnZS5JbWFnZUlkfWApO1xuXG4gICAgYXdhaXQgZWMyLnNlbmQobmV3IERlcmVnaXN0ZXJJbWFnZUNvbW1hbmQoe1xuICAgICAgSW1hZ2VJZDogaW1hZ2UuSW1hZ2VJZCxcbiAgICB9KSk7XG5cbiAgICBmb3IgKGNvbnN0IGJsb2NrTWFwcGluZyBvZiBpbWFnZS5CbG9ja0RldmljZU1hcHBpbmdzID8/IFtdKSB7XG4gICAgICBpZiAoYmxvY2tNYXBwaW5nLkVicz8uU25hcHNob3RJZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGVsZXRpbmcgJHtibG9ja01hcHBpbmcuRWJzLlNuYXBzaG90SWR9YCk7XG5cbiAgICAgICAgYXdhaXQgZWMyLnNlbmQobmV3IERlbGV0ZVNuYXBzaG90Q29tbWFuZCh7XG4gICAgICAgICAgU25hcHNob3RJZDogYmxvY2tNYXBwaW5nLkVicy5TbmFwc2hvdElkLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBEZWxldGVBbWlJbnB1dCB8IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIGNvbnRleHQ6IEFXU0xhbWJkYS5Db250ZXh0KSB7XG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pKTtcblxuICAgIHN3aXRjaCAoZXZlbnQuUmVxdWVzdFR5cGUpIHtcbiAgICAgIGNhc2UgJ1NjaGVkdWxlZCc6XG4gICAgICAgIGF3YWl0IGRlbGV0ZUFtaXMoZXZlbnQuTGF1bmNoVGVtcGxhdGVJZCwgZXZlbnQuU3RhY2tOYW1lLCBldmVudC5CdWlsZGVyTmFtZSwgZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdDcmVhdGUnOlxuICAgICAgY2FzZSAnVXBkYXRlJzpcbiAgICAgICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnU1VDQ0VTUycsICdPSycsICdEZWxldGVBbWlzJywge30pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGF3YWl0IGRlbGV0ZUFtaXMoJycsIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5TdGFja05hbWUsIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5CdWlsZGVyTmFtZSwgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IGN1c3RvbVJlc291cmNlUmVzcG9uZChldmVudCwgJ1NVQ0NFU1MnLCAnT0snLCBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsIHt9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgIT0gJ1NjaGVkdWxlZCcpIHtcbiAgICAgIGF3YWl0IGN1c3RvbVJlc291cmNlUmVzcG9uZChldmVudCwgJ0ZBSUxFRCcsIChlIGFzIEVycm9yKS5tZXNzYWdlIHx8ICdJbnRlcm5hbCBFcnJvcicsIGNvbnRleHQubG9nU3RyZWFtTmFtZSwge30pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -235,6 +235,6 @@ class AmiBuilder extends common_1.ImageBuilderBase {
235
235
  }
236
236
  }
237
237
  _a = JSII_RTTI_SYMBOL_1;
238
- AmiBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.AmiBuilder", version: "0.11.3" };
238
+ AmiBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.AmiBuilder", version: "0.11.4" };
239
239
  exports.AmiBuilder = AmiBuilder;
240
240
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2RlcHJlY2F0ZWQvYW1pLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDZDQVdxQjtBQUVyQixxQ0FBNEM7QUFDNUMseURBQTJEO0FBQzNELDZEQUF5RDtBQUN6RCxrREFBNkY7QUFDN0YsMENBQWlEO0FBQ2pELHlDQUFzRDtBQUN0RCxnQ0FBbUQ7QUFFbkQsZ0VBQTJEO0FBbUczRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLFVBQVcsU0FBUSx5QkFBZ0I7SUFHOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNiLFdBQVcsRUFBRSxDQUFDLGNBQUUsQ0FBQyxLQUFLLEVBQUUsY0FBRSxDQUFDLFlBQVksRUFBRSxjQUFFLENBQUMsY0FBYyxFQUFFLGNBQUUsQ0FBQyxPQUFPLENBQUM7WUFDdkUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLHNCQUFzQixFQUFFLENBQUMsd0JBQVksQ0FBQyxNQUFNLEVBQUUsd0JBQVksQ0FBQyxLQUFLLENBQUM7WUFDakUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRztZQUNmLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGNBQWM7WUFDcEYsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlO1lBQ3ZDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxnQkFBZ0I7WUFDekMsWUFBWSxFQUFFLEtBQUss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d0JBQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO2dCQUN2QyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLGdCQUFnQjtnQkFDakQsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFdBQVcsRUFBRSxXQUFXO2FBQ3pCLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztRQUVKLGlEQUFpRDtRQUNqRCxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN0QyxZQUFZLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDakMsWUFBWSxFQUFFLG9CQUFvQjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFdBQVcsRUFBRSxXQUFXO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7OztBQTlNVSxnQ0FBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2V2ZW50cyBhcyBldmVudHMsXG4gIGF3c19ldmVudHNfdGFyZ2V0cyBhcyBldmVudHNfdGFyZ2V0cyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19pbWFnZWJ1aWxkZXIgYXMgaW1hZ2VidWlsZGVyLFxuICBhd3NfbG9ncyBhcyBsb2dzLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIFJlbW92YWxQb2xpY3ksXG4gIFN0YWNrLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEltYWdlQnVpbGRlckJhc2UgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBMaW51eFVidW50dUNvbXBvbmVudHMgfSBmcm9tICcuL2xpbnV4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2luZG93c0NvbXBvbmVudHMgfSBmcm9tICcuL3dpbmRvd3MtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUsIE9zLCBSdW5uZXJBbWksIFJ1bm5lckltYWdlLCBSdW5uZXJWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzJztcbmltcG9ydCB7IHNpbmdsZXRvbkxhbWJkYSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IHVuaXF1ZUltYWdlQnVpbGRlck5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgQW1pUmVjaXBlLCBkZWZhdWx0QmFzZUFtaSB9IGZyb20gJy4uL2FtaSc7XG5pbXBvcnQgeyBJbWFnZUJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IERlbGV0ZUFtaUZ1bmN0aW9uIH0gZnJvbSAnLi4vZGVsZXRlLWFtaS1mdW5jdGlvbic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Ige0BsaW5rIEFtaUJ1aWxkZXJ9IGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlCdWlsZGVyUHJvcHMge1xuICAvKipcbiAgICogSW1hZ2UgYXJjaGl0ZWN0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBcmNoaXRlY3R1cmUuWDg2XzY0XG4gICAqL1xuICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmU7XG5cbiAgLyoqXG4gICAqIEltYWdlIE9TLlxuICAgKlxuICAgKiBAZGVmYXVsdCBPUy5MSU5VWFxuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBPcztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiBHaXRIdWIgUnVubmVycyB0byBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lclZlcnNpb24/OiBSdW5uZXJWZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSB0aGUgQU1JIHRvIGJlIHJlYnVpbHQgZXZlcnkgZ2l2ZW4gaW50ZXJ2YWwuIFVzZWZ1bCBmb3Iga2VlcGluZyB0aGUgQU1JIHVwLWRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IEdpdEh1YiBydW5uZXIgdmVyc2lvbiBhbmQgbGF0ZXN0IE9TIHVwZGF0ZXMuXG4gICAqXG4gICAqIFNldCB0byB6ZXJvIHRvIGRpc2FibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLmRheXMoNylcbiAgICovXG4gIHJlYWRvbmx5IHJlYnVpbGRJbnRlcnZhbD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBWUEMgd2hlcmUgYnVpbGRlciBpbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVmYXVsdCBhY2NvdW50IFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHRvIGFzc2lnbiB0byBsYXVuY2hlZCBidWlsZGVyIGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbmV3IHNlY3VyaXR5IGdyb3VwXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgc2VjdXJpdHlHcm91cHN9XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLklTZWN1cml0eUdyb3VwO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXNzaWduIHRvIGxhdW5jaGVkIGJ1aWxkZXIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBuZXcgc2VjdXJpdHkgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgd2l0aGluIHRoZSBWUEMuIE9ubHkgdGhlIGZpcnN0IG1hdGNoZWQgc3VibmV0IHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVmYXVsdCBWUEMgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgdHlwZSB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgbTUubGFyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGF5cyBsb2cgZXZlbnRzIGFyZSBrZXB0IGluIENsb3VkV2F0Y2ggTG9ncy4gV2hlbiB1cGRhdGluZ1xuICAgKiB0aGlzIHByb3BlcnR5LCB1bnNldHRpbmcgaXQgZG9lc24ndCByZW1vdmUgdGhlIGxvZyByZXRlbnRpb24gcG9saWN5LiBUb1xuICAgKiByZW1vdmUgdGhlIHJldGVudGlvbiBwb2xpY3ksIHNldCB0aGUgdmFsdWUgdG8gYElORklOSVRFYC5cbiAgICpcbiAgICogQGRlZmF1bHQgbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUmV0ZW50aW9uPzogbG9ncy5SZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9ncyBvZiBpbWFnZSBidWlsZHMuIElmIGRlcGxveW1lbnQgZmFpbHMgb24gdGhlIGN1c3RvbSByZXNvdXJjZSwgdHJ5IHNldHRpbmcgdGhpcyB0byBgUmVtb3ZhbFBvbGljeS5SRVRBSU5gLiBUaGlzIHdheSB0aGUgbG9ncyBjYW4gc3RpbGwgYmUgdmlld2VkLCBhbmQgeW91IGNhbiBzZWUgd2h5IHRoZSBidWlsZCBmYWlsZWQuXG4gICAqXG4gICAqIFdlIHRyeSB0byBub3QgbGVhdmUgYW55dGhpbmcgYmVoaW5kIHdoZW4gcmVtb3ZlZC4gQnV0IHNvbWV0aW1lcyBhIGxvZyBzdGF5aW5nIGJlaGluZCBpcyB1c2VmdWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgRG9ja2VyIGluc2lkZSB0aGUgaW1hZ2UsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBydW5uZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxEb2NrZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFuIEFNSSBidWlsZGVyIHRoYXQgdXNlcyBBV1MgSW1hZ2UgQnVpbGRlciB0byBidWlsZCBBTUlzIHByZS1iYWtlZCB3aXRoIGFsbCB0aGUgR2l0SHViIEFjdGlvbnMgcnVubmVyIHJlcXVpcmVtZW50cy4gQnVpbGRlcnMgY2FuIGJlIHVzZWQgd2l0aCB7QGxpbmsgRWMyUnVubmVyfS5cbiAqXG4gKiBFYWNoIGJ1aWxkZXIgcmUtcnVucyBhdXRvbWF0aWNhbGx5IGF0IGEgc2V0IGludGVydmFsIHRvIG1ha2Ugc3VyZSB0aGUgQU1JcyBjb250YWluIHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgZXZlcnl0aGluZy5cbiAqXG4gKiBZb3UgY2FuIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNvbnN0cnVjdCB0byBjdXN0b21pemUgdGhlIEFNSSB1c2VkIHRvIHNwaW4tdXAgcnVubmVycy4gU29tZSBydW5uZXIgcHJvdmlkZXJzIG1heSByZXF1aXJlIGN1c3RvbSBjb21wb25lbnRzLiBDaGVjayB0aGUgcnVubmVyIHByb3ZpZGVyIGRvY3VtZW50YXRpb24uXG4gKlxuICogRm9yIGV4YW1wbGUsIHRvIHNldCBhIHNwZWNpZmljIHJ1bm5lciB2ZXJzaW9uLCByZWJ1aWxkIHRoZSBpbWFnZSBldmVyeSAyIHdlZWtzLCBhbmQgYWRkIGEgZmV3IHBhY2thZ2VzIGZvciB0aGUgRUMyIHByb3ZpZGVyLCB1c2U6XG4gKlxuICogYGBgXG4gKiBjb25zdCBidWlsZGVyID0gbmV3IEFtaUJ1aWxkZXIodGhpcywgJ0J1aWxkZXInLCB7XG4gKiAgICAgcnVubmVyVmVyc2lvbjogUnVubmVyVmVyc2lvbi5zcGVjaWZpYygnMi4yOTMuMCcpLFxuICogICAgIHJlYnVpbGRJbnRlcnZhbDogRHVyYXRpb24uZGF5cygxNCksXG4gKiB9KTtcbiAqIGJ1aWxkZXIuYWRkQ29tcG9uZW50KG5ldyBJbWFnZUJ1aWxkZXJDb21wb25lbnQoc2NvcGUsIGlkLCB7XG4gKiAgIHBsYXRmb3JtOiAnTGludXgnLFxuICogICBkaXNwbGF5TmFtZTogJ3A3emlwJyxcbiAqICAgZGVzY3JpcHRpb246ICdJbnN0YWxsIHNvbWUgbW9yZSBwYWNrYWdlcycsXG4gKiAgIGNvbW1hbmRzOiBbXG4gKiAgICAgJ2FwdC1nZXQgaW5zdGFsbCBwN3ppcCcsXG4gKiAgIF0sXG4gKiB9KSk7XG4gKiBuZXcgRWMyUnVubmVyUHJvdmlkZXIodGhpcywgJ0VDMiBwcm92aWRlcicsIHtcbiAqICAgICBsYWJlbHM6IFsnY3VzdG9tLWVjMiddLFxuICogICAgIGFtaUJ1aWxkZXI6IGJ1aWxkZXIsXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBkZXByZWNhdGVkIHVzZSBSdW5uZXJJbWFnZUJ1aWxkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFtaUJ1aWxkZXIgZXh0ZW5kcyBJbWFnZUJ1aWxkZXJCYXNlIHtcbiAgcHJpdmF0ZSBib3VuZEFtaT86IFJ1bm5lckFtaTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEFtaUJ1aWxkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgb3M6IHByb3BzPy5vcyxcbiAgICAgIHN1cHBvcnRlZE9zOiBbT3MuTElOVVgsIE9zLkxJTlVYX1VCVU5UVSwgT3MuTElOVVhfQU1BWk9OXzIsIE9zLldJTkRPV1NdLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBwcm9wcz8uYXJjaGl0ZWN0dXJlLFxuICAgICAgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlczogW0FyY2hpdGVjdHVyZS5YODZfNjQsIEFyY2hpdGVjdHVyZS5BUk02NF0sXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzPy5pbnN0YW5jZVR5cGUsXG4gICAgICB2cGM6IHByb3BzPy52cGMsXG4gICAgICBzZWN1cml0eUdyb3VwczogcHJvcHM/LnNlY3VyaXR5R3JvdXAgPyBbcHJvcHMuc2VjdXJpdHlHcm91cF0gOiBwcm9wcz8uc2VjdXJpdHlHcm91cHMsXG4gICAgICBzdWJuZXRTZWxlY3Rpb246IHByb3BzPy5zdWJuZXRTZWxlY3Rpb24sXG4gICAgICBsb2dSZW1vdmFsUG9saWN5OiBwcm9wcz8ubG9nUmVtb3ZhbFBvbGljeSxcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHM/LmxvZ1JldGVudGlvbixcbiAgICAgIHJ1bm5lclZlcnNpb246IHByb3BzPy5ydW5uZXJWZXJzaW9uLFxuICAgICAgcmVidWlsZEludGVydmFsOiBwcm9wcz8ucmVidWlsZEludGVydmFsLFxuICAgICAgaW1hZ2VUeXBlTmFtZTogJ0FNSScsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgYWxsIGJhc2ljIGNvbXBvbmVudHNcbiAgICBpZiAodGhpcy5vcy5pcyhPcy5XSU5ET1dTKSkge1xuICAgICAgdGhpcy5hZGRCYXNlV2luZG93c0NvbXBvbmVudHMocHJvcHM/Lmluc3RhbGxEb2NrZXIgPz8gdHJ1ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9zLmlzKE9zLkxJTlVYKSB8fCB0aGlzLm9zLmlzKE9zLkxJTlVYX1VCVU5UVSkpIHtcbiAgICAgIHRoaXMuYWRkQmFzZUxpbnV4Q29tcG9uZW50cyhwcm9wcz8uaW5zdGFsbERvY2tlciA/PyB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBPUyBmb3IgQU1JIGJ1aWxkZXI6ICR7dGhpcy5vcy5uYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQmFzZVdpbmRvd3NDb21wb25lbnRzKGluc3RhbGxEb2NrZXI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFkZENvbXBvbmVudChXaW5kb3dzQ29tcG9uZW50cy5jbG91ZHdhdGNoQWdlbnQodGhpcywgJ0Nsb3VkV2F0Y2ggYWdlbnQnKSk7XG4gICAgdGhpcy5hZGRDb21wb25lbnQoV2luZG93c0NvbXBvbmVudHMuYXdzQ2xpKHRoaXMsICdBV1MgQ0xJJykpO1xuICAgIHRoaXMuYWRkQ29tcG9uZW50KFdpbmRvd3NDb21wb25lbnRzLmdpdGh1YkNsaSh0aGlzLCAnR2l0SHViIENMSScpKTtcbiAgICB0aGlzLmFkZENvbXBvbmVudChXaW5kb3dzQ29tcG9uZW50cy5naXQodGhpcywgJ2dpdCcpKTtcbiAgICB0aGlzLmFkZENvbXBvbmVudChXaW5kb3dzQ29tcG9uZW50cy5naXRodWJSdW5uZXIodGhpcywgJ0dpdEh1YiBBY3Rpb25zIFJ1bm5lcicsIHRoaXMucnVubmVyVmVyc2lvbikpO1xuICAgIGlmIChpbnN0YWxsRG9ja2VyKSB7XG4gICAgICB0aGlzLmFkZENvbXBvbmVudChXaW5kb3dzQ29tcG9uZW50cy5kb2NrZXIodGhpcywgJ0RvY2tlcicpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEJhc2VMaW51eENvbXBvbmVudHMoaW5zdGFsbERvY2tlcjogYm9vbGVhbikge1xuICAgIHRoaXMuYWRkQ29tcG9uZW50KExpbnV4VWJ1bnR1Q29tcG9uZW50cy5yZXF1aXJlZFBhY2thZ2VzKHRoaXMsICdVcGdyYWRlIHBhY2thZ2VzIGFuZCBpbnN0YWxsIGJhc2ljcycsIHRoaXMuYXJjaGl0ZWN0dXJlKSk7XG4gICAgdGhpcy5hZGRDb21wb25lbnQoTGludXhVYnVudHVDb21wb25lbnRzLnJ1bm5lclVzZXIodGhpcywgJ1VzZXInLCB0aGlzLmFyY2hpdGVjdHVyZSkpO1xuICAgIHRoaXMuYWRkQ29tcG9uZW50KExpbnV4VWJ1bnR1Q29tcG9uZW50cy5hd3NDbGkodGhpcywgJ0FXUyBDTEknLCB0aGlzLmFyY2hpdGVjdHVyZSkpO1xuICAgIHRoaXMuYWRkQ29tcG9uZW50KExpbnV4VWJ1bnR1Q29tcG9uZW50cy5naXRodWJDbGkodGhpcywgJ0dpdEh1YiBDTEknLCB0aGlzLmFyY2hpdGVjdHVyZSkpO1xuICAgIHRoaXMuYWRkQ29tcG9uZW50KExpbnV4VWJ1bnR1Q29tcG9uZW50cy5naXQodGhpcywgJ2dpdCcsIHRoaXMuYXJjaGl0ZWN0dXJlKSk7XG4gICAgdGhpcy5hZGRDb21wb25lbnQoTGludXhVYnVudHVDb21wb25lbnRzLmdpdGh1YlJ1bm5lcih0aGlzLCAnR2l0SHViIEFjdGlvbnMgUnVubmVyJywgdGhpcy5ydW5uZXJWZXJzaW9uLCB0aGlzLmFyY2hpdGVjdHVyZSkpO1xuICAgIGlmIChpbnN0YWxsRG9ja2VyKSB7XG4gICAgICB0aGlzLmFkZENvbXBvbmVudChMaW51eFVidW50dUNvbXBvbmVudHMuZG9ja2VyKHRoaXMsICdEb2NrZXInLCB0aGlzLmFyY2hpdGVjdHVyZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjb21wb25lbnQgdG8gYmUgaW5zdGFsbGVkIGJlZm9yZSBhbnkgb3RoZXIgY29tcG9uZW50cy4gVXNlZnVsIGZvciByZXF1aXJlZCBzeXN0ZW0gc2V0dGluZ3MgbGlrZSBjZXJ0aWZpY2F0ZXMgb3IgcHJveHkgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBjb21wb25lbnRcbiAgICovXG4gIHByZXBlbmRDb21wb25lbnQoY29tcG9uZW50OiBJbWFnZUJ1aWxkZXJDb21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5ib3VuZEFtaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBTUkgaXMgYWxyZWFkeSBib3VuZC4gVXNlIHRoaXMgbWV0aG9kIGJlZm9yZSBwYXNzaW5nIHRoZSBidWlsZGVyIHRvIGEgcnVubmVyIHByb3ZpZGVyLicpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50LnBsYXRmb3JtICE9IHRoaXMucGxhdGZvcm0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcG9uZW50IHBsYXRmb3JtIGRvZXNuXFwndCBtYXRjaCBidWlsZGVyIHBsYXRmb3JtJyk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50cyA9IFtjb21wb25lbnRdLmNvbmNhdCh0aGlzLmNvbXBvbmVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbXBvbmVudCB0byBiZSBpbnN0YWxsZWQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRcbiAgICovXG4gIGFkZENvbXBvbmVudChjb21wb25lbnQ6IEltYWdlQnVpbGRlckNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLmJvdW5kQW1pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FNSSBpcyBhbHJlYWR5IGJvdW5kLiBVc2UgdGhpcyBtZXRob2QgYmVmb3JlIHBhc3NpbmcgdGhlIGJ1aWxkZXIgdG8gYSBydW5uZXIgcHJvdmlkZXIuJyk7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnQucGxhdGZvcm0gIT0gdGhpcy5wbGF0Zm9ybSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wb25lbnQgcGxhdGZvcm0gZG9lc25cXCd0IG1hdGNoIGJ1aWxkZXIgcGxhdGZvcm0nKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgZXh0cmEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuIFRoaXMgaGVscHMgZGVhbCB3aXRoIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyBmb3IgR2l0SHViIEVudGVycHJpc2UgU2VydmVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCBwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGEgZmlsZSBjYWxsZWQgY2VydHMucGVtIGNvbnRhaW5pbmcgYWxsIHRoZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZXNcbiAgICovXG4gIHB1YmxpYyBhZGRFeHRyYUNlcnRpZmljYXRlcyhwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5wbGF0Zm9ybSA9PSAnTGludXgnKSB7XG4gICAgICB0aGlzLnByZXBlbmRDb21wb25lbnQoTGludXhVYnVudHVDb21wb25lbnRzLmV4dHJhQ2VydGlmaWNhdGVzKHRoaXMsICdFeHRyYSBDZXJ0cycsIHBhdGgpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGxhdGZvcm0gPT0gJ1dpbmRvd3MnKSB7XG4gICAgICB0aGlzLnByZXBlbmRDb21wb25lbnQoV2luZG93c0NvbXBvbmVudHMuZXh0cmFDZXJ0aWZpY2F0ZXModGhpcywgJ0V4dHJhIENlcnRzJywgcGF0aCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcGxhdGZvcm06ICR7dGhpcy5wbGF0Zm9ybX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IElSdW5uZXJQcm92aWRlciB0byBmaW5hbGl6ZSBzZXR0aW5ncyBhbmQgY3JlYXRlIHRoZSBBTUkgYnVpbGRlci5cbiAgICovXG4gIGJpbmRBbWkoKTogUnVubmVyQW1pIHtcbiAgICBpZiAodGhpcy5ib3VuZEFtaSkge1xuICAgICAgcmV0dXJuIHRoaXMuYm91bmRBbWk7XG4gICAgfVxuXG4gICAgY29uc3QgbGF1bmNoVGVtcGxhdGUgPSBuZXcgZWMyLkxhdW5jaFRlbXBsYXRlKHRoaXMsICdMYXVuY2ggdGVtcGxhdGUnLCB7XG4gICAgICByZXF1aXJlSW1kc3YyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhY2tOYW1lID0gY2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcbiAgICBjb25zdCBidWlsZGVyTmFtZSA9IHRoaXMubm9kZS5wYXRoO1xuXG4gICAgY29uc3QgZGlzdCA9IG5ldyBpbWFnZWJ1aWxkZXIuQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih0aGlzLCAnRGlzdHJpYnV0aW9uJywge1xuICAgICAgbmFtZTogdW5pcXVlSW1hZ2VCdWlsZGVyTmFtZSh0aGlzKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgZGlzdHJpYnV0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgcmVnaW9uOiBTdGFjay5vZih0aGlzKS5yZWdpb24sXG4gICAgICAgICAgYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgTmFtZTogYCR7Y2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTAwLFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnXy0nLFxuICAgICAgICAgICAgfSl9LXt7IGltYWdlYnVpbGRlcjpidWlsZERhdGUgfX1gLFxuICAgICAgICAgICAgQW1pVGFnczoge1xuICAgICAgICAgICAgICAnTmFtZSc6IHRoaXMubm9kZS5pZCxcbiAgICAgICAgICAgICAgJ0dpdEh1YlJ1bm5lcnM6U3RhY2snOiBzdGFja05hbWUsXG4gICAgICAgICAgICAgICdHaXRIdWJSdW5uZXJzOkJ1aWxkZXInOiBidWlsZGVyTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlLmxhdW5jaFRlbXBsYXRlSWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVjaXBlID0gbmV3IEFtaVJlY2lwZSh0aGlzLCAnQW1pIFJlY2lwZScsIHtcbiAgICAgIHBsYXRmb3JtOiB0aGlzLnBsYXRmb3JtLFxuICAgICAgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzLFxuICAgICAgYXJjaGl0ZWN0dXJlOiB0aGlzLmFyY2hpdGVjdHVyZSxcbiAgICAgIGJhc2VBbWk6IGRlZmF1bHRCYXNlQW1pKHRoaXMsIHRoaXMub3MsIHRoaXMuYXJjaGl0ZWN0dXJlKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvZyA9IHRoaXMuY3JlYXRlTG9nKHJlY2lwZS5uYW1lKTtcbiAgICBjb25zdCBpbmZyYSA9IHRoaXMuY3JlYXRlSW5mcmFzdHJ1Y3R1cmUoW1xuICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlJyksXG4gICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0VDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlcicpLFxuICAgIF0pO1xuICAgIHRoaXMuY3JlYXRlSW1hZ2UoaW5mcmEsIGRpc3QsIGxvZywgcmVjaXBlLmFybiwgdW5kZWZpbmVkKTtcbiAgICB0aGlzLmNyZWF0ZVBpcGVsaW5lKGluZnJhLCBkaXN0LCBsb2csIHJlY2lwZS5hcm4sIHVuZGVmaW5lZCk7XG5cbiAgICB0aGlzLmJvdW5kQW1pID0ge1xuICAgICAgbGF1bmNoVGVtcGxhdGU6IGxhdW5jaFRlbXBsYXRlLFxuICAgICAgYXJjaGl0ZWN0dXJlOiB0aGlzLmFyY2hpdGVjdHVyZSxcbiAgICAgIG9zOiB0aGlzLm9zLFxuICAgICAgbG9nR3JvdXA6IGxvZyxcbiAgICAgIHJ1bm5lclZlcnNpb246IHRoaXMucnVubmVyVmVyc2lvbixcbiAgICB9O1xuXG4gICAgdGhpcy5pbWFnZUNsZWFuZXIobGF1bmNoVGVtcGxhdGUsIHN0YWNrTmFtZSwgYnVpbGRlck5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuYm91bmRBbWk7XG4gIH1cblxuICBwcml2YXRlIGltYWdlQ2xlYW5lcihsYXVuY2hUZW1wbGF0ZTogZWMyLkxhdW5jaFRlbXBsYXRlLCBzdGFja05hbWU6IHN0cmluZywgYnVpbGRlck5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGRlbGV0ZXIgPSBzaW5nbGV0b25MYW1iZGEoRGVsZXRlQW1pRnVuY3Rpb24sIHRoaXMsICdkZWxldGUtYW1pJywge1xuICAgICAgZGVzY3JpcHRpb246ICdEZWxldGUgb2xkIEdpdEh1YiBSdW5uZXIgQU1JcycsXG4gICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2VjMjpEZXNjcmliZUxhdW5jaFRlbXBsYXRlVmVyc2lvbnMnLCAnZWMyOkRlc2NyaWJlSW1hZ2VzJywgJ2VjMjpEZXJlZ2lzdGVySW1hZ2UnLCAnZWMyOkRlbGV0ZVNuYXBzaG90J10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgfSk7XG5cbiAgICAvLyBkZWxldGUgb2xkIEFNSXMgb24gc2NoZWR1bGVcbiAgICBjb25zdCBldmVudFJ1bGUgPSBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ0RlbGV0ZSBBTUkgU2NoZWR1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLnJhdGUoY2RrLkR1cmF0aW9uLmRheXMoMSkpLFxuICAgICAgZGVzY3JpcHRpb246IGBEZWxldGUgb2xkIEFNSXMgZm9yICR7YnVpbGRlck5hbWV9YCxcbiAgICB9KTtcbiAgICBldmVudFJ1bGUuYWRkVGFyZ2V0KG5ldyBldmVudHNfdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihkZWxldGVyLCB7XG4gICAgICBldmVudDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgUmVxdWVzdFR5cGU6ICdTY2hlZHVsZWQnLFxuICAgICAgICBMYXVuY2hUZW1wbGF0ZUlkOiBsYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICAgICAgQnVpbGRlck5hbWU6IGJ1aWxkZXJOYW1lLFxuICAgICAgfSksXG4gICAgfSkpO1xuXG4gICAgLy8gZGVsZXRlIGFsbCBBTUlzIHdoZW4gdGhpcyBjb25zdHJ1Y3QgaXMgcmVtb3ZlZFxuICAgIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQU1JIERlbGV0ZXInLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IGRlbGV0ZXIuZnVuY3Rpb25Bcm4sXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkFtaURlbGV0ZXInLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICAgICAgQnVpbGRlck5hbWU6IGJ1aWxkZXJOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGJpbmREb2NrZXJJbWFnZSgpOiBSdW5uZXJJbWFnZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbWlCdWlsZGVyIGNhbm5vdCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlciBpbWFnZXMnKTtcbiAgfVxufVxuIl19