@trautonen/cdk-dns-validated-certificate 0.1.51 → 0.1.53

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.
package/.jsii CHANGED
@@ -3481,7 +3481,7 @@
3481
3481
  "hasDefaultInterfaces": true
3482
3482
  }
3483
3483
  },
3484
- "tscRootDir": "src"
3484
+ "tscRootDir": "/home/runner/work/cdk-dns-validated-certificate/cdk-dns-validated-certificate/src"
3485
3485
  },
3486
3486
  "name": "@trautonen/cdk-dns-validated-certificate",
3487
3487
  "readme": {
@@ -3921,6 +3921,6 @@
3921
3921
  "symbolId": "src/dns-validated-certificate:ValidationHostedZone"
3922
3922
  }
3923
3923
  },
3924
- "version": "0.1.51",
3925
- "fingerprint": "i3eUFY/MnKy7YR4Lu+7Qf1puauNJCogDJmmqh+dM/nA="
3924
+ "version": "0.1.53",
3925
+ "fingerprint": "HTSdWYCX+X3Of6pb5J1PyYMNCsAsU9wiIpbM/8Jj73Y="
3926
3926
  }
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.CertificateRequestorFunction = void 0;
4
37
  // ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
5
- const path = require("path");
6
- const lambda = require("aws-cdk-lib/aws-lambda");
38
+ const path = __importStar(require("path"));
39
+ const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
7
40
  /**
8
41
  * An AWS Lambda function which executes src/certificate-requestor.
9
42
  */
@@ -20,4 +53,4 @@ class CertificateRequestorFunction extends lambda.Function {
20
53
  }
21
54
  }
22
55
  exports.CertificateRequestorFunction = CertificateRequestorFunction;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NlcnRpZmljYXRlLXJlcXVlc3Rvci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDL0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QztRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCxvRUFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgQ2VydGlmaWNhdGVSZXF1ZXN0b3JGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL2NlcnRpZmljYXRlLXJlcXVlc3Rvci5cbiAqL1xuZXhwb3J0IGNsYXNzIENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMjIueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2Fzc2V0cy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhJykpLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcbiAgfVxufSJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NlcnRpZmljYXRlLXJlcXVlc3Rvci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2RUFBNkU7QUFDN0UsMkNBQTZCO0FBQzdCLCtEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDL0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QztRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCxvRUFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgQ2VydGlmaWNhdGVSZXF1ZXN0b3JGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL2NlcnRpZmljYXRlLXJlcXVlc3Rvci5cbiAqL1xuZXhwb3J0IGNsYXNzIENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMjIueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2Fzc2V0cy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhJykpLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcbiAgfVxufSJdfQ==
@@ -1,7 +1,40 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.handler = void 0;
4
- const crypto = require("crypto");
37
+ const crypto = __importStar(require("crypto"));
5
38
  const client_acm_1 = require("@aws-sdk/client-acm");
6
39
  const client_route_53_1 = require("@aws-sdk/client-route-53");
7
40
  const client_sts_1 = require("@aws-sdk/client-sts");
@@ -264,4 +297,4 @@ const handler = async (event) => {
264
297
  throw new Error(`Invalid request type`);
265
298
  };
266
299
  exports.handler = handler;
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFnQztBQUNoQyxvREFZNEI7QUFDNUIsOERBUWlDO0FBQ2pDLG9EQUEwRjtBQUcxRixtQ0FRZ0I7QUFzQmhCLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBK0IsRUFBYyxFQUFFO0lBQ3RFLGtEQUFrRDtJQUNsRCxPQUFPLFVBQW1DLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFdBQThCLEVBQThCLEVBQUU7SUFDbEcsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUssRUFBRSxHQUFHLENBQUMsY0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkgsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsR0FBRyxFQUFFLEVBQUU7Z0JBQ1AsZUFBZSxFQUFFO29CQUNmO3dCQUNFLEtBQUssRUFBRSxNQUFN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T0FBTztnQkFDTCxrQkFBa0IsRUFBRSxjQUFjO2dCQUNsQyxJQUFJLEVBQUU7b0JBQ0osR0FBRyxFQUFFLGNBQWM7aUJBQ3BCO2FBQ0YsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQTtBQXhEWSxRQUFBLE9BQU8sV0F3RG5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0bydcbmltcG9ydCB7XG4gIEFDTUNsaWVudCxcbiAgQWRkVGFnc1RvQ2VydGlmaWNhdGVDb21tYW5kLFxuICBBZGRUYWdzVG9DZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgQ2VydGlmaWNhdGVEZXRhaWwsXG4gIERlbGV0ZUNlcnRpZmljYXRlQ29tbWFuZCxcbiAgRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlQ2VydGlmaWNhdGVDb21tYW5kLFxuICBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICBSZXF1ZXN0Q2VydGlmaWNhdGVDb21tYW5kLFxuICBSZXF1ZXN0Q2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIHdhaXRVbnRpbENlcnRpZmljYXRlVmFsaWRhdGVkLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYWNtJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlQWN0aW9uLFxuICBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kLFxuICBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kSW5wdXQsXG4gIEludmFsaWRDaGFuZ2VCYXRjaCxcbiAgUmVzb3VyY2VSZWNvcmRTZXQsXG4gIFJvdXRlNTNDbGllbnQsXG4gIHdhaXRVbnRpbFJlc291cmNlUmVjb3JkU2V0c0NoYW5nZWQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1yb3V0ZS01MydcbmltcG9ydCB7IEFzc3VtZVJvbGVDb21tYW5kLCBBc3N1bWVSb2xlQ29tbWFuZElucHV0LCBTVFNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJ1xuaW1wb3J0IHR5cGUgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHksIFByb3ZpZGVyIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnXG5pbXBvcnQge1xuICBjbGVhbkNoYW5nZUlkLFxuICBjbGVhbkRvbWFpbk5hbWUsXG4gIGNvbnRhaW5zU2FtZSxcbiAgb2JqZWN0VG9TdHJpbmcsXG4gIG9yZGVyQnlTaWduaWZpY2FuY2UsXG4gIHN0cmluZ1RvQm9vbGVhbixcbiAgdHJ5Rm9yLFxufSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXMgPSB7XG4gIERvbWFpbk5hbWU6IHN0cmluZ1xuICBIb3N0ZWRab25lSWQ6IHN0cmluZ1xuICBWYWxpZGF0aW9uUm9sZUFybj86IHN0cmluZ1xuICBWYWxpZGF0aW9uRXh0ZXJuYWxJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBQcm9wZXJ0aWVzID0ge1xuICBEb21haW5OYW1lOiBzdHJpbmdcbiAgQWx0ZXJuYXRpdmVEb21haW5OYW1lcz86IHN0cmluZ1tdXG4gIFZhbGlkYXRpb25Ib3N0ZWRab25lczogUmVjb3JkPHN0cmluZywgVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzPlxuICBDZXJ0aWZpY2F0ZVJlZ2lvbjogc3RyaW5nXG4gIENsZWFudXBWYWxpZGF0aW9uUmVjb3Jkczogc3RyaW5nXG4gIFRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkOiBzdHJpbmdcbiAgVGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgUmVtb3ZhbFBvbGljeTogc3RyaW5nXG59XG5cbnR5cGUgUm91dGU1M0ZhY3RvcnkgPSAocm9sZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkLCBleHRlcm5hbElkOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IFJvdXRlNTNDbGllbnRcblxuY29uc3QgcGFyc2VQcm9wZXJ0aWVzID0gKHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9wZXJ0aWVzID0+IHtcbiAgLy8gbWF5YmUgc2hvdWxkIGFjdHVhbGx5IHBhcnNlIGFuZCBub3QganVzdCBhc3N1bWVcbiAgcmV0dXJuIHByb3BlcnRpZXMgYXMgdW5rbm93biBhcyBQcm9wZXJ0aWVzXG59XG5cbmNvbnN0IHBhcnNlRG9tYWluVmFsaWRhdGlvblJlY29yZHMgPSAoY2VydGlmaWNhdGU6IENlcnRpZmljYXRlRGV0YWlsKTogUmVzb3VyY2VSZWNvcmRTZXRbXSB8IG51bGwgPT4ge1xuICBjb25zdCBvcHRpb25zID0gY2VydGlmaWNhdGUuRG9tYWluVmFsaWRhdGlvbk9wdGlvbnMgPz8gW11cbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmV2ZXJ5KChvcHQpID0+IG9wdC5SZXNvdXJjZVJlY29yZD8uTmFtZSkpIHtcbiAgICBjb25zdCB1bmlxdWVSZWNvcmRzID0gWy4uLm5ldyBNYXAob3B0aW9ucy5tYXAoKG9wdCkgPT4gW29wdC5SZXNvdXJjZVJlY29yZD8uTmFtZSEsIG9wdC5SZXNvdXJjZVJlY29yZCFdKSkudmFsdWVzKCldXG4gICAgcmV0dXJuIHVuaXF1ZVJlY29yZHMubWFwKChyZWNvcmQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIE5hbWU6IHJlY29yZC5OYW1lLFxuICAgICAgICBUeXBlOiByZWNvcmQuVHlwZSxcbiAgICAgICAgVFRMOiAzMCxcbiAgICAgICAgUmVzb3VyY2VSZWNvcmRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgVmFsdWU6IHJlY29yZC5WYWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgY2hhbmdlUmVjb3JkU2V0cyA9IGFzeW5jIChcbiAgcm91dGU1MzogUm91dGU1M0NsaWVudCxcbiAgYWN0aW9uOiBDaGFuZ2VBY3Rpb24sXG4gIHJlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10sXG4gIGhvc3RlZFpvbmVJZDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgY2hhbmdlUmVjb3JkU2V0c0lucHV0OiBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kSW5wdXQgPSB7XG4gICAgSG9zdGVkWm9uZUlkOiBob3N0ZWRab25lSWQsXG4gICAgQ2hhbmdlQmF0Y2g6IHtcbiAgICAgIENoYW5nZXM6IHJlY29yZHMubWFwKChyZWNvcmQpID0+ICh7XG4gICAgICAgIEFjdGlvbjogYWN0aW9uLFxuICAgICAgICBSZXNvdXJjZVJlY29yZFNldDogcmVjb3JkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCB7IENoYW5nZUluZm8gfSA9IGF3YWl0IHJvdXRlNTMuc2VuZChuZXcgQ2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQ29tbWFuZChjaGFuZ2VSZWNvcmRTZXRzSW5wdXQpKVxuICAgIGNvbnN0IGNoYW5nZUlkID0gQ2hhbmdlSW5mbz8uSWQhXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FpdFVudGlsUmVzb3VyY2VSZWNvcmRTZXRzQ2hhbmdlZCh7IGNsaWVudDogcm91dGU1MywgbWF4V2FpdFRpbWU6IDE4MCB9LCB7IElkOiBjaGFuZ2VJZCB9KVxuICAgIGlmIChyZXN1bHQuc3RhdGUgIT09ICdTVUNDRVNTJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVmFsaWRhdGlvbiByZWNvcmRzIG5ldmVyIGNoYW5nZWQgZm9yIGhvc3RlZCB6b25lICR7aG9zdGVkWm9uZUlkfTogWyR7cmVzdWx0LnN0YXRlfV0gJHtyZXN1bHQucmVhc29uID8/ICcnfWBcbiAgICAgIClcbiAgICB9XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gYWN0aW9uID09PSAnQ1JFQVRFJyB8fCBhY3Rpb24gPT09ICdVUFNFUlQnID8gJ2NoYW5nZWQnIDogJ2RlbGV0ZWQnXG4gICAgY29uc3QgY2hhbmdlID0gY2xlYW5DaGFuZ2VJZChjaGFuZ2VJZClcbiAgICBjb25zb2xlLmxvZyhgVmFsaWRhdGlvbiByZWNvcmRzIHN1Y2Nlc2Z1bGx5ICR7b3BlcmF0aW9ufSBmb3IgaG9zdGVkIHpvbmUgJHtob3N0ZWRab25lSWR9IHdpdGggY2hhbmdlIGlkICR7Y2hhbmdlfWApXG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ0RFTEVURScgJiYgZXJyb3IgaW5zdGFuY2VvZiBJbnZhbGlkQ2hhbmdlQmF0Y2ggJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnbm90IGZvdW5kJykpIHtcbiAgICAgIC8vIHRoZXJlJ3MgYSBkZWxldGlvbiByYWNlIGNvbmRpdGlvbiB3aGVyZSBzb21lIG90aGVyIGNlcnRpZmljYXRlIGhhcyBhbHJlYWR5IGRlbGV0ZWQgdGhlIHJlY29yZHNcbiAgICAgIGNvbnNvbGUubG9nKGBBbGwgdmFsaWRhdGlvbiByZWNvcmRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZSBvdGhlciBjZXJ0aWZpY2F0ZWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGdldFJlY29yZHNGb3Jab25lTmFtZXMgPSAoXG4gIHJlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10sXG4gIHpvbmVOYW1lczogc3RyaW5nW10sXG4gIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIFJlc291cmNlUmVjb3JkU2V0W10+XG4pOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVJlY29yZFNldFtdPiA9PiB7XG4gIGNvbnN0IFt6b25lTmFtZSwgLi4ucmVzdFpvbmVOYW1lc10gPSB6b25lTmFtZXNcbiAgaWYgKCF6b25lTmFtZSkge1xuICAgIHJldHVybiByZXN1bHQgPz8ge31cbiAgfVxuICBjb25zdCBtYXRjaGluZ1JlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10gPSBbXVxuICBjb25zdCB1bm1hdGNoaW5nUmVjb3JkczogUmVzb3VyY2VSZWNvcmRTZXRbXSA9IFtdXG4gIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICBjb25zdCBub3JtYWxpemVkUmVjb3JkTmFtZSA9IGNsZWFuRG9tYWluTmFtZShyZWNvcmQuTmFtZSEpXG4gICAgaWYgKG5vcm1hbGl6ZWRSZWNvcmROYW1lID09PSB6b25lTmFtZSB8fCBub3JtYWxpemVkUmVjb3JkTmFtZS5lbmRzV2l0aCgnLicgKyB6b25lTmFtZSkpIHtcbiAgICAgIG1hdGNoaW5nUmVjb3Jkcy5wdXNoKHJlY29yZClcbiAgICB9IGVsc2Uge1xuICAgICAgdW5tYXRjaGluZ1JlY29yZHMucHVzaChyZWNvcmQpXG4gICAgfVxuICB9XG4gIHJldHVybiBnZXRSZWNvcmRzRm9yWm9uZU5hbWVzKHVubWF0Y2hpbmdSZWNvcmRzLCByZXN0Wm9uZU5hbWVzLCB7XG4gICAgLi4uKHJlc3VsdCA/PyB7fSksXG4gICAgW3pvbmVOYW1lXTogbWF0Y2hpbmdSZWNvcmRzLFxuICB9KVxufVxuXG5jb25zdCByZXF1ZXN0Q2VydGlmaWNhdGUgPSBhc3luYyAoXG4gIGFjbTogQUNNQ2xpZW50LFxuICByb3V0ZTUzOiBSb3V0ZTUzRmFjdG9yeSxcbiAgcmVxdWVzdElkOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHsgRG9tYWluTmFtZSwgQWx0ZXJuYXRpdmVEb21haW5OYW1lcywgVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgfSA9IHByb3BlcnRpZXNcblxuICBjb25zb2xlLmxvZyhgUmVxdWVzdGluZyBjZXJ0aWZpY2F0ZSBmb3IgJHtEb21haW5OYW1lfWApXG5cbiAgY29uc3QgcmVxdWVzdENlcnRpZmljYXRlSW5wdXQ6IFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICBEb21haW5OYW1lLFxuICAgIFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBBbHRlcm5hdGl2ZURvbWFpbk5hbWVzLFxuICAgIElkZW1wb3RlbmN5VG9rZW46IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocmVxdWVzdElkKS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIDMyKSxcbiAgICBWYWxpZGF0aW9uTWV0aG9kOiAnRE5TJyxcbiAgICBPcHRpb25zOiB7XG4gICAgICBDZXJ0aWZpY2F0ZVRyYW5zcGFyZW5jeUxvZ2dpbmdQcmVmZXJlbmNlOiBUcmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcsXG4gICAgfSxcbiAgfVxuICBjb25zdCB7IENlcnRpZmljYXRlQXJuIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgUmVxdWVzdENlcnRpZmljYXRlQ29tbWFuZChyZXF1ZXN0Q2VydGlmaWNhdGVJbnB1dCkpXG5cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHJlcXVlc3RlZGApXG5cbiAgY29uc3QgdmFsaWRhdGlvbk1heFNlY29uZHMgPSAxODBcbiAgY29uc3QgdmFsaWRhdGlvblRpbWVvdXRFcnJvciA9IGBEb21haW4gdmFsaWRhdGlvbiBvcHRpb25zIHdlcmUgbm90IGZvdW5kIGluICR7dmFsaWRhdGlvbk1heFNlY29uZHN9IHNlY29uZHNgXG4gIGNvbnN0IHZhbGlkYXRpb25SZWNvcmRzID0gYXdhaXQgdHJ5Rm9yKHZhbGlkYXRpb25NYXhTZWNvbmRzLCB2YWxpZGF0aW9uVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm4sXG4gICAgfVxuICAgIGNvbnN0IHsgQ2VydGlmaWNhdGUgfSA9IGF3YWl0IGFjbS5zZW5kKG5ldyBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZChkZXNjcmliZUNlcnRpZmljYXRlSW5wdXQpKVxuICAgIHJldHVybiBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKENlcnRpZmljYXRlISlcbiAgfSlcblxuICBjb25zdCBob3N0ZWRab25lcyA9IE9iamVjdC52YWx1ZXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpXG4gIGNvbnN0IGhvc3RlZFpvbmVJZHMgPSBob3N0ZWRab25lcy5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBVcHNlcnRpbmcgJHt2YWxpZGF0aW9uUmVjb3Jkcy5sZW5ndGh9IHZhbGlkYXRpb24gcmVjb3JkKHMpIGludG8gaG9zdGVkIHpvbmUocykgJHtob3N0ZWRab25lSWRzLmpvaW4oJywgJyl9OmBcbiAgKVxuICB2YWxpZGF0aW9uUmVjb3Jkcy5mb3JFYWNoKChyZWNvcmQpID0+XG4gICAgY29uc29sZS5sb2coYCR7cmVjb3JkLk5hbWV9ICR7cmVjb3JkLlR5cGV9ICR7cmVjb3JkLlJlc291cmNlUmVjb3Jkcz8ubWFwKChycikgPT4gcnIuVmFsdWUpLmpvaW4oJywnKX1gKVxuICApXG5cbiAgY29uc3QgcmVjb3Jkc0ZvclpvbmVOYW1lcyA9IGdldFJlY29yZHNGb3Jab25lTmFtZXMoXG4gICAgdmFsaWRhdGlvblJlY29yZHMsXG4gICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gIClcbiAgZm9yIChjb25zdCBob3N0ZWRab25lIG9mIGhvc3RlZFpvbmVzKSB7XG4gICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGNoYW5nZVJlY29yZFNldHMoXG4gICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICdVUFNFUlQnLFxuICAgICAgICByZWNvcmRzLFxuICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBjZXJ0aWZpY2F0ZSAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZWApXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRVbnRpbENlcnRpZmljYXRlVmFsaWRhdGVkKHsgY2xpZW50OiBhY20sIG1heFdhaXRUaW1lOiAzMDAgfSwgeyBDZXJ0aWZpY2F0ZUFybiB9KVxuICBpZiAocmVzdWx0LnN0YXRlICE9PSAnU1VDQ0VTUycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENlcnRpZmljYXRlIGZhaWxlZCAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZTogWyR7cmVzdWx0LnN0YXRlfV0gJHtyZXN1bHQucmVhc29uID8/ICcnfWApXG4gIH1cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWRgKVxuICByZXR1cm4gQ2VydGlmaWNhdGVBcm4hXG59XG5cbmNvbnN0IGRlbGV0ZUNlcnRpZmljYXRlID0gYXN5bmMgKFxuICBhY206IEFDTUNsaWVudCxcbiAgcm91dGU1MzogUm91dGU1M0ZhY3RvcnksXG4gIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgY2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZUFybn0gdXNhZ2UgdG8gZHJhaW4gYmVmb3JlIGRlbGV0aW9uYClcblxuICBjb25zdCB3YWl0VXNhZ2VNYXhTZWNvbmRzID0gNjAwXG4gIGNvbnN0IHdhaXRVc2FnZVRpbWVvdXRFcnJvciA9IGBDZXJ0aWZpY2F0ZSB3YXMgc3RpbGwgaW4gdXNlIGFmdGVyICR7d2FpdFVzYWdlTWF4U2Vjb25kc30gc2Vjb25kc2BcbiAgY29uc3QgY2VydGlmaWNhdGUgPSBhd2FpdCB0cnlGb3Iod2FpdFVzYWdlTWF4U2Vjb25kcywgd2FpdFVzYWdlVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICAgIH1cbiAgICBjb25zdCB7IENlcnRpZmljYXRlIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0KSlcbiAgICBjb25zdCBpblVzZUJ5ID0gQ2VydGlmaWNhdGU/LkluVXNlQnkgPz8gW11cbiAgICBpZiAoaW5Vc2VCeS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gQ2VydGlmaWNhdGUhXG4gIH0pXG4gIGNvbnNvbGUubG9nKCdDZXJ0aWZpY2F0ZSBpcyB1bnVzZWQgYW5kIHdpbGwgYmUgZGVsZXRlZCcpXG5cbiAgY29uc3QgdmFsaWRhdGlvblJlY29yZHMgPSBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKGNlcnRpZmljYXRlKVxuICBpZiAodmFsaWRhdGlvblJlY29yZHMgJiYgc3RyaW5nVG9Cb29sZWFuKHByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzKSkge1xuICAgIGNvbnN0IGhvc3RlZFpvbmVzID0gT2JqZWN0LnZhbHVlcyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcylcbiAgICBjb25zdCBob3N0ZWRab25lSWRzID0gaG9zdGVkWm9uZXMubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYERlbGV0aW5nICR7dmFsaWRhdGlvblJlY29yZHMubGVuZ3RofSB2YWxpZGF0aW9uIHJlY29yZChzKSBmcm9tIGhvc3RlZCB6b25lKHMpICR7aG9zdGVkWm9uZUlkcy5qb2luKCcsICcpfWBcbiAgICApXG5cbiAgICBjb25zdCByZWNvcmRzRm9yWm9uZU5hbWVzID0gZ2V0UmVjb3Jkc0ZvclpvbmVOYW1lcyhcbiAgICAgIHZhbGlkYXRpb25SZWNvcmRzLFxuICAgICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gICAgKVxuICAgIGZvciAoY29uc3QgaG9zdGVkWm9uZSBvZiBob3N0ZWRab25lcykge1xuICAgICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCBjaGFuZ2VSZWNvcmRTZXRzKFxuICAgICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICAgJ0RFTEVURScsXG4gICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coYERlbGV0aW5nIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59IGZyb20gQUNNYClcbiAgY29uc3QgZGVsZXRlQ2VydGlmaWNhdGVJbnB1dDogRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQgPSB7XG4gICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICB9XG4gIGF3YWl0IGFjbS5zZW5kKG5ldyBEZWxldGVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVsZXRlQ2VydGlmaWNhdGVJbnB1dCkpXG4gIGNvbnNvbGUubG9nKGBDZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufSBzdWNjZXNzZnVsbHkgZGVsZXRlZGApXG59XG5cbmNvbnN0IGFkZFRhZ3MgPSBhc3luYyAoYWNtOiBBQ01DbGllbnQsIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsIHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgY29uc3QgdGFnTGlzdCA9IEFycmF5LmZyb20oT2JqZWN0LmVudHJpZXModGFncykubWFwKChbS2V5LCBWYWx1ZV0pID0+ICh7IEtleSwgVmFsdWUgfSkpKVxuICBjb25zdCBhZGRUYWdzSW5wdXQ6IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgIENlcnRpZmljYXRlQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICBUYWdzOiB0YWdMaXN0LFxuICB9XG5cbiAgY29uc29sZS5sb2coYEFkZGluZyAke3RhZ0xpc3QubGVuZ3RofSB0YWdzIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbiAgYXdhaXQgYWNtLnNlbmQobmV3IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZChhZGRUYWdzSW5wdXQpKVxuICBjb25zb2xlLmxvZyhgQWxsIHRhZ3Mgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbn1cblxuY29uc3Qgc2hvdWxkUmVxdWVzdE5ldyA9IChvbGRQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG9sZEhvc3RlZFpvbmVJZHMgPSBPYmplY3QudmFsdWVzKG9sZFByb3BlcnRpZXMuVmFsaWRhdGlvbkhvc3RlZFpvbmVzID8/IHt9KS5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuICBjb25zdCBuZXdIb3N0ZWRab25lSWRzID0gT2JqZWN0LnZhbHVlcyhuZXdQcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcyA/PyB7fSkubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcbiAgaWYgKCFjb250YWluc1NhbWUob2xkSG9zdGVkWm9uZUlkcywgbmV3SG9zdGVkWm9uZUlkcykpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLkRvbWFpbk5hbWUgIT09IG5ld1Byb3BlcnRpZXMuRG9tYWluTmFtZSkgcmV0dXJuIHRydWVcbiAgaWYgKCFjb250YWluc1NhbWUob2xkUHJvcGVydGllcy5BbHRlcm5hdGl2ZURvbWFpbk5hbWVzID8/IFtdLCBuZXdQcm9wZXJ0aWVzLkFsdGVybmF0aXZlRG9tYWluTmFtZXMgPz8gW10pKSByZXR1cm4gdHJ1ZVxuICBpZiAob2xkUHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gbmV3UHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbikgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzICE9PSBuZXdQcm9wZXJ0aWVzLkNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcykgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgIT09IG5ld1Byb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgIT09IG5ld1Byb3BlcnRpZXMuUmVtb3ZhbFBvbGljeSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGFzc3VtZVJvbGUgPSAoXG4gIHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm92aWRlcjxBd3NDcmVkZW50aWFsSWRlbnRpdHk+IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFyb2xlQXJuKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RzID0gbmV3IFNUU0NsaWVudCh7IHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICAgIGNvbnN0IGFzc3VtZVJvbGVJbnB1dDogQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdDZXJ0aWZpY2F0ZVJlcXVlc3RvcicsXG4gICAgICBFeHRlcm5hbElkOiBleHRlcm5hbElkLFxuICAgIH1cbiAgICBjb25zdCB7IENyZWRlbnRpYWxzIH0gPSBhd2FpdCBzdHMuc2VuZChuZXcgQXNzdW1lUm9sZUNvbW1hbmQoYXNzdW1lUm9sZUlucHV0KSlcbiAgICByZXR1cm4ge1xuICAgICAgYWNjZXNzS2V5SWQ6IENyZWRlbnRpYWxzPy5BY2Nlc3NLZXlJZCEsXG4gICAgICBzZWNyZXRBY2Nlc3NLZXk6IENyZWRlbnRpYWxzPy5TZWNyZXRBY2Nlc3NLZXkhLFxuICAgICAgc2Vzc2lvblRva2VuOiBDcmVkZW50aWFscz8uU2Vzc2lvblRva2VuISxcbiAgICAgIGV4cGlyYXRpb246IENyZWRlbnRpYWxzPy5FeHBpcmF0aW9uLFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSA9PiB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBwYXJzZVByb3BlcnRpZXMoZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzKVxuXG4gIGNvbnN0IGFjbSA9IG5ldyBBQ01DbGllbnQoeyByZWdpb246IHByb3BlcnRpZXMuQ2VydGlmaWNhdGVSZWdpb24sIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICBjb25zdCByb3V0ZTUzID0gKHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUm91dGU1M0NsaWVudCA9PiB7XG4gICAgcmV0dXJuIG5ldyBSb3V0ZTUzQ2xpZW50KHtcbiAgICAgIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyxcbiAgICAgIGNyZWRlbnRpYWxzOiBhc3N1bWVSb2xlKHJvbGVBcm4sIGV4dGVybmFsSWQpLFxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSAnQ3JlYXRlJzoge1xuICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlOlxcbiR7b2JqZWN0VG9TdHJpbmcocHJvcGVydGllcyl9YClcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnVXBkYXRlJzoge1xuICAgICAgbGV0IGNlcnRpZmljYXRlQXJuID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBpZiAoc2hvdWxkUmVxdWVzdE5ldyhwYXJzZVByb3BlcnRpZXMoZXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzKSwgcHJvcGVydGllcykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlIGR1ZSB0byBjaGFuZ2Ugb2YgcHJvcGVydGllczpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgY29uc3QgY2VydGlmaWNhdGVBcm4gPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWRcbiAgICAgIGlmIChwcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgPT09ICdkZXN0cm95Jykge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGVsZXRpbmcgb2xkIGNlcnRpZmljYXRlIGFzIHBlciByZW1vdmFsIHBvbGljeTpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGF3YWl0IGRlbGV0ZUNlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgY2VydGlmaWNhdGVBcm4sIHByb3BlcnRpZXMpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlcXVlc3QgdHlwZWApXG59XG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFnQztBQUNoQyxvREFZNEI7QUFDNUIsOERBUWlDO0FBQ2pDLG9EQUEwRjtBQUcxRixtQ0FRZ0I7QUFzQmhCLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBK0IsRUFBYyxFQUFFO0lBQ3RFLGtEQUFrRDtJQUNsRCxPQUFPLFVBQW1DLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFdBQThCLEVBQThCLEVBQUU7SUFDbEcsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUssRUFBRSxHQUFHLENBQUMsY0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkgsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsR0FBRyxFQUFFLEVBQUU7Z0JBQ1AsZUFB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RSxVQUFVLENBQUMsQ0FBQTtZQUNuRSxDQUFDO1lBQ0QsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxjQUFjO2dCQUNsQyxJQUFJLEVBQUU7b0JBQ0osR0FBRyxFQUFFLGNBQWM7aUJBQ3BCO2FBQ0YsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQTtBQXhEWSxRQUFBLE9BQU8sV0F3RG5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0bydcbmltcG9ydCB7XG4gIEFDTUNsaWVudCxcbiAgQWRkVGFnc1RvQ2VydGlmaWNhdGVDb21tYW5kLFxuICBBZGRUYWdzVG9DZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgQ2VydGlmaWNhdGVEZXRhaWwsXG4gIERlbGV0ZUNlcnRpZmljYXRlQ29tbWFuZCxcbiAgRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlQ2VydGlmaWNhdGVDb21tYW5kLFxuICBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICBSZXF1ZXN0Q2VydGlmaWNhdGVDb21tYW5kLFxuICBSZXF1ZXN0Q2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIHdhaXRVbnRpbENlcnRpZmljYXRlVmFsaWRhdGVkLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYWNtJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlQWN0aW9uLFxuICBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kLFxuICBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kSW5wdXQsXG4gIEludmFsaWRDaGFuZ2VCYXRjaCxcbiAgUmVzb3VyY2VSZWNvcmRTZXQsXG4gIFJvdXRlNTNDbGllbnQsXG4gIHdhaXRVbnRpbFJlc291cmNlUmVjb3JkU2V0c0NoYW5nZWQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1yb3V0ZS01MydcbmltcG9ydCB7IEFzc3VtZVJvbGVDb21tYW5kLCBBc3N1bWVSb2xlQ29tbWFuZElucHV0LCBTVFNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJ1xuaW1wb3J0IHR5cGUgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHksIFByb3ZpZGVyIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnXG5pbXBvcnQge1xuICBjbGVhbkNoYW5nZUlkLFxuICBjbGVhbkRvbWFpbk5hbWUsXG4gIGNvbnRhaW5zU2FtZSxcbiAgb2JqZWN0VG9TdHJpbmcsXG4gIG9yZGVyQnlTaWduaWZpY2FuY2UsXG4gIHN0cmluZ1RvQm9vbGVhbixcbiAgdHJ5Rm9yLFxufSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXMgPSB7XG4gIERvbWFpbk5hbWU6IHN0cmluZ1xuICBIb3N0ZWRab25lSWQ6IHN0cmluZ1xuICBWYWxpZGF0aW9uUm9sZUFybj86IHN0cmluZ1xuICBWYWxpZGF0aW9uRXh0ZXJuYWxJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBQcm9wZXJ0aWVzID0ge1xuICBEb21haW5OYW1lOiBzdHJpbmdcbiAgQWx0ZXJuYXRpdmVEb21haW5OYW1lcz86IHN0cmluZ1tdXG4gIFZhbGlkYXRpb25Ib3N0ZWRab25lczogUmVjb3JkPHN0cmluZywgVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzPlxuICBDZXJ0aWZpY2F0ZVJlZ2lvbjogc3RyaW5nXG4gIENsZWFudXBWYWxpZGF0aW9uUmVjb3Jkczogc3RyaW5nXG4gIFRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkOiBzdHJpbmdcbiAgVGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgUmVtb3ZhbFBvbGljeTogc3RyaW5nXG59XG5cbnR5cGUgUm91dGU1M0ZhY3RvcnkgPSAocm9sZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkLCBleHRlcm5hbElkOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IFJvdXRlNTNDbGllbnRcblxuY29uc3QgcGFyc2VQcm9wZXJ0aWVzID0gKHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9wZXJ0aWVzID0+IHtcbiAgLy8gbWF5YmUgc2hvdWxkIGFjdHVhbGx5IHBhcnNlIGFuZCBub3QganVzdCBhc3N1bWVcbiAgcmV0dXJuIHByb3BlcnRpZXMgYXMgdW5rbm93biBhcyBQcm9wZXJ0aWVzXG59XG5cbmNvbnN0IHBhcnNlRG9tYWluVmFsaWRhdGlvblJlY29yZHMgPSAoY2VydGlmaWNhdGU6IENlcnRpZmljYXRlRGV0YWlsKTogUmVzb3VyY2VSZWNvcmRTZXRbXSB8IG51bGwgPT4ge1xuICBjb25zdCBvcHRpb25zID0gY2VydGlmaWNhdGUuRG9tYWluVmFsaWRhdGlvbk9wdGlvbnMgPz8gW11cbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmV2ZXJ5KChvcHQpID0+IG9wdC5SZXNvdXJjZVJlY29yZD8uTmFtZSkpIHtcbiAgICBjb25zdCB1bmlxdWVSZWNvcmRzID0gWy4uLm5ldyBNYXAob3B0aW9ucy5tYXAoKG9wdCkgPT4gW29wdC5SZXNvdXJjZVJlY29yZD8uTmFtZSEsIG9wdC5SZXNvdXJjZVJlY29yZCFdKSkudmFsdWVzKCldXG4gICAgcmV0dXJuIHVuaXF1ZVJlY29yZHMubWFwKChyZWNvcmQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIE5hbWU6IHJlY29yZC5OYW1lLFxuICAgICAgICBUeXBlOiByZWNvcmQuVHlwZSxcbiAgICAgICAgVFRMOiAzMCxcbiAgICAgICAgUmVzb3VyY2VSZWNvcmRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgVmFsdWU6IHJlY29yZC5WYWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgY2hhbmdlUmVjb3JkU2V0cyA9IGFzeW5jIChcbiAgcm91dGU1MzogUm91dGU1M0NsaWVudCxcbiAgYWN0aW9uOiBDaGFuZ2VBY3Rpb24sXG4gIHJlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10sXG4gIGhvc3RlZFpvbmVJZDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgY2hhbmdlUmVjb3JkU2V0c0lucHV0OiBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kSW5wdXQgPSB7XG4gICAgSG9zdGVkWm9uZUlkOiBob3N0ZWRab25lSWQsXG4gICAgQ2hhbmdlQmF0Y2g6IHtcbiAgICAgIENoYW5nZXM6IHJlY29yZHMubWFwKChyZWNvcmQpID0+ICh7XG4gICAgICAgIEFjdGlvbjogYWN0aW9uLFxuICAgICAgICBSZXNvdXJjZVJlY29yZFNldDogcmVjb3JkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCB7IENoYW5nZUluZm8gfSA9IGF3YWl0IHJvdXRlNTMuc2VuZChuZXcgQ2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQ29tbWFuZChjaGFuZ2VSZWNvcmRTZXRzSW5wdXQpKVxuICAgIGNvbnN0IGNoYW5nZUlkID0gQ2hhbmdlSW5mbz8uSWQhXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FpdFVudGlsUmVzb3VyY2VSZWNvcmRTZXRzQ2hhbmdlZCh7IGNsaWVudDogcm91dGU1MywgbWF4V2FpdFRpbWU6IDE4MCB9LCB7IElkOiBjaGFuZ2VJZCB9KVxuICAgIGlmIChyZXN1bHQuc3RhdGUgIT09ICdTVUNDRVNTJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVmFsaWRhdGlvbiByZWNvcmRzIG5ldmVyIGNoYW5nZWQgZm9yIGhvc3RlZCB6b25lICR7aG9zdGVkWm9uZUlkfTogWyR7cmVzdWx0LnN0YXRlfV0gJHtyZXN1bHQucmVhc29uID8/ICcnfWBcbiAgICAgIClcbiAgICB9XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gYWN0aW9uID09PSAnQ1JFQVRFJyB8fCBhY3Rpb24gPT09ICdVUFNFUlQnID8gJ2NoYW5nZWQnIDogJ2RlbGV0ZWQnXG4gICAgY29uc3QgY2hhbmdlID0gY2xlYW5DaGFuZ2VJZChjaGFuZ2VJZClcbiAgICBjb25zb2xlLmxvZyhgVmFsaWRhdGlvbiByZWNvcmRzIHN1Y2Nlc2Z1bGx5ICR7b3BlcmF0aW9ufSBmb3IgaG9zdGVkIHpvbmUgJHtob3N0ZWRab25lSWR9IHdpdGggY2hhbmdlIGlkICR7Y2hhbmdlfWApXG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ0RFTEVURScgJiYgZXJyb3IgaW5zdGFuY2VvZiBJbnZhbGlkQ2hhbmdlQmF0Y2ggJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnbm90IGZvdW5kJykpIHtcbiAgICAgIC8vIHRoZXJlJ3MgYSBkZWxldGlvbiByYWNlIGNvbmRpdGlvbiB3aGVyZSBzb21lIG90aGVyIGNlcnRpZmljYXRlIGhhcyBhbHJlYWR5IGRlbGV0ZWQgdGhlIHJlY29yZHNcbiAgICAgIGNvbnNvbGUubG9nKGBBbGwgdmFsaWRhdGlvbiByZWNvcmRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZSBvdGhlciBjZXJ0aWZpY2F0ZWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGdldFJlY29yZHNGb3Jab25lTmFtZXMgPSAoXG4gIHJlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10sXG4gIHpvbmVOYW1lczogc3RyaW5nW10sXG4gIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIFJlc291cmNlUmVjb3JkU2V0W10+XG4pOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVJlY29yZFNldFtdPiA9PiB7XG4gIGNvbnN0IFt6b25lTmFtZSwgLi4ucmVzdFpvbmVOYW1lc10gPSB6b25lTmFtZXNcbiAgaWYgKCF6b25lTmFtZSkge1xuICAgIHJldHVybiByZXN1bHQgPz8ge31cbiAgfVxuICBjb25zdCBtYXRjaGluZ1JlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10gPSBbXVxuICBjb25zdCB1bm1hdGNoaW5nUmVjb3JkczogUmVzb3VyY2VSZWNvcmRTZXRbXSA9IFtdXG4gIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICBjb25zdCBub3JtYWxpemVkUmVjb3JkTmFtZSA9IGNsZWFuRG9tYWluTmFtZShyZWNvcmQuTmFtZSEpXG4gICAgaWYgKG5vcm1hbGl6ZWRSZWNvcmROYW1lID09PSB6b25lTmFtZSB8fCBub3JtYWxpemVkUmVjb3JkTmFtZS5lbmRzV2l0aCgnLicgKyB6b25lTmFtZSkpIHtcbiAgICAgIG1hdGNoaW5nUmVjb3Jkcy5wdXNoKHJlY29yZClcbiAgICB9IGVsc2Uge1xuICAgICAgdW5tYXRjaGluZ1JlY29yZHMucHVzaChyZWNvcmQpXG4gICAgfVxuICB9XG4gIHJldHVybiBnZXRSZWNvcmRzRm9yWm9uZU5hbWVzKHVubWF0Y2hpbmdSZWNvcmRzLCByZXN0Wm9uZU5hbWVzLCB7XG4gICAgLi4uKHJlc3VsdCA/PyB7fSksXG4gICAgW3pvbmVOYW1lXTogbWF0Y2hpbmdSZWNvcmRzLFxuICB9KVxufVxuXG5jb25zdCByZXF1ZXN0Q2VydGlmaWNhdGUgPSBhc3luYyAoXG4gIGFjbTogQUNNQ2xpZW50LFxuICByb3V0ZTUzOiBSb3V0ZTUzRmFjdG9yeSxcbiAgcmVxdWVzdElkOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHsgRG9tYWluTmFtZSwgQWx0ZXJuYXRpdmVEb21haW5OYW1lcywgVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgfSA9IHByb3BlcnRpZXNcblxuICBjb25zb2xlLmxvZyhgUmVxdWVzdGluZyBjZXJ0aWZpY2F0ZSBmb3IgJHtEb21haW5OYW1lfWApXG5cbiAgY29uc3QgcmVxdWVzdENlcnRpZmljYXRlSW5wdXQ6IFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICBEb21haW5OYW1lLFxuICAgIFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBBbHRlcm5hdGl2ZURvbWFpbk5hbWVzLFxuICAgIElkZW1wb3RlbmN5VG9rZW46IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocmVxdWVzdElkKS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIDMyKSxcbiAgICBWYWxpZGF0aW9uTWV0aG9kOiAnRE5TJyxcbiAgICBPcHRpb25zOiB7XG4gICAgICBDZXJ0aWZpY2F0ZVRyYW5zcGFyZW5jeUxvZ2dpbmdQcmVmZXJlbmNlOiBUcmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcsXG4gICAgfSxcbiAgfVxuICBjb25zdCB7IENlcnRpZmljYXRlQXJuIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgUmVxdWVzdENlcnRpZmljYXRlQ29tbWFuZChyZXF1ZXN0Q2VydGlmaWNhdGVJbnB1dCkpXG5cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHJlcXVlc3RlZGApXG5cbiAgY29uc3QgdmFsaWRhdGlvbk1heFNlY29uZHMgPSAxODBcbiAgY29uc3QgdmFsaWRhdGlvblRpbWVvdXRFcnJvciA9IGBEb21haW4gdmFsaWRhdGlvbiBvcHRpb25zIHdlcmUgbm90IGZvdW5kIGluICR7dmFsaWRhdGlvbk1heFNlY29uZHN9IHNlY29uZHNgXG4gIGNvbnN0IHZhbGlkYXRpb25SZWNvcmRzID0gYXdhaXQgdHJ5Rm9yKHZhbGlkYXRpb25NYXhTZWNvbmRzLCB2YWxpZGF0aW9uVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm4sXG4gICAgfVxuICAgIGNvbnN0IHsgQ2VydGlmaWNhdGUgfSA9IGF3YWl0IGFjbS5zZW5kKG5ldyBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZChkZXNjcmliZUNlcnRpZmljYXRlSW5wdXQpKVxuICAgIHJldHVybiBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKENlcnRpZmljYXRlISlcbiAgfSlcblxuICBjb25zdCBob3N0ZWRab25lcyA9IE9iamVjdC52YWx1ZXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpXG4gIGNvbnN0IGhvc3RlZFpvbmVJZHMgPSBob3N0ZWRab25lcy5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBVcHNlcnRpbmcgJHt2YWxpZGF0aW9uUmVjb3Jkcy5sZW5ndGh9IHZhbGlkYXRpb24gcmVjb3JkKHMpIGludG8gaG9zdGVkIHpvbmUocykgJHtob3N0ZWRab25lSWRzLmpvaW4oJywgJyl9OmBcbiAgKVxuICB2YWxpZGF0aW9uUmVjb3Jkcy5mb3JFYWNoKChyZWNvcmQpID0+XG4gICAgY29uc29sZS5sb2coYCR7cmVjb3JkLk5hbWV9ICR7cmVjb3JkLlR5cGV9ICR7cmVjb3JkLlJlc291cmNlUmVjb3Jkcz8ubWFwKChycikgPT4gcnIuVmFsdWUpLmpvaW4oJywnKX1gKVxuICApXG5cbiAgY29uc3QgcmVjb3Jkc0ZvclpvbmVOYW1lcyA9IGdldFJlY29yZHNGb3Jab25lTmFtZXMoXG4gICAgdmFsaWRhdGlvblJlY29yZHMsXG4gICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gIClcbiAgZm9yIChjb25zdCBob3N0ZWRab25lIG9mIGhvc3RlZFpvbmVzKSB7XG4gICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGNoYW5nZVJlY29yZFNldHMoXG4gICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICdVUFNFUlQnLFxuICAgICAgICByZWNvcmRzLFxuICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBjZXJ0aWZpY2F0ZSAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZWApXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRVbnRpbENlcnRpZmljYXRlVmFsaWRhdGVkKHsgY2xpZW50OiBhY20sIG1heFdhaXRUaW1lOiAzMDAgfSwgeyBDZXJ0aWZpY2F0ZUFybiB9KVxuICBpZiAocmVzdWx0LnN0YXRlICE9PSAnU1VDQ0VTUycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENlcnRpZmljYXRlIGZhaWxlZCAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZTogWyR7cmVzdWx0LnN0YXRlfV0gJHtyZXN1bHQucmVhc29uID8/ICcnfWApXG4gIH1cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWRgKVxuICByZXR1cm4gQ2VydGlmaWNhdGVBcm4hXG59XG5cbmNvbnN0IGRlbGV0ZUNlcnRpZmljYXRlID0gYXN5bmMgKFxuICBhY206IEFDTUNsaWVudCxcbiAgcm91dGU1MzogUm91dGU1M0ZhY3RvcnksXG4gIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgY2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZUFybn0gdXNhZ2UgdG8gZHJhaW4gYmVmb3JlIGRlbGV0aW9uYClcblxuICBjb25zdCB3YWl0VXNhZ2VNYXhTZWNvbmRzID0gNjAwXG4gIGNvbnN0IHdhaXRVc2FnZVRpbWVvdXRFcnJvciA9IGBDZXJ0aWZpY2F0ZSB3YXMgc3RpbGwgaW4gdXNlIGFmdGVyICR7d2FpdFVzYWdlTWF4U2Vjb25kc30gc2Vjb25kc2BcbiAgY29uc3QgY2VydGlmaWNhdGUgPSBhd2FpdCB0cnlGb3Iod2FpdFVzYWdlTWF4U2Vjb25kcywgd2FpdFVzYWdlVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICAgIH1cbiAgICBjb25zdCB7IENlcnRpZmljYXRlIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0KSlcbiAgICBjb25zdCBpblVzZUJ5ID0gQ2VydGlmaWNhdGU/LkluVXNlQnkgPz8gW11cbiAgICBpZiAoaW5Vc2VCeS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gQ2VydGlmaWNhdGUhXG4gIH0pXG4gIGNvbnNvbGUubG9nKCdDZXJ0aWZpY2F0ZSBpcyB1bnVzZWQgYW5kIHdpbGwgYmUgZGVsZXRlZCcpXG5cbiAgY29uc3QgdmFsaWRhdGlvblJlY29yZHMgPSBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKGNlcnRpZmljYXRlKVxuICBpZiAodmFsaWRhdGlvblJlY29yZHMgJiYgc3RyaW5nVG9Cb29sZWFuKHByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzKSkge1xuICAgIGNvbnN0IGhvc3RlZFpvbmVzID0gT2JqZWN0LnZhbHVlcyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcylcbiAgICBjb25zdCBob3N0ZWRab25lSWRzID0gaG9zdGVkWm9uZXMubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYERlbGV0aW5nICR7dmFsaWRhdGlvblJlY29yZHMubGVuZ3RofSB2YWxpZGF0aW9uIHJlY29yZChzKSBmcm9tIGhvc3RlZCB6b25lKHMpICR7aG9zdGVkWm9uZUlkcy5qb2luKCcsICcpfWBcbiAgICApXG5cbiAgICBjb25zdCByZWNvcmRzRm9yWm9uZU5hbWVzID0gZ2V0UmVjb3Jkc0ZvclpvbmVOYW1lcyhcbiAgICAgIHZhbGlkYXRpb25SZWNvcmRzLFxuICAgICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gICAgKVxuICAgIGZvciAoY29uc3QgaG9zdGVkWm9uZSBvZiBob3N0ZWRab25lcykge1xuICAgICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCBjaGFuZ2VSZWNvcmRTZXRzKFxuICAgICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICAgJ0RFTEVURScsXG4gICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coYERlbGV0aW5nIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59IGZyb20gQUNNYClcbiAgY29uc3QgZGVsZXRlQ2VydGlmaWNhdGVJbnB1dDogRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQgPSB7XG4gICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICB9XG4gIGF3YWl0IGFjbS5zZW5kKG5ldyBEZWxldGVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVsZXRlQ2VydGlmaWNhdGVJbnB1dCkpXG4gIGNvbnNvbGUubG9nKGBDZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufSBzdWNjZXNzZnVsbHkgZGVsZXRlZGApXG59XG5cbmNvbnN0IGFkZFRhZ3MgPSBhc3luYyAoYWNtOiBBQ01DbGllbnQsIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsIHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgY29uc3QgdGFnTGlzdCA9IEFycmF5LmZyb20oT2JqZWN0LmVudHJpZXModGFncykubWFwKChbS2V5LCBWYWx1ZV0pID0+ICh7IEtleSwgVmFsdWUgfSkpKVxuICBjb25zdCBhZGRUYWdzSW5wdXQ6IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgIENlcnRpZmljYXRlQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICBUYWdzOiB0YWdMaXN0LFxuICB9XG5cbiAgY29uc29sZS5sb2coYEFkZGluZyAke3RhZ0xpc3QubGVuZ3RofSB0YWdzIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbiAgYXdhaXQgYWNtLnNlbmQobmV3IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZChhZGRUYWdzSW5wdXQpKVxuICBjb25zb2xlLmxvZyhgQWxsIHRhZ3Mgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbn1cblxuY29uc3Qgc2hvdWxkUmVxdWVzdE5ldyA9IChvbGRQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG9sZEhvc3RlZFpvbmVJZHMgPSBPYmplY3QudmFsdWVzKG9sZFByb3BlcnRpZXMuVmFsaWRhdGlvbkhvc3RlZFpvbmVzID8/IHt9KS5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuICBjb25zdCBuZXdIb3N0ZWRab25lSWRzID0gT2JqZWN0LnZhbHVlcyhuZXdQcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcyA/PyB7fSkubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcbiAgaWYgKCFjb250YWluc1NhbWUob2xkSG9zdGVkWm9uZUlkcywgbmV3SG9zdGVkWm9uZUlkcykpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLkRvbWFpbk5hbWUgIT09IG5ld1Byb3BlcnRpZXMuRG9tYWluTmFtZSkgcmV0dXJuIHRydWVcbiAgaWYgKCFjb250YWluc1NhbWUob2xkUHJvcGVydGllcy5BbHRlcm5hdGl2ZURvbWFpbk5hbWVzID8/IFtdLCBuZXdQcm9wZXJ0aWVzLkFsdGVybmF0aXZlRG9tYWluTmFtZXMgPz8gW10pKSByZXR1cm4gdHJ1ZVxuICBpZiAob2xkUHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gbmV3UHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbikgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzICE9PSBuZXdQcm9wZXJ0aWVzLkNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcykgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgIT09IG5ld1Byb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgIT09IG5ld1Byb3BlcnRpZXMuUmVtb3ZhbFBvbGljeSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGFzc3VtZVJvbGUgPSAoXG4gIHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm92aWRlcjxBd3NDcmVkZW50aWFsSWRlbnRpdHk+IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFyb2xlQXJuKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RzID0gbmV3IFNUU0NsaWVudCh7IHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICAgIGNvbnN0IGFzc3VtZVJvbGVJbnB1dDogQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdDZXJ0aWZpY2F0ZVJlcXVlc3RvcicsXG4gICAgICBFeHRlcm5hbElkOiBleHRlcm5hbElkLFxuICAgIH1cbiAgICBjb25zdCB7IENyZWRlbnRpYWxzIH0gPSBhd2FpdCBzdHMuc2VuZChuZXcgQXNzdW1lUm9sZUNvbW1hbmQoYXNzdW1lUm9sZUlucHV0KSlcbiAgICByZXR1cm4ge1xuICAgICAgYWNjZXNzS2V5SWQ6IENyZWRlbnRpYWxzPy5BY2Nlc3NLZXlJZCEsXG4gICAgICBzZWNyZXRBY2Nlc3NLZXk6IENyZWRlbnRpYWxzPy5TZWNyZXRBY2Nlc3NLZXkhLFxuICAgICAgc2Vzc2lvblRva2VuOiBDcmVkZW50aWFscz8uU2Vzc2lvblRva2VuISxcbiAgICAgIGV4cGlyYXRpb246IENyZWRlbnRpYWxzPy5FeHBpcmF0aW9uLFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSA9PiB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBwYXJzZVByb3BlcnRpZXMoZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzKVxuXG4gIGNvbnN0IGFjbSA9IG5ldyBBQ01DbGllbnQoeyByZWdpb246IHByb3BlcnRpZXMuQ2VydGlmaWNhdGVSZWdpb24sIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICBjb25zdCByb3V0ZTUzID0gKHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUm91dGU1M0NsaWVudCA9PiB7XG4gICAgcmV0dXJuIG5ldyBSb3V0ZTUzQ2xpZW50KHtcbiAgICAgIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyxcbiAgICAgIGNyZWRlbnRpYWxzOiBhc3N1bWVSb2xlKHJvbGVBcm4sIGV4dGVybmFsSWQpLFxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSAnQ3JlYXRlJzoge1xuICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlOlxcbiR7b2JqZWN0VG9TdHJpbmcocHJvcGVydGllcyl9YClcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnVXBkYXRlJzoge1xuICAgICAgbGV0IGNlcnRpZmljYXRlQXJuID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBpZiAoc2hvdWxkUmVxdWVzdE5ldyhwYXJzZVByb3BlcnRpZXMoZXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzKSwgcHJvcGVydGllcykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlIGR1ZSB0byBjaGFuZ2Ugb2YgcHJvcGVydGllczpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgY29uc3QgY2VydGlmaWNhdGVBcm4gPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWRcbiAgICAgIGlmIChwcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgPT09ICdkZXN0cm95Jykge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGVsZXRpbmcgb2xkIGNlcnRpZmljYXRlIGFzIHBlciByZW1vdmFsIHBvbGljeTpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGF3YWl0IGRlbGV0ZUNlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgY2VydGlmaWNhdGVBcm4sIHByb3BlcnRpZXMpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlcXVlc3QgdHlwZWApXG59XG4iXX0=
@@ -1,13 +1,45 @@
1
1
  "use strict";
2
- var _a;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
3
35
  Object.defineProperty(exports, "__esModule", { value: true });
4
36
  exports.DnsValidatedCertificate = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const cdk = require("aws-cdk-lib");
7
- const cloudwatch = require("aws-cdk-lib/aws-cloudwatch");
8
- const iam = require("aws-cdk-lib/aws-iam");
9
- const lambda = require("aws-cdk-lib/aws-lambda");
10
- const custom_resources = require("aws-cdk-lib/custom-resources");
38
+ const cdk = __importStar(require("aws-cdk-lib"));
39
+ const cloudwatch = __importStar(require("aws-cdk-lib/aws-cloudwatch"));
40
+ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
41
+ const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
42
+ const custom_resources = __importStar(require("aws-cdk-lib/custom-resources"));
11
43
  const certificate_requestor_function_1 = require("./certificate-requestor-function");
12
44
  const utils_1 = require("./utils");
13
45
  const DNS_VALIDATED_CERTIFICATE_TYPE = 'Custom::DnsValidatedCertificate';
@@ -79,6 +111,15 @@ const CERTTIFICATE_RESOURCE_TYPE = 'AWS::CertificateManager::Certificate';
79
111
  * @resource AWS::CertificateManager::Certificate
80
112
  */
81
113
  class DnsValidatedCertificate extends cdk.Resource {
114
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@trautonen/cdk-dns-validated-certificate.DnsValidatedCertificate", version: "0.1.53" };
115
+ /** The certificate's ARN */
116
+ certificateArn;
117
+ /** The region where the certificate is deployed to */
118
+ certificateRegion;
119
+ /** The tag manager to set, remove and format tags for the certificate */
120
+ tags;
121
+ /** The removal policy for the certificate */
122
+ removalPolicy;
82
123
  /**
83
124
  * Creates an instance of DnsValidatedCertificate construct.
84
125
  *
@@ -242,6 +283,4 @@ class DnsValidatedCertificate extends cdk.Resource {
242
283
  }
243
284
  }
244
285
  exports.DnsValidatedCertificate = DnsValidatedCertificate;
245
- _a = JSII_RTTI_SYMBOL_1;
246
- DnsValidatedCertificate[_a] = { fqn: "@trautonen/cdk-dns-validated-certificate.DnsValidatedCertificate", version: "0.1.51" };
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXZhbGlkYXRlZC1jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kbnMtdmFsaWRhdGVkLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHlEQUF3RDtBQUN4RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBRWhELGlFQUFnRTtBQUVoRSxxRkFBK0U7QUFFL0UsbUNBQWdHO0FBaUhoRyxNQUFNLDhCQUE4QixHQUFHLGlDQUFpQyxDQUFBO0FBQ3hFLE1BQU0sMEJBQTBCLEdBQUcsc0NBQXNDLENBQUE7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQWF2RDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQ3pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNoRCxDQUFBO1FBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUNyRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FB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LE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUNoRSxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUMzRixJQUFJLG9CQUFvQixJQUFJLG1CQUFtQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hILE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxVQUFVLGlEQUFpRCxDQUFDLENBQUE7WUFDcEYsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7O0FBcE5ILDBEQXFOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYidcbmltcG9ydCAqIGFzIGNlcnRpZmljYXRlbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJ1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCdcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJ1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnXG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzJ1xuaW1wb3J0ICogYXMgY3VzdG9tX3Jlc291cmNlcyBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJ1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cydcbmltcG9ydCB7IENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb24gfSBmcm9tICcuL2NlcnRpZmljYXRlLXJlcXVlc3Rvci1mdW5jdGlvbidcbmltcG9ydCB7IFByb3BlcnRpZXMsIFZhbGlkYXRpb25Ib3N0ZWRab25lUHJvcGVydGllcyB9IGZyb20gJy4vY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYSdcbmltcG9ydCB7IGJvb2xlYW5Ub1N0cmluZywgY2xlYW5Eb21haW5OYW1lLCBjbGVhbkhvc3RlZFpvbmVJZCwgbWF0Y2hOYW1lc1RvWm9uZXMgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Ib3N0ZWRab25lIHtcbiAgLyoqXG4gICAqIEhvc3RlZCB6b25lIHRvIHVzZSBmb3IgRE5TIHZhbGlkYXRpb24uIFRoZSB6b25lIG5hbWUgaXMgbWF0Y2hlZCB0byBkb21haW4gbmFtZSB0byB1c2UgdGhlIHJpZ2h0XG4gICAqIGhvc3RlZCB6b25lIGZvciB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBJZiB0aGUgaG9zdGVkIHpvbmUgaXMgbm90IG1hbmFnZWQgYnkgdGhlIENESyBhcHBsaWNhdGlvbiwgaXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgdmlhXG4gICAqIGBgSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoKWBgLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZVxuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIGFzc3VtZWQgZm9yIEROUyByZWNvcmQgY2hhbmdlcyBmb3IgY2VydGlmaWNhdGUgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogVGhpcyByb2xlIHNob3VsZCBleGlzdCBpbiB0aGUgc2FtZSBhY2NvdW50IGFzIHRoZSBob3N0ZWQgem9uZSBhbmQgaW5jbHVkZSBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgdGhlIEROUyByZWNvcmRzXG4gICAqIGZvciB0aGUgZ2l2ZW4gYGBob3N0ZWRab25lYGAuIFRoZSBgYGN1c3RvbVJlc291cmNlUm9sZWBgIG9yIHRoZSBkZWZhdWx0IGV4ZWN1dGlvbiByb2xlIGlzIGdpdmVuIHBlcm1pc3Npb24gdG9cbiAgICogYXNzdW1lIHRoaXMgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzZXBhcmF0ZSByb2xlIGZvciBETlMgcmVjb3JkIGNoYW5nZXMuIFRoZSBnaXZlbiBjdXN0b21SZXNvdXJjZVJvbGUgb3IgdGhlIGRlZmF1bHQgcm9sZSBpcyB1c2VkXG4gICAqIGZvciBETlMgcmVjb3JkIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uUm9sZT86IGlhbS5JUm9sZVxuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBpZCBmb3IgYGB2YWxpZGF0aW9uUm9sZWBgIHJvbGUgYXNzdW1lIHZlcmlmaWNhdGlvbi5cbiAgICpcbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5IHdoZW4gYGB2YWxpZGF0aW9uUm9sZWBgIGlzIGdpdmVuIGFuZCB0aGUgcm9sZSBleHBlY3RzIGFuIGV4dGVybmFsIGlkIHByb3ZpZGVkIG9uIGFzc3VtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBpZCBwcm92aWRlZCBkdXJpbmcgYXNzdW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbkV4dGVybmFsSWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZVByb3BzIHtcbiAgLyoqXG4gICAqIEZ1bGx5LXF1YWxpZmllZCBkb21haW4gbmFtZSB0byByZXF1ZXN0IGEgY2VydGlmaWNhdGUgZm9yLlxuICAgKlxuICAgKiBNYXkgY29udGFpbiB3aWxkY2FyZHMsIHN1Y2ggYXMgYGAqLmRvbWFpbi5jb21gYC5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBGdWxseS1xdWFsaWZpZWQgYWx0ZXJuYXRpdmUgZG9tYWluIG5hbWVzIHRvIHJlcXVlc3QgYSBjZXJ0aWZpY2F0ZSBmb3IuXG4gICAqXG4gICAqIE1heSBjb250YWluIHdpbGRjYXJkcywgc3VjaCBhcyBgYCoub3RoZXJkb21haW4uY29tYGAuXG4gICAqL1xuICByZWFkb25seSBhbHRlcm5hdGl2ZURvbWFpbk5hbWVzPzogc3RyaW5nW11cblxuICAvKipcbiAgICogTGlzdCBvZiBob3N0ZWQgem9uZXMgdG8gdXNlIGZvciB2YWxpZGF0aW9uLiBIb3N0ZWQgem9uZXMgYXJlIG1hcHBlZCB0byBkb21haW4gbmFtZXMgYnkgdGhlIHpvbmUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25Ib3N0ZWRab25lczogVmFsaWRhdGlvbkhvc3RlZFpvbmVbXVxuXG4gIC8qKlxuICAgKiBBV1MgcmVnaW9uIHdoZXJlIHRoZSBjZXJ0aWZpY2F0ZSBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogWW91IHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgYGBDZXJ0aWZpY2F0ZWBgIGNvbnN0cnVjdCBpbnN0ZWFkIGlmIHRoZSByZWdpb24gaXMgc2FtZSBhcyB0aGUgc3RhY2sncyBhbmQgdGhlIGhvc3RlZFxuICAgKiB6b25lIGlzIGluIHRoZSBzYW1lIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2FtZSByZWdpb24gYXMgdGhlIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVSZWdpb24/OiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHJvbGUgdGhhdCBpcyB1c2VkIGZvciB0aGUgY3VzdG9tIHJlc291cmNlIExhbWJkYSBleGVjdXRpb24uXG4gICAqXG4gICAqIFRoZSByb2xlIGlzIGdpdmVuIHBlcm1pc3Npb25zIHRvIHJlcXVlc3QgY2VydGlmaWNhdGVzIGZyb20gQUNNLiBJZiB0aGVyZSBhcmUgYW55IGBgdmFsaWRhdGlvblJvbGVgYHMgcHJvdmlkZWQsXG4gICAqIHRoaXMgcm9sZSBpcyBhbHNvIGdpdmVuIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBgYHZhbGlkYXRpb25Sb2xlYGAuIE90aGVyd2lzZSBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGhvc3RlZCB6b25lXG4gICAqIGlzIGluIHNhbWUgYWNjb3VudCBhbmQgdGhlIGV4ZWN1dGlvbiByb2xlIGlzIGdpdmVuIHBlcm1pc3Npb25zIHRvIGNoYW5nZSBETlMgcmVjb3JkcyBmb3IgdGhlIGdpdmVuIGBgZG9tYWluTmFtZWBgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIExhbWJkYSBjcmVhdGVzIGEgZGVmYXVsdCBleGVjdXRpb24gcm9sZS5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbVJlc291cmNlUm9sZT86IGlhbS5JUm9sZVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBjbGVhbmluZyBvZiB2YWxpZGF0aW9uIEROUyByZWNvcmRzIGZyb20gdGhlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBJZiB0aGVyZSdzIG11bHRpcGxlIGNlcnRpZmljYXRlcyBjcmVhdGVkIGZvciBzYW1lIGRvbWFpbiwgaXQgaXMgcG9zc2libGUgdG8gZW5jb3V0ZXIgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBzb21lXG4gICAqIGNlcnRpZmljYXRlIGlzIHJlbW92ZWQgYW5kIGFub3RoZXIgY2VydGlmaWNhdGUgd291bGQgbmVlZCB0aGUgc2FtZSB2YWxpZGF0aW9uIHJlY29yZC4gUHJlZmVyIHNpbmdsZSBjZXJ0aWZpY2F0ZVxuICAgKiBmb3IgYSBkb21haW4gb3Igc2V0IHRoaXMgdG8gZmFsc2UgYW5kIGNsZWFudXAgcmVjb3JkcyBtYW51YWxseSB3aGVuIG5vdCBuZWVkZWQgYW55bW9yZS4gSWYgeW91IGNoYW5nZSB0aGlzXG4gICAqIHByb3BlcnR5IGFmdGVyIGNyZWF0aW9uLCBhIG5ldyBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHJlcXVlc3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW51cFZhbGlkYXRpb25SZWNvcmRzPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSB0cmFuc3BhcmVuY3kgbG9nZ2luZyBmb3IgdGhpcyBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogT25jZSBhIGNlcnRpZmljYXRlIGhhcyBiZWVuIGxvZ2dlZCwgaXQgY2Fubm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgbG9nLiBPcHRpbmcgb3V0IGF0IHRoYXQgcG9pbnQgd2lsbCBoYXZlIG5vXG4gICAqIGVmZmVjdC4gSWYgeW91IGNoYW5nZSB0aGlzIHByb3BlcnR5IGFmdGVyIGNyZWF0aW9uLCBhIG5ldyBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHJlcXVlc3RlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYWNtL2xhdGVzdC91c2VyZ3VpZGUvYWNtLWJlc3RwcmFjdGljZXMuaHRtbCNiZXN0LXByYWN0aWNlcy10cmFuc3BhcmVuY3lcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoZSBnaXZlbiByZW1vdmFsIHBvbGljeSB0byB0aGlzIHJlc291cmNlLlxuICAgKlxuICAgKiBUaGUgcmVtb3ZhbCBwb2xpY3kgY29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoaXMgcmVzb3VyY2Ugd2hlbiBpdCBzdG9wcyBiZWluZyBtYW5hZ2VkIGJ5IENsb3VkRm9ybWF0aW9uLCBlaXRoZXJcbiAgICogYmVjYXVzZSB5b3UndmUgcmVtb3ZlZCBpdCBmcm9tIHRoZSBDREsgYXBwbGljYXRpb24gb3IgYmVjYXVzZSB5b3UndmUgbWFkZSBhIGNoYW5nZSB0aGF0IHJlcXVpcmVzIHRoZSByZXNvdXJjZSB0b1xuICAgKiBiZSByZXBsYWNlZC4gVGhlIHJlc291cmNlIGNhbiBiZSBkZWxldGVkIChgYFJlbW92YWxQb2xpY3kuREVTVFJPWWBgKSwgb3IgbGVmdCBpbiB5b3VyIEFXUyBhY2NvdW50IGZvciBkYXRhXG4gICAqIHJlY292ZXJ5IGFuZCBjbGVhbnVwIGxhdGVyIChgYFJlbW92YWxQb2xpY3kuUkVUQUlOYGApLiBJZiB5b3UgY2hhbmdlIHRoaXMgcHJvcGVydHkgYWZ0ZXIgY3JlYXRpb24sIGEgbmV3XG4gICAqIGNlcnRpZmljYXRlIHdpbGwgYmUgcmVxdWVzdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeVxufVxuXG5jb25zdCBETlNfVkFMSURBVEVEX0NFUlRJRklDQVRFX1RZUEUgPSAnQ3VzdG9tOjpEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSdcbmNvbnN0IENFUlRUSUZJQ0FURV9SRVNPVVJDRV9UWVBFID0gJ0FXUzo6Q2VydGlmaWNhdGVNYW5hZ2VyOjpDZXJ0aWZpY2F0ZSdcblxuLyoqXG4gKiBBIGNlcnRpZmljYXRlIG1hbmFnZWQgYnkgQVdTIENlcnRpZmljYXRlIE1hbmFnZXIuIFdpbGwgYmUgYXV0b21hdGljYWxseSB2YWxpZGF0ZWQgdXNpbmcgRE5TIHZhbGlkYXRpb24gYWdhaW5zdCB0aGVcbiAqIHNwZWNpZmllZCBSb3V0ZSA1MyBob3N0ZWQgem9uZS4gVGhpcyBjb25zdHJ1Y3Qgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgY3Jvc3MtcmVnaW9uIG9yIGNyb3NzLWFjY291bnQgY2VydGlmaWNhdGVcbiAqIHZhbGlkYXRpb25zLiBUaGUgZGVmYXVsdCBgYENlcnRpZmljYXRlYGAgY29uc3RydWN0IGlzIGJldHRlciBpbiBjYXNlcyB3aGVyZSBldmVyeXRoaW5nIGlzIG1hbmFnZWQgYnkgdGhlIENES1xuICogYXBwbGljYXRpb24uXG4gKlxuICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvbnN0cnVjdCBkb2VzIG5vdCBzdXBwb3J0IGFsdGVybmF0aXZlIG5hbWVzIHlldCBhcyBpdCB3b3VsZCByZXF1aXJlIGRvbWFpbiB0byByb2xlIG1hcHBpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vICMjIyBDcm9zcy1yZWdpb24gY2VydGlmaWNhdGUgdmFsaWRhdGlvblxuICogLy8gaG9zdGVkIHpvbmUgbWFuYWdlZCBieSB0aGUgQ0RLIGFwcGxpY2F0aW9uXG4gKiBjb25zdCBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lID0gLi4uXG4gKiAvLyBubyBzZXBhcmF0ZSB2YWxpZGF0aW9uIHJvbGUgaXMgbmVlZGVkXG4gKiBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ3Jvc3NSZWdpb25DZXJ0aWZpY2F0ZScsIHtcbiAqICAgZG9tYWluTmFtZTogJ2V4YW1wbGUuY29tJywgICAgIC8vIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBob3N0ZWQgem9uZVxuICogICB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFt7ICAgICAgLy8gaG9zdGVkIHpvbmUgdXNlZCB3aXRoIHRoZSBleGVjdXRpb24gcm9sZSdzIHBlcm1pc3Npb25zXG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZVxuICogICB9XSxcbiAqICAgY2VydGlmaWNhdGVSZWdpb246ICd1cy1lYXN0LTEnIC8vIHVzZWQgYnkgZm9yIGV4YW1wbGUgQ2xvdWRGcm9udFxuICogfSlcbiAqIC8vICMjIyBDcm9zcy1hY2NvdW50IGNlcnRpZmljYXRlIHZhbGlkYXRpb25cbiAqIC8vIGV4dGVybmFsIGhvc3RlZCB6b25lXG4gKiBjb25zdCBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lID1cbiAqICAgcm91dGU1My5Ib3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCAnSG9zdGVkWm9uZScsIHtcbiAqICAgICBob3N0ZWRab25lSWQ6ICdaNTMyREdERURGUzEyMzQ1Njc4OScsXG4gKiAgICAgem9uZU5hbWU6ICdleGFtcGxlLmNvbSdcbiAqICAgfSlcbiAqIC8vIHZhbGlkYXRpb24gcm9sZSBpbiB0aGUgc2FtZSBhY2NvdW50IGFzIHRoZSBob3N0ZWQgem9uZVxuICogY29uc3Qgcm9sZUFybiA9ICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5OnJvbGUvQ2hhbmdlRG5zUmVjb3Jkc1JvbGUnXG4gKiBjb25zdCBleHRlcm5hbElkID0gJ2RvbWFpbi1hc3N1bWUnXG4gKiBjb25zdCB2YWxpZGF0aW9uUm9sZTogaWFtLklSb2xlID1cbiAqICAgaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ1ZhbGlkYXRpb25Sb2xlJywgcm9sZUFybilcbiAqIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsICdDcm9zc0FjY291bnRDZXJ0aWZpY2F0ZScsIHtcbiAqICAgZG9tYWluTmFtZTogJ2V4YW1wbGUuY29tJyxcbiAqICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBbe1xuICogICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmUsXG4gKiAgICAgdmFsaWRhdGlvblJvbGU6IHZhbGlkYXRpb25Sb2xlLFxuICogICAgIHZhbGlkYXRpb25FeHRlcm5hbElkOiBleHRlcm5hbElkXG4gKiAgIH1dXG4gKiB9KVxuICogLy8gIyMjIENyb3NzLWFjY291bnQgYWx0ZXJuYXRpdmUgbmFtZSB2YWxpZGF0aW9uXG4gKiAvLyBleGFtcGxlLmNvbSBpcyB2YWxpZGF0ZWQgb24gc2FtZSBhY2NvdW50IGFnYWluc3QgbWFuYWdlZCBob3N0ZWQgem9uZVxuICogLy8gYW5kIHNlY29uZGFyeS5jb20gaXMgdmFsaWRhdGVkIGFnYWluc3QgZXh0ZXJuYWwgaG9zdGVkIHpvbmUgb24gb3RoZXIgYWNjb3VudFxuICogY29uc3QgaG9zdGVkWm9uZUZvck1haW46IHJvdXRlNTMuSUhvc3RlZFpvbmUgPSAuLi5cbiAqIGNvbnN0IGhvc3RlZFpvbmVGb3JBbHRlcm5hdGl2ZTogcm91dGU1My5JSG9zdGVkWm9uZSA9XG4gKiAgIHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXModGhpcywgJ1NlY29uZGFyeUhvc3RlZFpvbmUnLCB7XG4gKiAgICAgaG9zdGVkWm9uZUlkOiAnWjUzMkRHREVERlMxMjM0NTY3ODknLFxuICogICAgIHpvbmVOYW1lOiAnc2Vjb25kYXJ5LmNvbSdcbiAqICAgfSlcbiAqIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsICdDcm9zc0FjY291bnRDZXJ0aWZpY2F0ZScsIHtcbiAqICAgZG9tYWluTmFtZTogJ2V4YW1wbGUuY29tJyxcbiAqICAgYWx0ZXJuYXRpdmVEb21haW5OYW1lczogWydzZWNvbmRhcnkuY29tJ10sXG4gKiAgIHZhbGlkYXRpb25Ib3N0ZWRab25lczogW3tcbiAqICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lRm9yTWFpblxuICogICB9LHtcbiAqICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lRm9yQWx0ZXJuYXRpdmUsXG4gKiAgICAgdmFsaWRhdGlvblJvbGU6IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKFxuICogICAgICAgdGhpcywgJ1NlY29uZGFyeVZhbGlkYXRpb25Sb2xlJywgJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODk6cm9sZS9DaGFuZ2VEbnNSZWNvcmRzUm9sZSdcbiAqICAgICApLFxuICogICAgIHZhbGlkYXRpb25FeHRlcm5hbElkOiAnZG9tYWluLWFzc3VtZSdcbiAqICAgfV1cbiAqIH0pXG4gKlxuICogQHJlc291cmNlIEN1c3RvbTo6RG5zVmFsaWRhdGVkQ2VydGlmaWNhdGVcbiAqIEByZXNvdXJjZSBBV1M6OkNlcnRpZmljYXRlTWFuYWdlcjo6Q2VydGlmaWNhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIERuc1ZhbGlkYXRlZENlcnRpZmljYXRlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgY2VydGlmaWNhdGVtYW5hZ2VyLklDZXJ0aWZpY2F0ZSwgY2RrLklUYWdnYWJsZSB7XG4gIC8qKiBUaGUgY2VydGlmaWNhdGUncyBBUk4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNlcnRpZmljYXRlQXJuOiBzdHJpbmdcblxuICAvKiogVGhlIHJlZ2lvbiB3aGVyZSB0aGUgY2VydGlmaWNhdGUgaXMgZGVwbG95ZWQgdG8gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNlcnRpZmljYXRlUmVnaW9uOiBzdHJpbmdcblxuICAvKiogVGhlIHRhZyBtYW5hZ2VyIHRvIHNldCwgcmVtb3ZlIGFuZCBmb3JtYXQgdGFncyBmb3IgdGhlIGNlcnRpZmljYXRlICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnczogY2RrLlRhZ01hbmFnZXJcblxuICAvKiogVGhlIHJlbW92YWwgcG9saWN5IGZvciB0aGUgY2VydGlmaWNhdGUgKi9cbiAgcHJpdmF0ZSByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERuc1ZhbGlkYXRlZENlcnRpZmljYXRlIGNvbnN0cnVjdC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIGNvbnN0cnVjdCBob3N0aW5nIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBjb25zdHJ1Y3QncyBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSBwcm9wcyBwcm9wZXJ0aWVzIGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSB0aGlzLm5vcm1hbGl6ZURvbWFpbk5hbWUocHJvcHMuZG9tYWluTmFtZSlcbiAgICBjb25zdCBhbHRlcm5hdGl2ZURvbWFpbk5hbWVzID0gcHJvcHMuYWx0ZXJuYXRpdmVEb21haW5OYW1lcz8ubWFwKChhbHRlcm5hdGl2ZURvbWFpbk5hbWUpID0+XG4gICAgICB0aGlzLm5vcm1hbGl6ZURvbWFpbk5hbWUoYWx0ZXJuYXRpdmVEb21haW5OYW1lKVxuICAgIClcbiAgICBjb25zdCBhbGxEb21haW5zID0gW2RvbWFpbk5hbWUsIC4uLihhbHRlcm5hdGl2ZURvbWFpbk5hbWVzID8/IFtdKV1cblxuICAgIHRoaXMuY2VydGlmaWNhdGVSZWdpb24gPSBwcm9wcy5jZXJ0aWZpY2F0ZVJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvblxuICAgIHRoaXMudGFncyA9IG5ldyBjZGsuVGFnTWFuYWdlcihjZGsuVGFnVHlwZS5NQVAsIENFUlRUSUZJQ0FURV9SRVNPVVJDRV9UWVBFKVxuICAgIHRoaXMucmVtb3ZhbFBvbGljeSA9IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWVxuXG4gICAgY29uc3QgcmVxdWVzdG9yRnVuY3Rpb24gPSBuZXcgQ2VydGlmaWNhdGVSZXF1ZXN0b3JGdW5jdGlvbih0aGlzLCAnUmVxdWVzdG9yRnVuY3Rpb24nLCB7XG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMTQpLFxuICAgICAgcm9sZTogcHJvcHMuY3VzdG9tUmVzb3VyY2VSb2xlLFxuICAgIH0pXG5cbiAgICByZXF1ZXN0b3JGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdhY206UmVxdWVzdENlcnRpZmljYXRlJyxcbiAgICAgICAgICAnYWNtOkRlc2NyaWJlQ2VydGlmaWNhdGUnLFxuICAgICAgICAgICdhY206RGVsZXRlQ2VydGlmaWNhdGUnLFxuICAgICAgICAgICdhY206QWRkVGFnc1RvQ2VydGlmaWNhdGUnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgfSlcbiAgICApXG5cbiAgICBjb25zdCBkb21haW5zVG9ab25lcyA9IG1hdGNoTmFtZXNUb1pvbmVzKFxuICAgICAgcHJvcHMudmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5ob3N0ZWRab25lLnpvbmVOYW1lKSxcbiAgICAgIGFsbERvbWFpbnMsXG4gICAgICAoZG9tYWluKSA9PiBkb21haW5cbiAgICApXG4gICAgY29uc3QgaG9zdGVkWm9uZXNXaXRoUm9sZSA9IHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUudmFsaWRhdGlvblJvbGUgIT09IHVuZGVmaW5lZClcbiAgICBjb25zdCBob3N0ZWRab25lc1dpdGhvdXRSb2xlID0gcHJvcHMudmFsaWRhdGlvbkhvc3RlZFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS52YWxpZGF0aW9uUm9sZSA9PT0gdW5kZWZpbmVkKVxuXG4gICAgaG9zdGVkWm9uZXNXaXRoUm9sZS5mb3JFYWNoKCh6b25lKSA9PiB7XG4gICAgICByZXF1ZXN0b3JGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICAgIHJlc291cmNlczogW3pvbmUudmFsaWRhdGlvblJvbGUhLnJvbGVBcm5dLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pXG5cbiAgICBob3N0ZWRab25lc1dpdGhvdXRSb2xlLmZvckVhY2goKHpvbmUpID0+IHtcbiAgICAgIHJlcXVlc3RvckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsncm91dGU1MzpHZXRDaGFuZ2UnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgY29uc3QgZG9tYWluTmFtZXMgPSBkb21haW5zVG9ab25lc1t6b25lLmhvc3RlZFpvbmUuem9uZU5hbWVdXG4gICAgICBpZiAoZG9tYWluTmFtZXMgJiYgZG9tYWluTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXF1ZXN0b3JGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0cyddLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6cm91dGU1Mzo6Omhvc3RlZHpvbmUvJHt0aGlzLm5vcm1hbGl6ZUhvc3RlZFpvbmVJZCh6b25lLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkKX1gXSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgJ0ZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHMnOiB7XG4gICAgICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzUmVjb3JkVHlwZXMnOiBbJ0NOQU1FJ10sXG4gICAgICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQWN0aW9ucyc6IFsnVVBTRVJUJywgJ0RFTEVURSddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnRm9yQWxsVmFsdWVzOlN0cmluZ0xpa2UnOiB7XG4gICAgICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzTm9ybWFsaXplZFJlY29yZE5hbWVzJzogZG9tYWluTmFtZXMubWFwKChuYW1lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2lsZGNhcmREb21haW5OYW1lKGBEb21haW5XaWxkY2FyZCR7em9uZS5ob3N0ZWRab25lLm5vZGUuaWR9JHtpbmRleH1gLCBuYW1lKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IHJlcXVlc3RvclByb3ZpZGVyID0gbmV3IGN1c3RvbV9yZXNvdXJjZXMuUHJvdmlkZXIodGhpcywgJ1JlcXVlc3RvclByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHJlcXVlc3RvckZ1bmN0aW9uLFxuICAgIH0pXG5cbiAgICBjb25zdCB2YWxpZGF0aW9uSG9zdGVkWm9uZXMgPSBwcm9wcy52YWxpZGF0aW9uSG9zdGVkWm9uZXMubWFwPFtzdHJpbmcsIFZhbGlkYXRpb25Ib3N0ZWRab25lUHJvcGVydGllc10+KCh6b25lKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXMgPSB7XG4gICAgICAgIERvbWFpbk5hbWU6IHRoaXMubm9ybWFsaXplRG9tYWluTmFtZSh6b25lLmhvc3RlZFpvbmUuem9uZU5hbWUpLFxuICAgICAgICBIb3N0ZWRab25lSWQ6IHRoaXMubm9ybWFsaXplSG9zdGVkWm9uZUlkKHpvbmUuaG9zdGVkWm9uZS5ob3N0ZWRab25lSWQpLFxuICAgICAgICBWYWxpZGF0aW9uUm9sZUFybjogem9uZS52YWxpZGF0aW9uUm9sZT8ucm9sZUFybixcbiAgICAgICAgVmFsaWRhdGlvbkV4dGVybmFsSWQ6IHpvbmUudmFsaWRhdGlvbkV4dGVybmFsSWQsXG4gICAgICB9XG4gICAgICByZXR1cm4gW3Byb3BlcnRpZXMuRG9tYWluTmFtZSwgcHJvcGVydGllc11cbiAgICB9KVxuXG4gICAgY29uc3QgcHJvcGVydGllczogUHJvcGVydGllcyA9IHtcbiAgICAgIERvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICBBbHRlcm5hdGl2ZURvbWFpbk5hbWVzOiBhbHRlcm5hdGl2ZURvbWFpbk5hbWVzLFxuICAgICAgVmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBPYmplY3QuZnJvbUVudHJpZXModmFsaWRhdGlvbkhvc3RlZFpvbmVzKSxcbiAgICAgIENlcnRpZmljYXRlUmVnaW9uOiB0aGlzLmNlcnRpZmljYXRlUmVnaW9uLFxuICAgICAgQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzOiBib29sZWFuVG9TdHJpbmcocHJvcHMuY2xlYW51cFZhbGlkYXRpb25SZWNvcmRzID8/IHRydWUpLFxuICAgICAgVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQ6IGJvb2xlYW5Ub1N0cmluZyhwcm9wcy50cmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZCA/PyB0cnVlKSxcbiAgICAgIFRhZ3M6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMudGFncy5yZW5kZXJUYWdzKCkgfSkgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgICAgUmVtb3ZhbFBvbGljeTogY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW1vdmFsUG9saWN5IH0pLFxuICAgIH1cblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVxdWVzdG9yUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHJlcXVlc3RvclByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHJlc291cmNlVHlwZTogRE5TX1ZBTElEQVRFRF9DRVJUSUZJQ0FURV9UWVBFLFxuICAgICAgcHJvcGVydGllcyxcbiAgICB9KVxuXG4gICAgLy8gRW5zdXJlIENsb3VkRm9ybWF0aW9uIGRlbGV0ZXMgdGhlIGN1c3RvbSByZXNvdXJjZSBiZWZvcmUgdGhlIExhbWJkYVxuICAgIC8vIGZ1bmN0aW9uIGFuZCBpdHMgSUFNIHBvbGljaWVzLiBDbG91ZEZvcm1hdGlvbiBtYXkgZGVsZXRlIHRoZW0gaW5cbiAgICAvLyBwYXJhbGxlbCBkdXJpbmcgc3RhY2sgZGVsZXRpb24sIGNhdXNpbmcgdGhlIERFTEVURSBoYW5kbGVyIHRvIGZhaWxcbiAgICAvLyBiZWNhdXNlIHRoZSBMYW1iZGEncyBBQ00gcGVybWlzc2lvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cbiAgICBjZXJ0aWZpY2F0ZS5ub2RlLmFkZERlcGVuZGVuY3kocmVxdWVzdG9yRnVuY3Rpb24pXG4gICAgaWYgKHJlcXVlc3RvckZ1bmN0aW9uLnJvbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2VydGlmaWNhdGUubm9kZS5hZGREZXBlbmRlbmN5KHJlcXVlc3RvckZ1bmN0aW9uLnJvbGUpXG4gICAgICBjb25zdCBwb2xpY3kgPSByZXF1ZXN0b3JGdW5jdGlvbi5yb2xlLm5vZGUudHJ5RmluZENoaWxkKCdEZWZhdWx0UG9saWN5JylcbiAgICAgIGlmIChwb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjZXJ0aWZpY2F0ZS5ub2RlLmFkZERlcGVuZGVuY3kocG9saWN5KVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2VydGlmaWNhdGVBcm4gPSBjZXJ0aWZpY2F0ZS5nZXRBdHRTdHJpbmcoJ0FybicpXG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT5cbiAgICAgICAgdGhpcy52YWxpZGF0ZURvbWFpbnNUb0hvc3RlZFpvbmVzKFxuICAgICAgICAgIGFsbERvbWFpbnMsXG4gICAgICAgICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcCgoW3pvbmVOYW1lLCBfXSkgPT4gem9uZU5hbWUpXG4gICAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIG1ldHJpY0RheXNUb0V4cGlyeShwcm9wcz86IGNkay5hd3NfY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zIHwgdW5kZWZpbmVkKTogY2RrLmF3c19jbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENlcnRpZmljYXRlQXJuOiB0aGlzLmNlcnRpZmljYXRlQXJuIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRGF5c1RvRXhwaXJ5JyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9DZXJ0aWZpY2F0ZU1hbmFnZXInLFxuICAgICAgcmVnaW9uOiB0aGlzLmNlcnRpZmljYXRlUmVnaW9uLFxuICAgICAgc3RhdGlzdGljOiBjbG91ZHdhdGNoLlN0YXRzLk1JTklNVU0sXG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmFsUG9saWN5ID0gcG9saWN5XG4gIH1cblxuICAvLyBjZXJ0aWZpY2F0ZVJlZiBpcyBhIHJlcXVpcmVkIHByb3BlcnR5IG9mIHR5cGUgY2VydGlmaWNhdGVtYW5hZ2VyLklDZXJ0aWZpY2F0ZVJlZiBvbiBjZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlIHNpbmNlIGF3cy1jZGstbGliIDIuMzUuMFxuICAvLyBXZSB1c2UgdHlwZSBhbnkgaGVyZSB0byBrZWVwIGNvbXBhdGFiaWxpdHkgd2l0aCBvbGRlciBDREsgdmVyc2lvbnNcbiAgLyoqIEEgcmVmZXJlbmNlIHRvIGEgQ2VydGlmaWNhdGUgcmVzb3VyY2UuICovXG4gIHB1YmxpYyBnZXQgY2VydGlmaWNhdGVSZWYoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY2VydGlmaWNhdGVJZDogdGhpcy5jZXJ0aWZpY2F0ZUFybixcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZURvbWFpbk5hbWUoZG9tYWluTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZChkb21haW5OYW1lKSkge1xuICAgICAgcmV0dXJuIGRvbWFpbk5hbWVcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuRG9tYWluTmFtZShkb21haW5OYW1lKVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVIb3N0ZWRab25lSWQoaG9zdGVkWm9uZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGhvc3RlZFpvbmVJZCkpIHtcbiAgICAgIHJldHVybiBob3N0ZWRab25lSWRcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuSG9zdGVkWm9uZUlkKGhvc3RlZFpvbmVJZClcbiAgfVxuXG4gIHByaXZhdGUgd2lsZGNhcmREb21haW5OYW1lKGlkOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBjZGsuRm4uc3BsaXQoJy4nLCBkb21haW5OYW1lKVxuICAgIGNvbnN0IGZpcnN0ID0gY2RrLkZuLnNlbGVjdCgwLCBwYXJ0cylcbiAgICBjb25zdCBpc1dpbGRjYXJkID0gbmV3IGNkay5DZm5Db25kaXRpb24odGhpcywgYElzJHtpZH1gLCB7XG4gICAgICBleHByZXNzaW9uOiBjZGsuRm4uY29uZGl0aW9uRXF1YWxzKGZpcnN0LCAnKicpLFxuICAgIH0pXG4gICAgcmV0dXJuIGNkay5Gbi5jb25kaXRpb25JZihpc1dpbGRjYXJkLmxvZ2ljYWxJZCwgZG9tYWluTmFtZSwgYCouJHtkb21haW5OYW1lfWApLnRvU3RyaW5nKClcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEb21haW5zVG9Ib3N0ZWRab25lcyhkb21haW5OYW1lczogc3RyaW5nW10sIHpvbmVOYW1lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBkb21haW5OYW1lIG9mIGRvbWFpbk5hbWVzKSB7XG4gICAgICBjb25zdCByZXNvbHZhYmxlRG9tYWluTmFtZSA9ICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGRvbWFpbk5hbWUpXG4gICAgICBjb25zdCByZXNvbHZhYmxlWm9uZU5hbWVzID0gIXpvbmVOYW1lcy5zb21lKCh6b25lTmFtZSkgPT4gY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh6b25lTmFtZSkpXG4gICAgICBpZiAocmVzb2x2YWJsZURvbWFpbk5hbWUgJiYgcmVzb2x2YWJsZVpvbmVOYW1lcyAmJiAhem9uZU5hbWVzLnNvbWUoKHpvbmVOYW1lKSA9PiBkb21haW5OYW1lLmVuZHNXaXRoKHpvbmVOYW1lKSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYERvbWFpbiAke2RvbWFpbk5hbWV9IGlzIG5vdCBwcm92aWRlZCB3aXRoIGF1dGhvcml0YXRpdmUgaG9zdGVkIHpvbmVgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3JzXG4gIH1cbn1cbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXZhbGlkYXRlZC1jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kbnMtdmFsaWRhdGVkLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBa0M7QUFFbEMsdUVBQXdEO0FBQ3hELHlEQUEwQztBQUMxQywrREFBZ0Q7QUFFaEQsK0VBQWdFO0FBRWhFLHFGQUErRTtBQUUvRSxtQ0FBZ0c7QUFpSGhHLE1BQU0sOEJBQThCLEdBQUcsaUNBQWlDLENBQUE7QUFDeEUsTUFBTSwwQkFBMEIsR0FBRyxzQ0FBc0MsQ0FBQTtBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLEdBQUcsQ0FBQyxRQUFROztJQUN2RCw0QkFBNEI7SUFDWixjQUFjLENBQVE7SUFFdEMsc0RBQXNEO0lBQ3RDLGlCQUFpQixDQUFRO0lBRXpDLDBFQUEwRTtJQUMxRCxJQUFJLENBQWdCO0lBRXBDLDZDQUE2QztJQUNyQyxhQUFhLENBQW1CO0lBRXhDOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUM7UUFDM0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdELE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FDekYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLENBQ2hELENBQUE7UUFDRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFH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RUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDM0YsQ0FBQztJQUVPLDRCQUE0QixDQUFDLFdBQXFCLEVBQUUsU0FBbUI7UUFDN0UsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO1FBQzNCLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQzNGLElBQUksb0JBQW9CLElBQUksbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEgsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLFVBQVUsaURBQWlELENBQUMsQ0FBQTtZQUNwRixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzs7QUFwTkgsMERBcU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJ1xuaW1wb3J0ICogYXMgY2VydGlmaWNhdGVtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInXG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJ1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSdcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnXG5pbXBvcnQgKiBhcyBjdXN0b21fcmVzb3VyY2VzIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVSZXF1ZXN0b3JGdW5jdGlvbiB9IGZyb20gJy4vY2VydGlmaWNhdGUtcmVxdWVzdG9yLWZ1bmN0aW9uJ1xuaW1wb3J0IHsgUHJvcGVydGllcywgVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhJ1xuaW1wb3J0IHsgYm9vbGVhblRvU3RyaW5nLCBjbGVhbkRvbWFpbk5hbWUsIGNsZWFuSG9zdGVkWm9uZUlkLCBtYXRjaE5hbWVzVG9ab25lcyB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkhvc3RlZFpvbmUge1xuICAvKipcbiAgICogSG9zdGVkIHpvbmUgdG8gdXNlIGZvciBETlMgdmFsaWRhdGlvbi4gVGhlIHpvbmUgbmFtZSBpcyBtYXRjaGVkIHRvIGRvbWFpbiBuYW1lIHRvIHVzZSB0aGUgcmlnaHRcbiAgICogaG9zdGVkIHpvbmUgZm9yIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIElmIHRoZSBob3N0ZWQgem9uZSBpcyBub3QgbWFuYWdlZCBieSB0aGUgQ0RLIGFwcGxpY2F0aW9uLCBpdCBuZWVkcyB0byBiZSBwcm92aWRlZCB2aWFcbiAgICogYGBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcygpYGAuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lXG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgaXMgYXNzdW1lZCBmb3IgRE5TIHJlY29yZCBjaGFuZ2VzIGZvciBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvbGUgc2hvdWxkIGV4aXN0IGluIHRoZSBzYW1lIGFjY291bnQgYXMgdGhlIGhvc3RlZCB6b25lIGFuZCBpbmNsdWRlIHBlcm1pc3Npb25zIHRvIGNoYW5nZSB0aGUgRE5TIHJlY29yZHNcbiAgICogZm9yIHRoZSBnaXZlbiBgYGhvc3RlZFpvbmVgYC4gVGhlIGBgY3VzdG9tUmVzb3VyY2VSb2xlYGAgb3IgdGhlIGRlZmF1bHQgZXhlY3V0aW9uIHJvbGUgaXMgZ2l2ZW4gcGVybWlzc2lvbiB0b1xuICAgKiBhc3N1bWUgdGhpcyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlcGFyYXRlIHJvbGUgZm9yIEROUyByZWNvcmQgY2hhbmdlcy4gVGhlIGdpdmVuIGN1c3RvbVJlc291cmNlUm9sZSBvciB0aGUgZGVmYXVsdCByb2xlIGlzIHVzZWRcbiAgICogZm9yIEROUyByZWNvcmQgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25Sb2xlPzogaWFtLklSb2xlXG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIGlkIGZvciBgYHZhbGlkYXRpb25Sb2xlYGAgcm9sZSBhc3N1bWUgdmVyaWZpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiBgYHZhbGlkYXRpb25Sb2xlYGAgaXMgZ2l2ZW4gYW5kIHRoZSByb2xlIGV4cGVjdHMgYW4gZXh0ZXJuYWwgaWQgcHJvdmlkZWQgb24gYXNzdW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGV4dGVybmFsIGlkIHByb3ZpZGVkIGR1cmluZyBhc3N1bWUuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uRXh0ZXJuYWxJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERuc1ZhbGlkYXRlZENlcnRpZmljYXRlUHJvcHMge1xuICAvKipcbiAgICogRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHRvIHJlcXVlc3QgYSBjZXJ0aWZpY2F0ZSBmb3IuXG4gICAqXG4gICAqIE1heSBjb250YWluIHdpbGRjYXJkcywgc3VjaCBhcyBgYCouZG9tYWluLmNvbWBgLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEZ1bGx5LXF1YWxpZmllZCBhbHRlcm5hdGl2ZSBkb21haW4gbmFtZXMgdG8gcmVxdWVzdCBhIGNlcnRpZmljYXRlIGZvci5cbiAgICpcbiAgICogTWF5IGNvbnRhaW4gd2lsZGNhcmRzLCBzdWNoIGFzIGBgKi5vdGhlcmRvbWFpbi5jb21gYC5cbiAgICovXG4gIHJlYWRvbmx5IGFsdGVybmF0aXZlRG9tYWluTmFtZXM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGhvc3RlZCB6b25lcyB0byB1c2UgZm9yIHZhbGlkYXRpb24uIEhvc3RlZCB6b25lcyBhcmUgbWFwcGVkIHRvIGRvbWFpbiBuYW1lcyBieSB0aGUgem9uZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBWYWxpZGF0aW9uSG9zdGVkWm9uZVtdXG5cbiAgLyoqXG4gICAqIEFXUyByZWdpb24gd2hlcmUgdGhlIGNlcnRpZmljYXRlIGlzIGRlcGxveWVkLlxuICAgKlxuICAgKiBZb3Ugc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBgYENlcnRpZmljYXRlYGAgY29uc3RydWN0IGluc3RlYWQgaWYgdGhlIHJlZ2lvbiBpcyBzYW1lIGFzIHRoZSBzdGFjaydzIGFuZCB0aGUgaG9zdGVkXG4gICAqIHpvbmUgaXMgaW4gdGhlIHNhbWUgYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTYW1lIHJlZ2lvbiBhcyB0aGUgc3RhY2suXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZVJlZ2lvbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBjdXN0b20gcmVzb3VyY2UgTGFtYmRhIGV4ZWN1dGlvbi5cbiAgICpcbiAgICogVGhlIHJvbGUgaXMgZ2l2ZW4gcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBjZXJ0aWZpY2F0ZXMgZnJvbSBBQ00uIElmIHRoZXJlIGFyZSBhbnkgYGB2YWxpZGF0aW9uUm9sZWBgcyBwcm92aWRlZCxcbiAgICogdGhpcyByb2xlIGlzIGFsc28gZ2l2ZW4gcGVybWlzc2lvbiB0byBhc3N1bWUgdGhlIGBgdmFsaWRhdGlvblJvbGVgYC4gT3RoZXJ3aXNlIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgaG9zdGVkIHpvbmVcbiAgICogaXMgaW4gc2FtZSBhY2NvdW50IGFuZCB0aGUgZXhlY3V0aW9uIHJvbGUgaXMgZ2l2ZW4gcGVybWlzc2lvbnMgdG8gY2hhbmdlIEROUyByZWNvcmRzIGZvciB0aGUgZ2l2ZW4gYGBkb21haW5OYW1lYGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTGFtYmRhIGNyZWF0ZXMgYSBkZWZhdWx0IGV4ZWN1dGlvbiByb2xlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUmVzb3VyY2VSb2xlPzogaWFtLklSb2xlXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGNsZWFuaW5nIG9mIHZhbGlkYXRpb24gRE5TIHJlY29yZHMgZnJvbSB0aGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIElmIHRoZXJlJ3MgbXVsdGlwbGUgY2VydGlmaWNhdGVzIGNyZWF0ZWQgZm9yIHNhbWUgZG9tYWluLCBpdCBpcyBwb3NzaWJsZSB0byBlbmNvdXRlciBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHNvbWVcbiAgICogY2VydGlmaWNhdGUgaXMgcmVtb3ZlZCBhbmQgYW5vdGhlciBjZXJ0aWZpY2F0ZSB3b3VsZCBuZWVkIHRoZSBzYW1lIHZhbGlkYXRpb24gcmVjb3JkLiBQcmVmZXIgc2luZ2xlIGNlcnRpZmljYXRlXG4gICAqIGZvciBhIGRvbWFpbiBvciBzZXQgdGhpcyB0byBmYWxzZSBhbmQgY2xlYW51cCByZWNvcmRzIG1hbnVhbGx5IHdoZW4gbm90IG5lZWRlZCBhbnltb3JlLiBJZiB5b3UgY2hhbmdlIHRoaXNcbiAgICogcHJvcGVydHkgYWZ0ZXIgY3JlYXRpb24sIGEgbmV3IGNlcnRpZmljYXRlIHdpbGwgYmUgcmVxdWVzdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbGVhbnVwVmFsaWRhdGlvblJlY29yZHM/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRyYW5zcGFyZW5jeSBsb2dnaW5nIGZvciB0aGlzIGNlcnRpZmljYXRlLlxuICAgKlxuICAgKiBPbmNlIGEgY2VydGlmaWNhdGUgaGFzIGJlZW4gbG9nZ2VkLCBpdCBjYW5ub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBsb2cuIE9wdGluZyBvdXQgYXQgdGhhdCBwb2ludCB3aWxsIGhhdmUgbm9cbiAgICogZWZmZWN0LiBJZiB5b3UgY2hhbmdlIHRoaXMgcHJvcGVydHkgYWZ0ZXIgY3JlYXRpb24sIGEgbmV3IGNlcnRpZmljYXRlIHdpbGwgYmUgcmVxdWVzdGVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hY20vbGF0ZXN0L3VzZXJndWlkZS9hY20tYmVzdHByYWN0aWNlcy5odG1sI2Jlc3QtcHJhY3RpY2VzLXRyYW5zcGFyZW5jeVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZD86IGJvb2xlYW5cblxuICAvKipcbiAgICogQXBwbHkgdGhlIGdpdmVuIHJlbW92YWwgcG9saWN5IHRvIHRoaXMgcmVzb3VyY2UuXG4gICAqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBjb250cm9scyB3aGF0IGhhcHBlbnMgdG8gdGhpcyByZXNvdXJjZSB3aGVuIGl0IHN0b3BzIGJlaW5nIG1hbmFnZWQgYnkgQ2xvdWRGb3JtYXRpb24sIGVpdGhlclxuICAgKiBiZWNhdXNlIHlvdSd2ZSByZW1vdmVkIGl0IGZyb20gdGhlIENESyBhcHBsaWNhdGlvbiBvciBiZWNhdXNlIHlvdSd2ZSBtYWRlIGEgY2hhbmdlIHRoYXQgcmVxdWlyZXMgdGhlIHJlc291cmNlIHRvXG4gICAqIGJlIHJlcGxhY2VkLiBUaGUgcmVzb3VyY2UgY2FuIGJlIGRlbGV0ZWQgKGBgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZYGApLCBvciBsZWZ0IGluIHlvdXIgQVdTIGFjY291bnQgZm9yIGRhdGFcbiAgICogcmVjb3ZlcnkgYW5kIGNsZWFudXAgbGF0ZXIgKGBgUmVtb3ZhbFBvbGljeS5SRVRBSU5gYCkuIElmIHlvdSBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBjcmVhdGlvbiwgYSBuZXdcbiAgICogY2VydGlmaWNhdGUgd2lsbCBiZSByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IGNkay5SZW1vdmFsUG9saWN5XG59XG5cbmNvbnN0IEROU19WQUxJREFURURfQ0VSVElGSUNBVEVfVFlQRSA9ICdDdXN0b206OkRuc1ZhbGlkYXRlZENlcnRpZmljYXRlJ1xuY29uc3QgQ0VSVFRJRklDQVRFX1JFU09VUkNFX1RZUEUgPSAnQVdTOjpDZXJ0aWZpY2F0ZU1hbmFnZXI6OkNlcnRpZmljYXRlJ1xuXG4vKipcbiAqIEEgY2VydGlmaWNhdGUgbWFuYWdlZCBieSBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlci4gV2lsbCBiZSBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlZCB1c2luZyBETlMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZVxuICogc3BlY2lmaWVkIFJvdXRlIDUzIGhvc3RlZCB6b25lLiBUaGlzIGNvbnN0cnVjdCBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBjcm9zcy1yZWdpb24gb3IgY3Jvc3MtYWNjb3VudCBjZXJ0aWZpY2F0ZVxuICogdmFsaWRhdGlvbnMuIFRoZSBkZWZhdWx0IGBgQ2VydGlmaWNhdGVgYCBjb25zdHJ1Y3QgaXMgYmV0dGVyIGluIGNhc2VzIHdoZXJlIGV2ZXJ5dGhpbmcgaXMgbWFuYWdlZCBieSB0aGUgQ0RLXG4gKiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgY29uc3RydWN0IGRvZXMgbm90IHN1cHBvcnQgYWx0ZXJuYXRpdmUgbmFtZXMgeWV0IGFzIGl0IHdvdWxkIHJlcXVpcmUgZG9tYWluIHRvIHJvbGUgbWFwcGluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gIyMjIENyb3NzLXJlZ2lvbiBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uXG4gKiAvLyBob3N0ZWQgem9uZSBtYW5hZ2VkIGJ5IHRoZSBDREsgYXBwbGljYXRpb25cbiAqIGNvbnN0IGhvc3RlZFpvbmU6IHJvdXRlNTMuSUhvc3RlZFpvbmUgPSAuLi5cbiAqIC8vIG5vIHNlcGFyYXRlIHZhbGlkYXRpb24gcm9sZSBpcyBuZWVkZWRcbiAqIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsICdDcm9zc1JlZ2lvbkNlcnRpZmljYXRlJywge1xuICogICBkb21haW5OYW1lOiAnZXhhbXBsZS5jb20nLCAgICAgLy8gbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGhvc3RlZCB6b25lXG4gKiAgIHZhbGlkYXRpb25Ib3N0ZWRab25lczogW3sgICAgICAvLyBob3N0ZWQgem9uZSB1c2VkIHdpdGggdGhlIGV4ZWN1dGlvbiByb2xlJ3MgcGVybWlzc2lvbnNcbiAqICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lXG4gKiAgIH1dLFxuICogICBjZXJ0aWZpY2F0ZVJlZ2lvbjogJ3VzLWVhc3QtMScgLy8gdXNlZCBieSBmb3IgZXhhbXBsZSBDbG91ZEZyb250XG4gKiB9KVxuICogLy8gIyMjIENyb3NzLWFjY291bnQgY2VydGlmaWNhdGUgdmFsaWRhdGlvblxuICogLy8gZXh0ZXJuYWwgaG9zdGVkIHpvbmVcbiAqIGNvbnN0IGhvc3RlZFpvbmU6IHJvdXRlNTMuSUhvc3RlZFpvbmUgPVxuICogICByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsICdIb3N0ZWRab25lJywge1xuICogICAgIGhvc3RlZFpvbmVJZDogJ1o1MzJER0RFREZTMTIzNDU2Nzg5JyxcbiAqICAgICB6b25lTmFtZTogJ2V4YW1wbGUuY29tJ1xuICogICB9KVxuICogLy8gdmFsaWRhdGlvbiByb2xlIGluIHRoZSBzYW1lIGFjY291bnQgYXMgdGhlIGhvc3RlZCB6b25lXG4gKiBjb25zdCByb2xlQXJuID0gJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODk6cm9sZS9DaGFuZ2VEbnNSZWNvcmRzUm9sZSdcbiAqIGNvbnN0IGV4dGVybmFsSWQgPSAnZG9tYWluLWFzc3VtZSdcbiAqIGNvbnN0IHZhbGlkYXRpb25Sb2xlOiBpYW0uSVJvbGUgPVxuICogICBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnVmFsaWRhdGlvblJvbGUnLCByb2xlQXJuKVxuICogY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ0Nyb3NzQWNjb3VudENlcnRpZmljYXRlJywge1xuICogICBkb21haW5OYW1lOiAnZXhhbXBsZS5jb20nLFxuICogICB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFt7XG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZSxcbiAqICAgICB2YWxpZGF0aW9uUm9sZTogdmFsaWRhdGlvblJvbGUsXG4gKiAgICAgdmFsaWRhdGlvbkV4dGVybmFsSWQ6IGV4dGVybmFsSWRcbiAqICAgfV1cbiAqIH0pXG4gKiAvLyAjIyMgQ3Jvc3MtYWNjb3VudCBhbHRlcm5hdGl2ZSBuYW1lIHZhbGlkYXRpb25cbiAqIC8vIGV4YW1wbGUuY29tIGlzIHZhbGlkYXRlZCBvbiBzYW1lIGFjY291bnQgYWdhaW5zdCBtYW5hZ2VkIGhvc3RlZCB6b25lXG4gKiAvLyBhbmQgc2Vjb25kYXJ5LmNvbSBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBleHRlcm5hbCBob3N0ZWQgem9uZSBvbiBvdGhlciBhY2NvdW50XG4gKiBjb25zdCBob3N0ZWRab25lRm9yTWFpbjogcm91dGU1My5JSG9zdGVkWm9uZSA9IC4uLlxuICogY29uc3QgaG9zdGVkWm9uZUZvckFsdGVybmF0aXZlOiByb3V0ZTUzLklIb3N0ZWRab25lID1cbiAqICAgcm91dGU1My5Ib3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCAnU2Vjb25kYXJ5SG9zdGVkWm9uZScsIHtcbiAqICAgICBob3N0ZWRab25lSWQ6ICdaNTMyREdERURGUzEyMzQ1Njc4OScsXG4gKiAgICAgem9uZU5hbWU6ICdzZWNvbmRhcnkuY29tJ1xuICogICB9KVxuICogY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ0Nyb3NzQWNjb3VudENlcnRpZmljYXRlJywge1xuICogICBkb21haW5OYW1lOiAnZXhhbXBsZS5jb20nLFxuICogICBhbHRlcm5hdGl2ZURvbWFpbk5hbWVzOiBbJ3NlY29uZGFyeS5jb20nXSxcbiAqICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBbe1xuICogICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVGb3JNYWluXG4gKiAgIH0se1xuICogICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVGb3JBbHRlcm5hdGl2ZSxcbiAqICAgICB2YWxpZGF0aW9uUm9sZTogaWFtLlJvbGUuZnJvbVJvbGVBcm4oXG4gKiAgICAgICB0aGlzLCAnU2Vjb25kYXJ5VmFsaWRhdGlvblJvbGUnLCAnYXJuOmF3czppYW06OjEyMzQ1Njc4OTpyb2xlL0NoYW5nZURuc1JlY29yZHNSb2xlJ1xuICogICAgICksXG4gKiAgICAgdmFsaWRhdGlvbkV4dGVybmFsSWQ6ICdkb21haW4tYXNzdW1lJ1xuICogICB9XVxuICogfSlcbiAqXG4gKiBAcmVzb3VyY2UgQ3VzdG9tOjpEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZVxuICogQHJlc291cmNlIEFXUzo6Q2VydGlmaWNhdGVNYW5hZ2VyOjpDZXJ0aWZpY2F0ZVxuICovXG5leHBvcnQgY2xhc3MgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBjZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlLCBjZGsuSVRhZ2dhYmxlIHtcbiAgLyoqIFRoZSBjZXJ0aWZpY2F0ZSdzIEFSTiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2VydGlmaWNhdGVBcm46IHN0cmluZ1xuXG4gIC8qKiBUaGUgcmVnaW9uIHdoZXJlIHRoZSBjZXJ0aWZpY2F0ZSBpcyBkZXBsb3llZCB0byAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2VydGlmaWNhdGVSZWdpb246IHN0cmluZ1xuXG4gIC8qKiBUaGUgdGFnIG1hbmFnZXIgdG8gc2V0LCByZW1vdmUgYW5kIGZvcm1hdCB0YWdzIGZvciB0aGUgY2VydGlmaWNhdGUgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlclxuXG4gIC8qKiBUaGUgcmVtb3ZhbCBwb2xpY3kgZm9yIHRoZSBjZXJ0aWZpY2F0ZSAqL1xuICBwcml2YXRlIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUgY29uc3RydWN0LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgY29uc3RydWN0IGhvc3RpbmcgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIGNvbnN0cnVjdCdzIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHByb3BzIHByb3BlcnRpZXMgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMubm9ybWFsaXplRG9tYWluTmFtZShwcm9wcy5kb21haW5OYW1lKVxuICAgIGNvbnN0IGFsdGVybmF0aXZlRG9tYWluTmFtZXMgPSBwcm9wcy5hbHRlcm5hdGl2ZURvbWFpbk5hbWVzPy5tYXAoKGFsdGVybmF0aXZlRG9tYWluTmFtZSkgPT5cbiAgICAgIHRoaXMubm9ybWFsaXplRG9tYWluTmFtZShhbHRlcm5hdGl2ZURvbWFpbk5hbWUpXG4gICAgKVxuICAgIGNvbnN0IGFsbERvbWFpbnMgPSBbZG9tYWluTmFtZSwgLi4uKGFsdGVybmF0aXZlRG9tYWluTmFtZXMgPz8gW10pXVxuXG4gICAgdGhpcy5jZXJ0aWZpY2F0ZVJlZ2lvbiA9IHByb3BzLmNlcnRpZmljYXRlUmVnaW9uID8/IHRoaXMuc3RhY2sucmVnaW9uXG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKGNkay5UYWdUeXBlLk1BUCwgQ0VSVFRJRklDQVRFX1JFU09VUkNFX1RZUEUpXG4gICAgdGhpcy5yZW1vdmFsUG9saWN5ID0gcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG5cbiAgICBjb25zdCByZXF1ZXN0b3JGdW5jdGlvbiA9IG5ldyBDZXJ0aWZpY2F0ZVJlcXVlc3RvckZ1bmN0aW9uKHRoaXMsICdSZXF1ZXN0b3JGdW5jdGlvbicsIHtcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxNCksXG4gICAgICByb2xlOiBwcm9wcy5jdXN0b21SZXNvdXJjZVJvbGUsXG4gICAgfSlcblxuICAgIHJlcXVlc3RvckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2FjbTpSZXF1ZXN0Q2VydGlmaWNhdGUnLFxuICAgICAgICAgICdhY206RGVzY3JpYmVDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgJ2FjbTpEZWxldGVDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgJ2FjbTpBZGRUYWdzVG9DZXJ0aWZpY2F0ZScsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KVxuICAgIClcblxuICAgIGNvbnN0IGRvbWFpbnNUb1pvbmVzID0gbWF0Y2hOYW1lc1RvWm9uZXMoXG4gICAgICBwcm9wcy52YWxpZGF0aW9uSG9zdGVkWm9uZXMubWFwKCh6b25lKSA9PiB6b25lLmhvc3RlZFpvbmUuem9uZU5hbWUpLFxuICAgICAgYWxsRG9tYWlucyxcbiAgICAgIChkb21haW4pID0+IGRvbWFpblxuICAgIClcbiAgICBjb25zdCBob3N0ZWRab25lc1dpdGhSb2xlID0gcHJvcHMudmFsaWRhdGlvbkhvc3RlZFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS52YWxpZGF0aW9uUm9sZSAhPT0gdW5kZWZpbmVkKVxuICAgIGNvbnN0IGhvc3RlZFpvbmVzV2l0aG91dFJvbGUgPSBwcm9wcy52YWxpZGF0aW9uSG9zdGVkWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnZhbGlkYXRpb25Sb2xlID09PSB1bmRlZmluZWQpXG5cbiAgICBob3N0ZWRab25lc1dpdGhSb2xlLmZvckVhY2goKHpvbmUpID0+IHtcbiAgICAgIHJlcXVlc3RvckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbem9uZS52YWxpZGF0aW9uUm9sZSEucm9sZUFybl0sXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfSlcblxuICAgIGhvc3RlZFpvbmVzV2l0aG91dFJvbGUuZm9yRWFjaCgoem9uZSkgPT4ge1xuICAgICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydyb3V0ZTUzOkdldENoYW5nZSddLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICBjb25zdCBkb21haW5OYW1lcyA9IGRvbWFpbnNUb1pvbmVzW3pvbmUuaG9zdGVkWm9uZS56b25lTmFtZV1cbiAgICAgIGlmIChkb21haW5OYW1lcyAmJiBkb21haW5OYW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlcXVlc3RvckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzJ10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpyb3V0ZTUzOjo6aG9zdGVkem9uZS8ke3RoaXMubm9ybWFsaXplSG9zdGVkWm9uZUlkKHpvbmUuaG9zdGVkWm9uZS5ob3N0ZWRab25lSWQpfWBdLFxuICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAnRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFscyc6IHtcbiAgICAgICAgICAgICAgICAncm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNSZWNvcmRUeXBlcyc6IFsnQ05BTUUnXSxcbiAgICAgICAgICAgICAgICAncm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNBY3Rpb25zJzogWydVUFNFUlQnLCAnREVMRVRFJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICdGb3JBbGxWYWx1ZXM6U3RyaW5nTGlrZSc6IHtcbiAgICAgICAgICAgICAgICAncm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNOb3JtYWxpemVkUmVjb3JkTmFtZXMnOiBkb21haW5OYW1lcy5tYXAoKG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aWxkY2FyZERvbWFpbk5hbWUoYERvbWFpbldpbGRjYXJkJHt6b25lLmhvc3RlZFpvbmUubm9kZS5pZH0ke2luZGV4fWAsIG5hbWUpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgcmVxdWVzdG9yUHJvdmlkZXIgPSBuZXcgY3VzdG9tX3Jlc291cmNlcy5Qcm92aWRlcih0aGlzLCAnUmVxdWVzdG9yUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogcmVxdWVzdG9yRnVuY3Rpb24sXG4gICAgfSlcblxuICAgIGNvbnN0IHZhbGlkYXRpb25Ib3N0ZWRab25lcyA9IHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5tYXA8W3N0cmluZywgVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzXT4oKHpvbmUpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXM6IFZhbGlkYXRpb25Ib3N0ZWRab25lUHJvcGVydGllcyA9IHtcbiAgICAgICAgRG9tYWluTmFtZTogdGhpcy5ub3JtYWxpemVEb21haW5OYW1lKHpvbmUuaG9zdGVkWm9uZS56b25lTmFtZSksXG4gICAgICAgIEhvc3RlZFpvbmVJZDogdGhpcy5ub3JtYWxpemVIb3N0ZWRab25lSWQoem9uZS5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCksXG4gICAgICAgIFZhbGlkYXRpb25Sb2xlQXJuOiB6b25lLnZhbGlkYXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgICBWYWxpZGF0aW9uRXh0ZXJuYWxJZDogem9uZS52YWxpZGF0aW9uRXh0ZXJuYWxJZCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBbcHJvcGVydGllcy5Eb21haW5OYW1lLCBwcm9wZXJ0aWVzXVxuICAgIH0pXG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzID0ge1xuICAgICAgRG9tYWluTmFtZTogZG9tYWluTmFtZSxcbiAgICAgIEFsdGVybmF0aXZlRG9tYWluTmFtZXM6IGFsdGVybmF0aXZlRG9tYWluTmFtZXMsXG4gICAgICBWYWxpZGF0aW9uSG9zdGVkWm9uZXM6IE9iamVjdC5mcm9tRW50cmllcyh2YWxpZGF0aW9uSG9zdGVkWm9uZXMpLFxuICAgICAgQ2VydGlmaWNhdGVSZWdpb246IHRoaXMuY2VydGlmaWNhdGVSZWdpb24sXG4gICAgICBDbGVhbnVwVmFsaWRhdGlvblJlY29yZHM6IGJvb2xlYW5Ub1N0cmluZyhwcm9wcy5jbGVhbnVwVmFsaWRhdGlvblJlY29yZHMgPz8gdHJ1ZSksXG4gICAgICBUcmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZDogYm9vbGVhblRvU3RyaW5nKHByb3BzLnRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkID8/IHRydWUpLFxuICAgICAgVGFnczogY2RrLkxhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy50YWdzLnJlbmRlclRhZ3MoKSB9KSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgICBSZW1vdmFsUG9saWN5OiBjZGsuTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbW92YWxQb2xpY3kgfSksXG4gICAgfVxuXG4gICAgY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdSZXF1ZXN0b3JSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcmVxdWVzdG9yUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBETlNfVkFMSURBVEVEX0NFUlRJRklDQVRFX1RZUEUsXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgIH0pXG5cbiAgICAvLyBFbnN1cmUgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyB0aGUgY3VzdG9tIHJlc291cmNlIGJlZm9yZSB0aGUgTGFtYmRhXG4gICAgLy8gZnVuY3Rpb24gYW5kIGl0cyBJQU0gcG9saWNpZXMuIENsb3VkRm9ybWF0aW9uIG1heSBkZWxldGUgdGhlbSBpblxuICAgIC8vIHBhcmFsbGVsIGR1cmluZyBzdGFjayBkZWxldGlvbiwgY2F1c2luZyB0aGUgREVMRVRFIGhhbmRsZXIgdG8gZmFpbFxuICAgIC8vIGJlY2F1c2UgdGhlIExhbWJkYSdzIEFDTSBwZXJtaXNzaW9ucyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkLlxuICAgIGNlcnRpZmljYXRlLm5vZGUuYWRkRGVwZW5kZW5jeShyZXF1ZXN0b3JGdW5jdGlvbilcbiAgICBpZiAocmVxdWVzdG9yRnVuY3Rpb24ucm9sZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjZXJ0aWZpY2F0ZS5ub2RlLmFkZERlcGVuZGVuY3kocmVxdWVzdG9yRnVuY3Rpb24ucm9sZSlcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlcXVlc3RvckZ1bmN0aW9uLnJvbGUubm9kZS50cnlGaW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKVxuICAgICAgaWYgKHBvbGljeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNlcnRpZmljYXRlLm5vZGUuYWRkRGVwZW5kZW5jeShwb2xpY3kpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jZXJ0aWZpY2F0ZUFybiA9IGNlcnRpZmljYXRlLmdldEF0dFN0cmluZygnQXJuJylcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKHtcbiAgICAgIHZhbGlkYXRlOiAoKSA9PlxuICAgICAgICB0aGlzLnZhbGlkYXRlRG9tYWluc1RvSG9zdGVkWm9uZXMoXG4gICAgICAgICAgYWxsRG9tYWlucyxcbiAgICAgICAgICB2YWxpZGF0aW9uSG9zdGVkWm9uZXMubWFwKChbem9uZU5hbWUsIF9dKSA9PiB6b25lTmFtZSlcbiAgICAgICAgKSxcbiAgICB9KVxuICB9XG5cbiAgbWV0cmljRGF5c1RvRXhwaXJ5KHByb3BzPzogY2RrLmF3c19jbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMgfCB1bmRlZmluZWQpOiBjZGsuYXdzX2Nsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLmRheXMoMSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2VydGlmaWNhdGVBcm46IHRoaXMuY2VydGlmaWNhdGVBcm4gfSxcbiAgICAgIG1ldHJpY05hbWU6ICdEYXlzVG9FeHBpcnknLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL0NlcnRpZmljYXRlTWFuYWdlcicsXG4gICAgICByZWdpb246IHRoaXMuY2VydGlmaWNhdGVSZWdpb24sXG4gICAgICBzdGF0aXN0aWM6IGNsb3Vkd2F0Y2guU3RhdHMuTUlOSU1VTSxcbiAgICB9KVxuICB9XG5cbiAgYXBwbHlSZW1vdmFsUG9saWN5KHBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92YWxQb2xpY3kgPSBwb2xpY3lcbiAgfVxuXG4gIC8vIGNlcnRpZmljYXRlUmVmIGlzIGEgcmVxdWlyZWQgcHJvcGVydHkgb2YgdHlwZSBjZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlUmVmIG9uIGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGUgc2luY2UgYXdzLWNkay1saWIgMi4zNS4wXG4gIC8vIFdlIHVzZSB0eXBlIGFueSBoZXJlIHRvIGtlZXAgY29tcGF0YWJpbGl0eSB3aXRoIG9sZGVyIENESyB2ZXJzaW9uc1xuICAvKiogQSByZWZlcmVuY2UgdG8gYSBDZXJ0aWZpY2F0ZSByZXNvdXJjZS4gKi9cbiAgcHVibGljIGdldCBjZXJ0aWZpY2F0ZVJlZigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjZXJ0aWZpY2F0ZUlkOiB0aGlzLmNlcnRpZmljYXRlQXJuLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplRG9tYWluTmFtZShkb21haW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGRvbWFpbk5hbWUpKSB7XG4gICAgICByZXR1cm4gZG9tYWluTmFtZVxuICAgIH1cbiAgICByZXR1cm4gY2xlYW5Eb21haW5OYW1lKGRvbWFpbk5hbWUpXG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZUhvc3RlZFpvbmVJZChob3N0ZWRab25lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoaG9zdGVkWm9uZUlkKSkge1xuICAgICAgcmV0dXJuIGhvc3RlZFpvbmVJZFxuICAgIH1cbiAgICByZXR1cm4gY2xlYW5Ib3N0ZWRab25lSWQoaG9zdGVkWm9uZUlkKVxuICB9XG5cbiAgcHJpdmF0ZSB3aWxkY2FyZERvbWFpbk5hbWUoaWQ6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IGNkay5Gbi5zcGxpdCgnLicsIGRvbWFpbk5hbWUpXG4gICAgY29uc3QgZmlyc3QgPSBjZGsuRm4uc2VsZWN0KDAsIHBhcnRzKVxuICAgIGNvbnN0IGlzV2lsZGNhcmQgPSBuZXcgY2RrLkNmbkNvbmRpdGlvbih0aGlzLCBgSXMke2lkfWAsIHtcbiAgICAgIGV4cHJlc3Npb246IGNkay5Gbi5jb25kaXRpb25FcXVhbHMoZmlyc3QsICcqJyksXG4gICAgfSlcbiAgICByZXR1cm4gY2RrLkZuLmNvbmRpdGlvbklmKGlzV2lsZGNhcmQubG9naWNhbElkLCBkb21haW5OYW1lLCBgKi4ke2RvbWFpbk5hbWV9YCkudG9TdHJpbmcoKVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURvbWFpbnNUb0hvc3RlZFpvbmVzKGRvbWFpbk5hbWVzOiBzdHJpbmdbXSwgem9uZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW11cbiAgICBmb3IgKGNvbnN0IGRvbWFpbk5hbWUgb2YgZG9tYWluTmFtZXMpIHtcbiAgICAgIGNvbnN0IHJlc29sdmFibGVEb21haW5OYW1lID0gIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoZG9tYWluTmFtZSlcbiAgICAgIGNvbnN0IHJlc29sdmFibGVab25lTmFtZXMgPSAhem9uZU5hbWVzLnNvbWUoKHpvbmVOYW1lKSA9PiBjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHpvbmVOYW1lKSlcbiAgICAgIGlmIChyZXNvbHZhYmxlRG9tYWluTmFtZSAmJiByZXNvbHZhYmxlWm9uZU5hbWVzICYmICF6b25lTmFtZXMuc29tZSgoem9uZU5hbWUpID0+IGRvbWFpbk5hbWUuZW5kc1dpdGgoem9uZU5hbWUpKSkge1xuICAgICAgICBlcnJvcnMucHVzaChgRG9tYWluICR7ZG9tYWluTmFtZX0gaXMgbm90IHByb3ZpZGVkIHdpdGggYXV0aG9yaXRhdGl2ZSBob3N0ZWQgem9uZWApXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -42,7 +42,7 @@
42
42
  "@aws-sdk/client-route-53": "^3.0.0",
43
43
  "@aws-sdk/client-sts": "^3.0.0",
44
44
  "@aws-sdk/types": "^3.0.0",
45
- "@types/aws-lambda": "^8.10.161",
45
+ "@types/aws-lambda": "^8.10.162",
46
46
  "@types/jest": "^29.5.14",
47
47
  "@types/node": "ts5.8",
48
48
  "@typescript-eslint/eslint-plugin": "^8",
@@ -51,7 +51,7 @@
51
51
  "aws-lambda": "^1.0.7",
52
52
  "commit-and-tag-version": "^12",
53
53
  "constructs": "10.5.1",
54
- "esbuild": "^0.28.0",
54
+ "esbuild": "^0.28.1",
55
55
  "eslint": "^9",
56
56
  "eslint-config-prettier": "^8.10.2",
57
57
  "eslint-import-resolver-typescript": "^3.10.1",
@@ -60,12 +60,12 @@
60
60
  "jest": "^29.7.0",
61
61
  "jest-junit": "^17",
62
62
  "jsii": "~5.9.0",
63
- "jsii-diff": "^1.132.0",
63
+ "jsii-diff": "^1.136.0",
64
64
  "jsii-docgen": "^10.5.0",
65
- "jsii-pacmak": "^1.132.0",
65
+ "jsii-pacmak": "^1.136.0",
66
66
  "jsii-rosetta": "~5.9.0",
67
67
  "prettier": "^2.8.8",
68
- "projen": "^0.99.70",
68
+ "projen": "^0.100.2",
69
69
  "ts-jest": "^29.4.11",
70
70
  "ts-node": "^10.9.2",
71
71
  "typescript": "5.8.3"
@@ -90,10 +90,11 @@
90
90
  },
91
91
  "main": "lib/index.js",
92
92
  "license": "Apache-2.0",
93
+ "stability": "stable",
93
94
  "publishConfig": {
94
95
  "access": "public"
95
96
  },
96
- "version": "0.1.51",
97
+ "version": "0.1.53",
97
98
  "jest": {
98
99
  "coverageProvider": "v8",
99
100
  "testMatch": [
@@ -140,14 +141,11 @@
140
141
  }
141
142
  },
142
143
  "types": "lib/index.d.ts",
143
- "stability": "stable",
144
144
  "jsii": {
145
145
  "outdir": "dist",
146
146
  "targets": {},
147
- "tsc": {
148
- "outDir": "lib",
149
- "rootDir": "src"
150
- }
147
+ "tsconfig": "tsconfig.json",
148
+ "validateTsconfig": "strict"
151
149
  },
152
150
  "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
153
151
  }