gitlab-ci-local 4.53.0 → 4.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/git-data.js CHANGED
@@ -1,36 +1,7 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.GitData = void 0;
30
- const utils_1 = require("./utils");
31
- const assert_1 = __importStar(require("assert"));
32
- const chalk_1 = __importDefault(require("chalk"));
33
- class GitData {
1
+ import { Utils } from "./utils.js";
2
+ import assert, { AssertionError } from "assert";
3
+ import chalk from "chalk";
4
+ export class GitData {
34
5
  user = {
35
6
  GITLAB_USER_LOGIN: "local",
36
7
  GITLAB_USER_EMAIL: "local@gitlab.com",
@@ -65,11 +36,11 @@ class GitData {
65
36
  }
66
37
  async initCommitData(cwd, writeStreams) {
67
38
  const promises = [];
68
- const refNamePromise = utils_1.Utils.spawn(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd);
39
+ const refNamePromise = Utils.spawn(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd);
69
40
  promises.push(refNamePromise.then(({ stdout }) => {
70
41
  this.commit.REF_NAME = stdout.trimEnd();
71
42
  }));
72
- const shaPromise = utils_1.Utils.spawn(["git", "rev-parse", "HEAD"], cwd);
43
+ const shaPromise = Utils.spawn(["git", "rev-parse", "HEAD"], cwd);
73
44
  promises.push(shaPromise.then(({ stdout }) => {
74
45
  this.commit.SHA = stdout.trimEnd();
75
46
  }));
@@ -77,30 +48,30 @@ class GitData {
77
48
  await Promise.all(promises);
78
49
  }
79
50
  catch (e) {
80
- if (e instanceof assert_1.AssertionError) {
81
- return writeStreams.stderr((0, chalk_1.default) `{yellow ${e.message}}\n`);
51
+ if (e instanceof AssertionError) {
52
+ return writeStreams.stderr(chalk `{yellow ${e.message}}\n`);
82
53
  }
83
- writeStreams.stderr((0, chalk_1.default) `{yellow Using fallback git commit data}\n`);
54
+ writeStreams.stderr(chalk `{yellow Using fallback git commit data}\n`);
84
55
  }
85
56
  }
86
57
  async initBranchData(cwd, writeStreams) {
87
58
  try {
88
- const { stdout: gitRemoteDefaultBranch } = await utils_1.Utils.spawn(["git", "symbolic-ref", "--short", "refs/remotes/origin/HEAD"], cwd);
59
+ const { stdout: gitRemoteDefaultBranch } = await Utils.spawn(["git", "symbolic-ref", "--short", "refs/remotes/origin/HEAD"], cwd);
89
60
  this.branches.default = gitRemoteDefaultBranch.replace("origin/", "");
90
61
  }
91
62
  catch (e) {
92
63
  if (e.stderr === "fatal: ref refs/remotes/origin/HEAD is not a symbolic ref") {
93
- writeStreams.stderr((0, chalk_1.default) `{yellow Unable to retrieve default remote branch, falling back to \`${this.branches.default}\`.
64
+ writeStreams.stderr(chalk `{yellow Unable to retrieve default remote branch, falling back to \`${this.branches.default}\`.
94
65
  The default remote branch can be set via \`git remote set-head origin <default_branch>\`
95
66
  }`);
96
67
  }
97
68
  else {
98
- writeStreams.stderr((0, chalk_1.default) `{yellow Unable to retrieve default remote branch, falling back to \`${this.branches.default}\`.\n}`);
69
+ writeStreams.stderr(chalk `{yellow Unable to retrieve default remote branch, falling back to \`${this.branches.default}\`.\n}`);
99
70
  }
100
71
  }
101
72
  }
102
73
  static changedFiles(defaultBranch) {
103
- return utils_1.Utils.syncSpawn(["git", "diff", "--name-only", defaultBranch]).stdout.split("\n");
74
+ return Utils.syncSpawn(["git", "diff", "--name-only", defaultBranch]).stdout.split("\n");
104
75
  }
105
76
  async initRemoteData(cwd, writeStreams) {
106
77
  try {
@@ -108,16 +79,16 @@ class GitData {
108
79
  let gitRemote;
109
80
  try {
110
81
  // NOTE: For power user that wishes to customize the remote url
111
- const res = await utils_1.Utils.spawn(["git", "remote", "get-url", "gcl-origin"], cwd);
82
+ const res = await Utils.spawn(["git", "remote", "get-url", "gcl-origin"], cwd);
112
83
  gitRemote = res.stdout;
113
84
  }
114
85
  catch {
115
- const res = await utils_1.Utils.spawn(["git", "remote", "get-url", "origin"], cwd);
86
+ const res = await Utils.spawn(["git", "remote", "get-url", "origin"], cwd);
116
87
  gitRemote = res.stdout;
117
88
  }
118
89
  if (gitRemote.startsWith("http")) {
119
- gitRemoteMatch = /(?<schema>https?):\/\/(?:(\w+):([\w-]+)@)?(?<host>[^/:]+):?(?<port>\d+)?\/(?<group>\S+)\/(?<project>\S+)\.git/.exec(gitRemote); // regexr.com/7ve8l
120
- (0, assert_1.default)(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
90
+ gitRemoteMatch = /(?<schema>https?):\/\/(?:([^:]+):([^@]+)@)?(?<host>[^/:]+):?(?<port>\d+)?\/(?<group>\S+)\/(?<project>\S+)\.git/.exec(gitRemote); // regexr.com/7ve8l
91
+ assert(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
121
92
  let port = "443";
122
93
  if (gitRemoteMatch.groups.schema === "https") {
123
94
  port = gitRemoteMatch.groups.port ?? "443";
@@ -133,7 +104,7 @@ class GitData {
133
104
  }
134
105
  else if (gitRemote.startsWith("ssh://")) {
135
106
  gitRemoteMatch = /(?<schema>ssh):\/\/(\w+)@(?<host>[^/:]+):?(?<port>\d+)?\/(?<group>\S+)\/(?<project>\S+)\.git/.exec(gitRemote); // regexr.com/7vjq4
136
- (0, assert_1.default)(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
107
+ assert(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
137
108
  this.remote.host = gitRemoteMatch.groups.host;
138
109
  this.remote.group = gitRemoteMatch.groups.group;
139
110
  this.remote.project = gitRemoteMatch.groups.project;
@@ -142,48 +113,47 @@ class GitData {
142
113
  }
143
114
  else {
144
115
  gitRemoteMatch = /(?<username>\S+)@(?<host>[^:]+):(?<group>\S+)\/(?<project>\S+)/.exec(gitRemote); // regexr.com/7vjoq
145
- (0, assert_1.default)(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
146
- const { stdout } = await utils_1.Utils.spawn(["ssh", "-G", `${gitRemoteMatch.groups.username}@${gitRemoteMatch.groups.host}`]);
116
+ assert(gitRemoteMatch?.groups != null, "git remote get-url origin didn't provide valid matches");
117
+ const { stdout } = await Utils.spawn(["ssh", "-G", `${gitRemoteMatch.groups.username}@${gitRemoteMatch.groups.host}`]);
147
118
  const port = stdout.split("\n").filter((line) => line.startsWith("port "))[0].split(" ")[1];
148
119
  this.remote.host = gitRemoteMatch.groups.host;
149
120
  this.remote.group = gitRemoteMatch.groups.group;
150
- this.remote.project = utils_1.Utils.trimSuffix(gitRemoteMatch.groups.project, ".git");
121
+ this.remote.project = Utils.trimSuffix(gitRemoteMatch.groups.project, ".git");
151
122
  this.remote.schema = "git";
152
123
  this.remote.port = port;
153
124
  }
154
125
  }
155
126
  catch (e) {
156
- if (e instanceof assert_1.AssertionError) {
157
- writeStreams.stderr((0, chalk_1.default) `{yellow ${e.message}}\n`);
127
+ if (e instanceof AssertionError) {
128
+ writeStreams.stderr(chalk `{yellow ${e.message}}\n`);
158
129
  return;
159
130
  }
160
- writeStreams.stderr((0, chalk_1.default) `{yellow Using fallback git remote data}\n`);
131
+ writeStreams.stderr(chalk `{yellow Using fallback git remote data}\n`);
161
132
  }
162
133
  }
163
134
  async initUserData(cwd, writeStreams) {
164
135
  const promises = [];
165
- const gitUsernamePromise = utils_1.Utils.spawn(["git", "config", "user.name"], cwd).then(({ stdout }) => {
136
+ const gitUsernamePromise = Utils.spawn(["git", "config", "user.name"], cwd).then(({ stdout }) => {
166
137
  this.user.GITLAB_USER_NAME = stdout.trimEnd();
167
138
  }).catch(() => {
168
- writeStreams.stderr((0, chalk_1.default) `{yellow Using fallback git user.name}\n`);
139
+ writeStreams.stderr(chalk `{yellow Using fallback git user.name}\n`);
169
140
  });
170
141
  promises.push(gitUsernamePromise);
171
- const gitEmailPromise = utils_1.Utils.spawn(["git", "config", "user.email"], cwd).then(({ stdout }) => {
142
+ const gitEmailPromise = Utils.spawn(["git", "config", "user.email"], cwd).then(({ stdout }) => {
172
143
  const email = stdout.trimEnd();
173
144
  this.user.GITLAB_USER_EMAIL = email;
174
145
  this.user.GITLAB_USER_LOGIN = email.replace(/@.*/, "");
175
146
  }).catch(() => {
176
- writeStreams.stderr((0, chalk_1.default) `{yellow Using fallback git user.email}\n`);
147
+ writeStreams.stderr(chalk `{yellow Using fallback git user.email}\n`);
177
148
  });
178
149
  promises.push(gitEmailPromise);
179
- const osUidPromise = utils_1.Utils.spawn(["id", "-u"], cwd).then(({ stdout }) => {
150
+ const osUidPromise = Utils.spawn(["id", "-u"], cwd).then(({ stdout }) => {
180
151
  this.user.GITLAB_USER_ID = stdout.trimEnd();
181
152
  }).catch(() => {
182
- writeStreams.stderr((0, chalk_1.default) `{yellow Using fallback linux user id}\n`);
153
+ writeStreams.stderr(chalk `{yellow Using fallback linux user id}\n`);
183
154
  });
184
155
  promises.push(osUidPromise);
185
156
  await Promise.all(promises);
186
157
  }
187
158
  }
188
- exports.GitData = GitData;
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUE4QjtBQUM5QixpREFBOEM7QUFFOUMsa0RBQTBCO0FBSTFCLE1BQWEsT0FBTztJQUVBLElBQUksR0FBRztRQUNuQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGNBQWMsRUFBRSxNQUFNO0tBQ3pCLENBQUM7SUFFYyxRQUFRLEdBQUc7UUFDdkIsT0FBTyxFQUFFLE1BQU07S0FDbEIsQ0FBQztJQUVjLE1BQU0sR0FBRztRQUNyQixNQUFNLEVBQUUsS0FBa0I7UUFDMUIsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0I7S0FDOUIsQ0FBQztJQUVjLE1BQU0sR0FBRztRQUNyQixRQUFRLEVBQUUsTUFBTTtRQUNoQixHQUFHLEVBQUUsMENBQTBDO1FBQy9DLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHO0tBQzFELENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxD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LE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLDBDQUEwQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sWUFBWSxHQUFHLGFBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNKO0FBdktELDBCQXVLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmV4cG9ydCB0eXBlIEdpdFNjaGVtYSA9IFwiZ2l0XCIgfCBcImh0dHBcIiB8IFwiaHR0cHNcIiB8IFwic3NoXCI7XG5cbmV4cG9ydCBjbGFzcyBHaXREYXRhIHtcblxuICAgIHB1YmxpYyByZWFkb25seSB1c2VyID0ge1xuICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogXCJsb2NhbFwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9FTUFJTDogXCJsb2NhbEBnaXRsYWIuY29tXCIsXG4gICAgICAgIEdJVExBQl9VU0VSX05BTUU6IFwiQm9iIExvY2FsXCIsXG4gICAgICAgIEdJVExBQl9VU0VSX0lEOiBcIjEwMDBcIixcbiAgICB9O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGJyYW5jaGVzID0ge1xuICAgICAgICBkZWZhdWx0OiBcIm1haW5cIixcbiAgICB9O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbW90ZSA9IHtcbiAgICAgICAgc2NoZW1hOiBcImdpdFwiIGFzIEdpdFNjaGVtYSxcbiAgICAgICAgcG9ydDogXCIyMlwiLFxuICAgICAgICBob3N0OiBcImdpdGxhYi5jb21cIixcbiAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgcHJvamVjdDogXCJmYWxsYmFjay5wcm9qZWN0XCIsXG4gICAgfTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjb21taXQgPSB7XG4gICAgICAgIFJFRl9OQU1FOiBcIm1haW5cIixcbiAgICAgICAgU0hBOiBcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgU0hPUlRfU0hBOiBcIjAwMDAwMDAwXCIsXG4gICAgICAgIFRJTUVTVEFNUDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiLlwiKVswXSArIFwiWlwiLFxuICAgIH07XG5cbiAgICBzdGF0aWMgYXN5bmMgaW5pdCAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxHaXREYXRhPiB7XG4gICAgICAgIGNvbnN0IGdpdERhdGEgPSBuZXcgR2l0RGF0YSgpO1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGdpdERhdGEuaW5pdENvbW1pdERhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRSZW1vdGVEYXRhKGN3ZCwgd3JpdGVTdHJlYW1zKSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RGF0YS5pbml0VXNlckRhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRCcmFuY2hEYXRhKGN3ZCwgd3JpdGVTdHJlYW1zKSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgcmV0dXJuIGdpdERhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0Q29tbWl0RGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgY29uc3QgcmVmTmFtZVByb21pc2UgPSBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJyZXYtcGFyc2VcIiwgXCItLWFiYnJldi1yZWZcIiwgXCJIRUFEXCJdLCBjd2QpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKHJlZk5hbWVQcm9taXNlLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdC5SRUZfTkFNRSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBzaGFQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmV2LXBhcnNlXCIsIFwiSEVBRFwiXSwgY3dkKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChzaGFQcm9taXNlLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdC5TSEEgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgJHtlLm1lc3NhZ2V9fVxcbmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCBjb21taXQgZGF0YX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdEJyYW5jaERhdGEgKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qge3N0ZG91dDogZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaH0gPSBhd2FpdCBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJzeW1ib2xpYy1yZWZcIiwgXCItLXNob3J0XCIsIFwicmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEXCJdLCBjd2QpO1xuICAgICAgICAgICAgdGhpcy5icmFuY2hlcy5kZWZhdWx0ID0gZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaC5yZXBsYWNlKFwib3JpZ2luL1wiLCBcIlwiKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBpZiAoZS5zdGRlcnIgPT09IFwiZmF0YWw6IHJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgaXMgbm90IGEgc3ltYm9saWMgcmVmXCIpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVW5hYmxlIHRvIHJldHJpZXZlIGRlZmF1bHQgcmVtb3RlIGJyYW5jaCwgZmFsbGluZyBiYWNrIHRvIFxcYCR7dGhpcy5icmFuY2hlcy5kZWZhdWx0fVxcYC5cbiAgVGhlIGRlZmF1bHQgcmVtb3RlIGJyYW5jaCBjYW4gYmUgc2V0IHZpYSBcXGBnaXQgcmVtb3RlIHNldC1oZWFkIG9yaWdpbiA8ZGVmYXVsdF9icmFuY2g+XFxgXG59YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVbmFibGUgdG8gcmV0cmlldmUgZGVmYXVsdCByZW1vdGUgYnJhbmNoLCBmYWxsaW5nIGJhY2sgdG8gXFxgJHt0aGlzLmJyYW5jaGVzLmRlZmF1bHR9XFxgLlxcbn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjaGFuZ2VkRmlsZXMgKGRlZmF1bHRCcmFuY2g6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gVXRpbHMuc3luY1NwYXduKFtcImdpdFwiLCBcImRpZmZcIiwgXCItLW5hbWUtb25seVwiLCBkZWZhdWx0QnJhbmNoXSkuc3Rkb3V0LnNwbGl0KFwiXFxuXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdFJlbW90ZURhdGEgKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGdpdFJlbW90ZU1hdGNoO1xuICAgICAgICAgICAgbGV0IGdpdFJlbW90ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogRm9yIHBvd2VyIHVzZXIgdGhhdCB3aXNoZXMgdG8gY3VzdG9taXplIHRoZSByZW1vdGUgdXJsXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmVtb3RlXCIsIFwiZ2V0LXVybFwiLCBcImdjbC1vcmlnaW5cIl0sIGN3ZCk7XG4gICAgICAgICAgICAgICAgZ2l0UmVtb3RlID0gcmVzLnN0ZG91dDtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJlbW90ZVwiLCBcImdldC11cmxcIiwgXCJvcmlnaW5cIl0sIGN3ZCk7XG4gICAgICAgICAgICAgICAgZ2l0UmVtb3RlID0gcmVzLnN0ZG91dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGdpdFJlbW90ZS5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xuICAgICAgICAgICAgICAgIGdpdFJlbW90ZU1hdGNoID0gLyg/PHNjaGVtYT5odHRwcz8pOlxcL1xcLyg/OihcXHcrKTooW1xcdy1dKylAKT8oPzxob3N0PlteLzpdKyk6Pyg/PHBvcnQ+XFxkKyk/XFwvKD88Z3JvdXA+XFxTKylcXC8oPzxwcm9qZWN0PlxcUyspXFwuZ2l0Ly5leGVjKGdpdFJlbW90ZSk7IC8vIHJlZ2V4ci5jb20vN3ZlOGxcbiAgICAgICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgZ2V0LXVybCBvcmlnaW4gZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgICAgIGxldCBwb3J0ID0gXCI0NDNcIjtcbiAgICAgICAgICAgICAgICBpZiAoZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnNjaGVtYSA9PT0gXCJodHRwc1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucG9ydCA/PyBcIjQ0M1wiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnNjaGVtYSA9PT0gXCJodHRwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wb3J0ID8/IFwiODBcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuaG9zdCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ob3N0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLmdyb3VwID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmdyb3VwO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnByb2plY3QgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucHJvamVjdDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5zY2hlbWEgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuc2NoZW1hIGFzIEdpdFNjaGVtYTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5wb3J0ID0gcG9ydDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2l0UmVtb3RlLnN0YXJ0c1dpdGgoXCJzc2g6Ly9cIikpIHtcbiAgICAgICAgICAgICAgICBnaXRSZW1vdGVNYXRjaCA9IC8oPzxzY2hlbWE+c3NoKTpcXC9cXC8oXFx3KylAKD88aG9zdD5bXi86XSspOj8oPzxwb3J0PlxcZCspP1xcLyg/PGdyb3VwPlxcUyspXFwvKD88cHJvamVjdD5cXFMrKVxcLmdpdC8uZXhlYyhnaXRSZW1vdGUpOyAvLyByZWdleHIuY29tLzd2anE0XG4gICAgICAgICAgICAgICAgYXNzZXJ0KGdpdFJlbW90ZU1hdGNoPy5ncm91cHMgIT0gbnVsbCwgXCJnaXQgcmVtb3RlIGdldC11cmwgb3JpZ2luIGRpZG4ndCBwcm92aWRlIHZhbGlkIG1hdGNoZXNcIik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5ob3N0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmhvc3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuZ3JvdXAgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuZ3JvdXA7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucHJvamVjdCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wcm9qZWN0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnNjaGVtYSA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5zY2hlbWEgYXMgR2l0U2NoZW1hO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnBvcnQgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucG9ydCA/PyBcIjIyXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdpdFJlbW90ZU1hdGNoID0gLyg/PHVzZXJuYW1lPlxcUyspQCg/PGhvc3Q+W146XSspOig/PGdyb3VwPlxcUyspXFwvKD88cHJvamVjdD5cXFMrKS8uZXhlYyhnaXRSZW1vdGUpOyAvLyByZWdleHIuY29tLzd2am9xXG4gICAgICAgICAgICAgICAgYXNzZXJ0KGdpdFJlbW90ZU1hdGNoPy5ncm91cHMgIT0gbnVsbCwgXCJnaXQgcmVtb3RlIGdldC11cmwgb3JpZ2luIGRpZG4ndCBwcm92aWRlIHZhbGlkIG1hdGNoZXNcIik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IFV0aWxzLnNwYXduKFtcInNzaFwiLCBcIi1HXCIsIGAke2dpdFJlbW90ZU1hdGNoLmdyb3Vwcy51c2VybmFtZX1AJHtnaXRSZW1vdGVNYXRjaC5ncm91cHMuaG9zdH1gXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9ydCA9IHN0ZG91dC5zcGxpdChcIlxcblwiKS5maWx0ZXIoKGxpbmUpID0+IGxpbmUuc3RhcnRzV2l0aChcInBvcnQgXCIpKVswXS5zcGxpdChcIiBcIilbMV07XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuaG9zdCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ob3N0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLmdyb3VwID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmdyb3VwO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnByb2plY3QgPSBVdGlscy50cmltU3VmZml4KGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wcm9qZWN0LCBcIi5naXRcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuc2NoZW1hID0gXCJnaXRcIjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5wb3J0ID0gcG9ydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyAke2UubWVzc2FnZX19XFxuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCByZW1vdGUgZGF0YX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGluaXRVc2VyRGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgY29uc3QgZ2l0VXNlcm5hbWVQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwiY29uZmlnXCIsIFwidXNlci5uYW1lXCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfTkFNRSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5uYW1lfVxcbmApO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXRVc2VybmFtZVByb21pc2UpO1xuXG4gICAgICAgIGNvbnN0IGdpdEVtYWlsUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcImNvbmZpZ1wiLCBcInVzZXIuZW1haWxcIl0sIGN3ZCkudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIHRoaXMudXNlci5HSVRMQUJfVVNFUl9FTUFJTCA9IGVtYWlsO1xuICAgICAgICAgICAgdGhpcy51c2VyLkdJVExBQl9VU0VSX0xPR0lOID0gZW1haWwucmVwbGFjZSgvQC4qLywgXCJcIik7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5lbWFpbH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RW1haWxQcm9taXNlKTtcblxuICAgICAgICBjb25zdCBvc1VpZFByb21pc2UgPSBVdGlscy5zcGF3bihbXCJpZFwiLCBcIi11XCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfSUQgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgbGludXggdXNlciBpZH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2gob3NVaWRQcm9taXNlKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxufVxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sTUFBTSxFQUFFLEVBQUMsY0FBYyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTlDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUkxQixNQUFNLE9BQU8sT0FBTztJQUVBLElBQUksR0FBRztRQUNuQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGNBQWMsRUFBRSxNQUFNO0tBQ3pCLENBQUM7SUFFYyxRQUFRLEdBQUc7UUFDdkIsT0FBTyxFQUFFLE1BQU07S0FDbEIsQ0FBQztJQUVjLE1BQU0sR0FBRztRQUNyQixNQUFNLEVBQUUsS0FBa0I7UUFDMUIsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0I7S0FDOUIsQ0FBQztJQUVjLE1BQU0sR0FBRztRQUNyQixRQUFRLEVBQUUsTUFBTTtRQUNoQixHQUFHLEVBQUUsMENBQTBDO1FBQy9DLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHO0tBQzFELENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdkQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDakUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXBCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RixRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUM7WUFDRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxjQUFjLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQSxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQSwyQ0FBMkMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDakUsSUFBSSxDQUFDO1lBQ0QsTUFBTSxFQUFDLE1BQU0sRUFBRSxzQkFBc0IsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSywyREFBMkQsRUFBRSxDQUFDO2dCQUMzRSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQSx1RUFBdUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPOztFQUVuSSxDQUFDLENBQUM7WUFDUSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUEsdUVBQXVFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQztZQUNuSSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFFLGFBQXFCO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDakUsSUFBSSxDQUFDO1lBQ0QsSUFBSSxjQUFjLENBQUM7WUFDbkIsSUFBSSxTQUFTLENBQUM7WUFDZCxJQUFJLENBQUM7Z0JBQ0QsK0RBQStEO2dCQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0UsU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDM0IsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0UsU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDM0IsQ0FBQztZQUVELElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMvQixjQUFjLEdBQUcsZ0hBQWdILENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO2dCQUN0SyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsd0RBQXdELENBQUMsQ0FBQztnQkFFakcsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUMzQyxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO2dCQUMvQyxDQUFDO3FCQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ2pELElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFtQixDQUFDO2dCQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsY0FBYyxHQUFHLDhGQUE4RixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDcEosTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLHdEQUF3RCxDQUFDLENBQUM7Z0JBRWpHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBbUIsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1lBQzFELENBQUM7aUJBQU0sQ0FBQztnQkFDSixjQUFjLEdBQUcsZ0VBQWdFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO2dCQUN0SCxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsd0RBQXdELENBQUMsQ0FBQztnQkFFakcsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckgsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksY0FBYyxFQUFFLENBQUM7Z0JBQzlCLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7Z0JBQ3BELE9BQU87WUFDWCxDQUFDO1lBQ0QsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUEsMkNBQTJDLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUUsR0FBVyxFQUFFLFlBQTBCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUEseUNBQXlDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVsQyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUU7WUFDeEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLDBDQUEwQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUEseUNBQXlDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zLmpzXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmV4cG9ydCB0eXBlIEdpdFNjaGVtYSA9IFwiZ2l0XCIgfCBcImh0dHBcIiB8IFwiaHR0cHNcIiB8IFwic3NoXCI7XG5cbmV4cG9ydCBjbGFzcyBHaXREYXRhIHtcblxuICAgIHB1YmxpYyByZWFkb25seSB1c2VyID0ge1xuICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogXCJsb2NhbFwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9FTUFJTDogXCJsb2NhbEBnaXRsYWIuY29tXCIsXG4gICAgICAgIEdJVExBQl9VU0VSX05BTUU6IFwiQm9iIExvY2FsXCIsXG4gICAgICAgIEdJVExBQl9VU0VSX0lEOiBcIjEwMDBcIixcbiAgICB9O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGJyYW5jaGVzID0ge1xuICAgICAgICBkZWZhdWx0OiBcIm1haW5cIixcbiAgICB9O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbW90ZSA9IHtcbiAgICAgICAgc2NoZW1hOiBcImdpdFwiIGFzIEdpdFNjaGVtYSxcbiAgICAgICAgcG9ydDogXCIyMlwiLFxuICAgICAgICBob3N0OiBcImdpdGxhYi5jb21cIixcbiAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgcHJvamVjdDogXCJmYWxsYmFjay5wcm9qZWN0XCIsXG4gICAgfTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjb21taXQgPSB7XG4gICAgICAgIFJFRl9OQU1FOiBcIm1haW5cIixcbiAgICAgICAgU0hBOiBcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgU0hPUlRfU0hBOiBcIjAwMDAwMDAwXCIsXG4gICAgICAgIFRJTUVTVEFNUDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiLlwiKVswXSArIFwiWlwiLFxuICAgIH07XG5cbiAgICBzdGF0aWMgYXN5bmMgaW5pdCAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxHaXREYXRhPiB7XG4gICAgICAgIGNvbnN0IGdpdERhdGEgPSBuZXcgR2l0RGF0YSgpO1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGdpdERhdGEuaW5pdENvbW1pdERhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRSZW1vdGVEYXRhKGN3ZCwgd3JpdGVTdHJlYW1zKSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RGF0YS5pbml0VXNlckRhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRCcmFuY2hEYXRhKGN3ZCwgd3JpdGVTdHJlYW1zKSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgcmV0dXJuIGdpdERhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0Q29tbWl0RGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgY29uc3QgcmVmTmFtZVByb21pc2UgPSBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJyZXYtcGFyc2VcIiwgXCItLWFiYnJldi1yZWZcIiwgXCJIRUFEXCJdLCBjd2QpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKHJlZk5hbWVQcm9taXNlLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdC5SRUZfTkFNRSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBzaGFQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmV2LXBhcnNlXCIsIFwiSEVBRFwiXSwgY3dkKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChzaGFQcm9taXNlLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdC5TSEEgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgJHtlLm1lc3NhZ2V9fVxcbmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCBjb21taXQgZGF0YX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdEJyYW5jaERhdGEgKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qge3N0ZG91dDogZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaH0gPSBhd2FpdCBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJzeW1ib2xpYy1yZWZcIiwgXCItLXNob3J0XCIsIFwicmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEXCJdLCBjd2QpO1xuICAgICAgICAgICAgdGhpcy5icmFuY2hlcy5kZWZhdWx0ID0gZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaC5yZXBsYWNlKFwib3JpZ2luL1wiLCBcIlwiKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBpZiAoZS5zdGRlcnIgPT09IFwiZmF0YWw6IHJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgaXMgbm90IGEgc3ltYm9saWMgcmVmXCIpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVW5hYmxlIHRvIHJldHJpZXZlIGRlZmF1bHQgcmVtb3RlIGJyYW5jaCwgZmFsbGluZyBiYWNrIHRvIFxcYCR7dGhpcy5icmFuY2hlcy5kZWZhdWx0fVxcYC5cbiAgVGhlIGRlZmF1bHQgcmVtb3RlIGJyYW5jaCBjYW4gYmUgc2V0IHZpYSBcXGBnaXQgcmVtb3RlIHNldC1oZWFkIG9yaWdpbiA8ZGVmYXVsdF9icmFuY2g+XFxgXG59YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVbmFibGUgdG8gcmV0cmlldmUgZGVmYXVsdCByZW1vdGUgYnJhbmNoLCBmYWxsaW5nIGJhY2sgdG8gXFxgJHt0aGlzLmJyYW5jaGVzLmRlZmF1bHR9XFxgLlxcbn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjaGFuZ2VkRmlsZXMgKGRlZmF1bHRCcmFuY2g6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gVXRpbHMuc3luY1NwYXduKFtcImdpdFwiLCBcImRpZmZcIiwgXCItLW5hbWUtb25seVwiLCBkZWZhdWx0QnJhbmNoXSkuc3Rkb3V0LnNwbGl0KFwiXFxuXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdFJlbW90ZURhdGEgKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGdpdFJlbW90ZU1hdGNoO1xuICAgICAgICAgICAgbGV0IGdpdFJlbW90ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogRm9yIHBvd2VyIHVzZXIgdGhhdCB3aXNoZXMgdG8gY3VzdG9taXplIHRoZSByZW1vdGUgdXJsXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmVtb3RlXCIsIFwiZ2V0LXVybFwiLCBcImdjbC1vcmlnaW5cIl0sIGN3ZCk7XG4gICAgICAgICAgICAgICAgZ2l0UmVtb3RlID0gcmVzLnN0ZG91dDtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJlbW90ZVwiLCBcImdldC11cmxcIiwgXCJvcmlnaW5cIl0sIGN3ZCk7XG4gICAgICAgICAgICAgICAgZ2l0UmVtb3RlID0gcmVzLnN0ZG91dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGdpdFJlbW90ZS5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xuICAgICAgICAgICAgICAgIGdpdFJlbW90ZU1hdGNoID0gLyg/PHNjaGVtYT5odHRwcz8pOlxcL1xcLyg/OihbXjpdKyk6KFteQF0rKUApPyg/PGhvc3Q+W14vOl0rKTo/KD88cG9ydD5cXGQrKT9cXC8oPzxncm91cD5cXFMrKVxcLyg/PHByb2plY3Q+XFxTKylcXC5naXQvLmV4ZWMoZ2l0UmVtb3RlKTsgLy8gcmVnZXhyLmNvbS83dmU4bFxuICAgICAgICAgICAgICAgIGFzc2VydChnaXRSZW1vdGVNYXRjaD8uZ3JvdXBzICE9IG51bGwsIFwiZ2l0IHJlbW90ZSBnZXQtdXJsIG9yaWdpbiBkaWRuJ3QgcHJvdmlkZSB2YWxpZCBtYXRjaGVzXCIpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHBvcnQgPSBcIjQ0M1wiO1xuICAgICAgICAgICAgICAgIGlmIChnaXRSZW1vdGVNYXRjaC5ncm91cHMuc2NoZW1hID09PSBcImh0dHBzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wb3J0ID8/IFwiNDQzXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnaXRSZW1vdGVNYXRjaC5ncm91cHMuc2NoZW1hID09PSBcImh0dHBcIikge1xuICAgICAgICAgICAgICAgICAgICBwb3J0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnBvcnQgPz8gXCI4MFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5ob3N0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmhvc3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuZ3JvdXAgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuZ3JvdXA7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucHJvamVjdCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wcm9qZWN0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnNjaGVtYSA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5zY2hlbWEgYXMgR2l0U2NoZW1hO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnBvcnQgPSBwb3J0O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChnaXRSZW1vdGUuc3RhcnRzV2l0aChcInNzaDovL1wiKSkge1xuICAgICAgICAgICAgICAgIGdpdFJlbW90ZU1hdGNoID0gLyg/PHNjaGVtYT5zc2gpOlxcL1xcLyhcXHcrKUAoPzxob3N0PlteLzpdKyk6Pyg/PHBvcnQ+XFxkKyk/XFwvKD88Z3JvdXA+XFxTKylcXC8oPzxwcm9qZWN0PlxcUyspXFwuZ2l0Ly5leGVjKGdpdFJlbW90ZSk7IC8vIHJlZ2V4ci5jb20vN3ZqcTRcbiAgICAgICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgZ2V0LXVybCBvcmlnaW4gZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLmhvc3QgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuaG9zdDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5ncm91cCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ncm91cDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5wcm9qZWN0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnByb2plY3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuc2NoZW1hID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnNjaGVtYSBhcyBHaXRTY2hlbWE7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucG9ydCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wb3J0ID8/IFwiMjJcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2l0UmVtb3RlTWF0Y2ggPSAvKD88dXNlcm5hbWU+XFxTKylAKD88aG9zdD5bXjpdKyk6KD88Z3JvdXA+XFxTKylcXC8oPzxwcm9qZWN0PlxcUyspLy5leGVjKGdpdFJlbW90ZSk7IC8vIHJlZ2V4ci5jb20vN3Zqb3FcbiAgICAgICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgZ2V0LXVybCBvcmlnaW4gZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgVXRpbHMuc3Bhd24oW1wic3NoXCIsIFwiLUdcIiwgYCR7Z2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnVzZXJuYW1lfUAke2dpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ob3N0fWBdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3J0ID0gc3Rkb3V0LnNwbGl0KFwiXFxuXCIpLmZpbHRlcigobGluZSkgPT4gbGluZS5zdGFydHNXaXRoKFwicG9ydCBcIikpWzBdLnNwbGl0KFwiIFwiKVsxXTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5ob3N0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmhvc3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUuZ3JvdXAgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuZ3JvdXA7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucHJvamVjdCA9IFV0aWxzLnRyaW1TdWZmaXgoZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnByb2plY3QsIFwiLmdpdFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5zY2hlbWEgPSBcImdpdFwiO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnBvcnQgPSBwb3J0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93ICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IHJlbW90ZSBkYXRhfVxcbmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdFVzZXJEYXRhIChjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBjb25zdCBnaXRVc2VybmFtZVByb21pc2UgPSBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJjb25maWdcIiwgXCJ1c2VyLm5hbWVcIl0sIGN3ZCkudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlci5HSVRMQUJfVVNFUl9OQU1FID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCB1c2VyLm5hbWV9XFxuYCk7XG4gICAgICAgIH0pO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGdpdFVzZXJuYW1lUHJvbWlzZSk7XG5cbiAgICAgICAgY29uc3QgZ2l0RW1haWxQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwiY29uZmlnXCIsIFwidXNlci5lbWFpbFwiXSwgY3dkKS50aGVuKCh7c3Rkb3V0fSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICAgICAgdGhpcy51c2VyLkdJVExBQl9VU0VSX0VNQUlMID0gZW1haWw7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfTE9HSU4gPSBlbWFpbC5yZXBsYWNlKC9ALiovLCBcIlwiKTtcbiAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCB1c2VyLmVtYWlsfVxcbmApO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXRFbWFpbFByb21pc2UpO1xuXG4gICAgICAgIGNvbnN0IG9zVWlkUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImlkXCIsIFwiLXVcIl0sIGN3ZCkudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlci5HSVRMQUJfVVNFUl9JRCA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBsaW51eCB1c2VyIGlkfVxcbmApO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChvc1VpZFByb21pc2UpO1xuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICB9XG59XG4iXX0=
@@ -1,27 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GitlabRunnerCPUsPresetValue = exports.GitlabRunnerMemoryPresetValue = exports.GitlabRunnerPresetValues = exports.GitlabRunnerPreset = void 0;
4
- var GitlabRunnerPreset;
1
+ export var GitlabRunnerPreset;
5
2
  (function (GitlabRunnerPreset) {
6
3
  GitlabRunnerPreset["SMALL"] = "saas-linux-small";
7
4
  GitlabRunnerPreset["MEDIUM"] = "saas-linux-medium";
8
5
  GitlabRunnerPreset["LARGE"] = "saas-linux-large";
9
6
  GitlabRunnerPreset["XLARGE"] = "saas-linux-xlarge";
10
7
  GitlabRunnerPreset["TWO_XLARGE"] = "saas-linux-2xlarge";
11
- })(GitlabRunnerPreset || (exports.GitlabRunnerPreset = GitlabRunnerPreset = {}));
12
- exports.GitlabRunnerPresetValues = Object.values(GitlabRunnerPreset);
13
- exports.GitlabRunnerMemoryPresetValue = {
8
+ })(GitlabRunnerPreset || (GitlabRunnerPreset = {}));
9
+ export const GitlabRunnerPresetValues = Object.values(GitlabRunnerPreset);
10
+ export const GitlabRunnerMemoryPresetValue = {
14
11
  [GitlabRunnerPreset.SMALL]: 8 * 1024,
15
12
  [GitlabRunnerPreset.MEDIUM]: 16 * 1024,
16
13
  [GitlabRunnerPreset.LARGE]: 32 * 1024,
17
14
  [GitlabRunnerPreset.XLARGE]: 64 * 1024,
18
15
  [GitlabRunnerPreset.TWO_XLARGE]: 128 * 1024,
19
16
  };
20
- exports.GitlabRunnerCPUsPresetValue = {
17
+ export const GitlabRunnerCPUsPresetValue = {
21
18
  [GitlabRunnerPreset.SMALL]: 2,
22
19
  [GitlabRunnerPreset.MEDIUM]: 4,
23
20
  [GitlabRunnerPreset.LARGE]: 8,
24
21
  [GitlabRunnerPreset.XLARGE]: 16,
25
22
  [GitlabRunnerPreset.TWO_XLARGE]: 32,
26
23
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLXByZXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdpdGxhYi1wcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxrQkFNWDtBQU5ELFdBQVksa0JBQWtCO0lBQzFCLGdEQUEwQixDQUFBO0lBQzFCLGtEQUE0QixDQUFBO0lBQzVCLGdEQUEwQixDQUFBO0lBQzFCLGtEQUE0QixDQUFBO0lBQzVCLHVEQUFpQyxDQUFBO0FBQ3JDLENBQUMsRUFOVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQU03QjtBQUVZLFFBQUEsd0JBQXdCLEdBQWEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZFLFFBQUEsNkJBQTZCLEdBQTJCO0lBQ2pFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUk7SUFDcEMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSTtJQUN0QyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ3JDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDdEMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSTtDQUM5QyxDQUFDO0FBRVcsUUFBQSwyQkFBMkIsR0FBMkI7SUFDL0QsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUM5QixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0lBQy9CLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRTtDQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gR2l0bGFiUnVubmVyUHJlc2V0IHtcbiAgICBTTUFMTCA9IFwic2Fhcy1saW51eC1zbWFsbFwiLFxuICAgIE1FRElVTSA9IFwic2Fhcy1saW51eC1tZWRpdW1cIixcbiAgICBMQVJHRSA9IFwic2Fhcy1saW51eC1sYXJnZVwiLFxuICAgIFhMQVJHRSA9IFwic2Fhcy1saW51eC14bGFyZ2VcIixcbiAgICBUV09fWExBUkdFID0gXCJzYWFzLWxpbnV4LTJ4bGFyZ2VcIixcbn1cblxuZXhwb3J0IGNvbnN0IEdpdGxhYlJ1bm5lclByZXNldFZhbHVlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKEdpdGxhYlJ1bm5lclByZXNldCk7XG5cbmV4cG9ydCBjb25zdCBHaXRsYWJSdW5uZXJNZW1vcnlQcmVzZXRWYWx1ZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlNNQUxMXTogOCAqIDEwMjQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5NRURJVU1dOiAxNiAqIDEwMjQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5MQVJHRV06IDMyICogMTAyNCxcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlhMQVJHRV06IDY0ICogMTAyNCxcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlRXT19YTEFSR0VdOiAxMjggKiAxMDI0LFxufTtcblxuZXhwb3J0IGNvbnN0IEdpdGxhYlJ1bm5lckNQVXNQcmVzZXRWYWx1ZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlNNQUxMXTogMixcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0Lk1FRElVTV06IDQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5MQVJHRV06IDgsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5YTEFSR0VdOiAxNixcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlRXT19YTEFSR0VdOiAzMixcbn07XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLXByZXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdpdGxhYi1wcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUMxQixnREFBMEIsQ0FBQTtJQUMxQixrREFBNEIsQ0FBQTtJQUM1QixnREFBMEIsQ0FBQTtJQUMxQixrREFBNEIsQ0FBQTtJQUM1Qix1REFBaUMsQ0FBQTtBQUNyQyxDQUFDLEVBTlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQU03QjtBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFhLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUVwRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBMkI7SUFDakUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSTtJQUNwQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJO0lBQ3RDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDckMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSTtJQUN0QyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJO0NBQzlDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBMkI7SUFDL0QsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUM5QixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0lBQy9CLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRTtDQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gR2l0bGFiUnVubmVyUHJlc2V0IHtcbiAgICBTTUFMTCA9IFwic2Fhcy1saW51eC1zbWFsbFwiLFxuICAgIE1FRElVTSA9IFwic2Fhcy1saW51eC1tZWRpdW1cIixcbiAgICBMQVJHRSA9IFwic2Fhcy1saW51eC1sYXJnZVwiLFxuICAgIFhMQVJHRSA9IFwic2Fhcy1saW51eC14bGFyZ2VcIixcbiAgICBUV09fWExBUkdFID0gXCJzYWFzLWxpbnV4LTJ4bGFyZ2VcIixcbn1cblxuZXhwb3J0IGNvbnN0IEdpdGxhYlJ1bm5lclByZXNldFZhbHVlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKEdpdGxhYlJ1bm5lclByZXNldCk7XG5cbmV4cG9ydCBjb25zdCBHaXRsYWJSdW5uZXJNZW1vcnlQcmVzZXRWYWx1ZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlNNQUxMXTogOCAqIDEwMjQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5NRURJVU1dOiAxNiAqIDEwMjQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5MQVJHRV06IDMyICogMTAyNCxcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlhMQVJHRV06IDY0ICogMTAyNCxcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlRXT19YTEFSR0VdOiAxMjggKiAxMDI0LFxufTtcblxuZXhwb3J0IGNvbnN0IEdpdGxhYlJ1bm5lckNQVXNQcmVzZXRWYWx1ZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlNNQUxMXTogMixcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0Lk1FRElVTV06IDQsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5MQVJHRV06IDgsXG4gICAgW0dpdGxhYlJ1bm5lclByZXNldC5YTEFSR0VdOiAxNixcbiAgICBbR2l0bGFiUnVubmVyUHJlc2V0LlRXT19YTEFSR0VdOiAzMixcbn07XG4iXX0=
package/src/handler.js CHANGED
@@ -1,45 +1,16 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.handler = handler;
30
- const yaml = __importStar(require("js-yaml"));
31
- const chalk_1 = __importDefault(require("chalk"));
32
- const path_1 = __importDefault(require("path"));
33
- const fs = __importStar(require("fs-extra"));
34
- const yargs = __importStar(require("yargs"));
35
- const commander_1 = require("./commander");
36
- const parser_1 = require("./parser");
37
- const state = __importStar(require("./state"));
38
- const pretty_hrtime_1 = __importDefault(require("pretty-hrtime"));
39
- const job_1 = require("./job");
40
- const utils_1 = require("./utils");
41
- const argv_1 = require("./argv");
42
- const assert_1 = __importDefault(require("assert"));
1
+ import * as yaml from "js-yaml";
2
+ import chalk from "chalk";
3
+ import path from "path";
4
+ import fs from "fs-extra";
5
+ import yargs from "yargs";
6
+ import { Commander } from "./commander.js";
7
+ import { Parser } from "./parser.js";
8
+ import * as state from "./state.js";
9
+ import prettyHrtime from "pretty-hrtime";
10
+ import { cleanupJobResources } from "./job.js";
11
+ import { Utils } from "./utils.js";
12
+ import { Argv } from "./argv.js";
13
+ import assert from "assert";
43
14
  const generateGitIgnore = (cwd, stateDir) => {
44
15
  const gitIgnoreFilePath = `${cwd}/${stateDir}/.gitignore`;
45
16
  const gitIgnoreContent = "*\n!.gitignore\n";
@@ -47,24 +18,24 @@ const generateGitIgnore = (cwd, stateDir) => {
47
18
  fs.outputFileSync(gitIgnoreFilePath, gitIgnoreContent);
48
19
  }
49
20
  };
50
- async function handler(args, writeStreams, jobs = []) {
51
- const argv = await argv_1.Argv.build(args, writeStreams);
21
+ export async function handler(args, writeStreams, jobs = []) {
22
+ const argv = await Argv.build(args, writeStreams);
52
23
  const cwd = argv.cwd;
53
24
  const stateDir = argv.stateDir;
54
25
  const file = argv.file;
55
26
  let parser = null;
56
27
  if (argv.completion) {
57
- yargs.showCompletionScript();
28
+ yargs(process.argv.slice(2)).showCompletionScript();
58
29
  return [];
59
30
  }
60
- (0, assert_1.default)(fs.existsSync(`${cwd}/${file}`), `${path_1.default.resolve(cwd)}/${file} could not be found`);
31
+ assert(fs.existsSync(`${cwd}/${file}`), `${path.resolve(cwd)}/${file} could not be found`);
61
32
  if (argv.fetchIncludes) {
62
- await parser_1.Parser.create(argv, writeStreams, 0, jobs);
33
+ await Parser.create(argv, writeStreams, 0, jobs);
63
34
  return [];
64
35
  }
65
36
  if (argv.preview) {
66
37
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
67
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs, false);
38
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs, false);
68
39
  const gitlabData = parser.gitlabData;
69
40
  for (const jobName of Object.keys(gitlabData)) {
70
41
  if (jobName === "stages") {
@@ -79,21 +50,21 @@ async function handler(args, writeStreams, jobs = []) {
79
50
  }
80
51
  else if (argv.list || argv.listAll) {
81
52
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
82
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
83
- commander_1.Commander.runList(parser, writeStreams, argv.listAll);
53
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
54
+ Commander.runList(parser, writeStreams, argv.listAll);
84
55
  }
85
56
  else if (argv.listJson) {
86
57
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
87
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
88
- commander_1.Commander.runJson(parser, writeStreams);
58
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
59
+ Commander.runJson(parser, writeStreams);
89
60
  }
90
61
  else if (argv.listCsv || argv.listCsvAll) {
91
62
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
92
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
93
- commander_1.Commander.runCsv(parser, writeStreams, argv.listCsvAll);
63
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
64
+ Commander.runCsv(parser, writeStreams, argv.listCsvAll);
94
65
  }
95
66
  else if (argv.job.length > 0) {
96
- (0, assert_1.default)(argv.stage === null, "You cannot use --stage when starting individual jobs");
67
+ assert(argv.stage === null, "You cannot use --stage when starting individual jobs");
97
68
  generateGitIgnore(cwd, stateDir);
98
69
  const time = process.hrtime();
99
70
  if (argv.needs || argv.onlyNeeds) {
@@ -101,21 +72,21 @@ async function handler(args, writeStreams, jobs = []) {
101
72
  await state.incrementPipelineIid(cwd, stateDir);
102
73
  }
103
74
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
104
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
105
- await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
106
- await commander_1.Commander.runJobs(argv, parser, writeStreams);
75
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
76
+ await Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
77
+ await Commander.runJobs(argv, parser, writeStreams);
107
78
  if (argv.needs || argv.onlyNeeds) {
108
- writeStreams.stderr((0, chalk_1.default) `{grey pipeline finished} in {grey ${(0, pretty_hrtime_1.default)(process.hrtime(time))}}\n`);
79
+ writeStreams.stderr(chalk `{grey pipeline finished} in {grey ${prettyHrtime(process.hrtime(time))}}\n`);
109
80
  }
110
81
  }
111
82
  else if (argv.stage) {
112
83
  generateGitIgnore(cwd, stateDir);
113
84
  const time = process.hrtime();
114
85
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
115
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
116
- await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
117
- await commander_1.Commander.runJobsInStage(argv, parser, writeStreams);
118
- writeStreams.stderr((0, chalk_1.default) `{grey pipeline finished} in {grey ${(0, pretty_hrtime_1.default)(process.hrtime(time))}}\n`);
86
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
87
+ await Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
88
+ await Commander.runJobsInStage(argv, parser, writeStreams);
89
+ writeStreams.stderr(chalk `{grey pipeline finished} in {grey ${prettyHrtime(process.hrtime(time))}}\n`);
119
90
  }
120
91
  else {
121
92
  generateGitIgnore(cwd, stateDir);
@@ -123,12 +94,12 @@ async function handler(args, writeStreams, jobs = []) {
123
94
  await fs.remove(`${cwd}/${stateDir}/artifacts`);
124
95
  await state.incrementPipelineIid(cwd, stateDir);
125
96
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
126
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
127
- await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
128
- await commander_1.Commander.runPipeline(argv, parser, writeStreams);
129
- writeStreams.stderr((0, chalk_1.default) `{grey pipeline finished} in {grey ${(0, pretty_hrtime_1.default)(process.hrtime(time))}}\n`);
97
+ parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
98
+ await Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
99
+ await Commander.runPipeline(argv, parser, writeStreams);
100
+ writeStreams.stderr(chalk `{grey pipeline finished} in {grey ${prettyHrtime(process.hrtime(time))}}\n`);
130
101
  }
131
102
  writeStreams.flush();
132
- return (0, job_1.cleanupJobResources)(jobs);
103
+ return cleanupJobResources(jobs);
133
104
  }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSwwQkFrRkM7QUF6R0QsOENBQWdDO0FBQ2hDLGtEQUEwQjtBQUMxQixnREFBd0I7QUFDeEIsNkNBQStCO0FBQy9CLDZDQUErQjtBQUMvQiwyQ0FBc0M7QUFDdEMscUNBQWdDO0FBQ2hDLCtDQUFpQztBQUNqQyxrRUFBeUM7QUFFekMsK0JBQStDO0FBQy9DLG1DQUE4QjtBQUM5QixpQ0FBNEI7QUFDNUIsb0RBQTRCO0FBRTVCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO0lBQ3hELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxHQUFHLElBQUksUUFBUSxhQUFhLENBQUM7SUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztJQUM1QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDcEMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNELENBQUM7QUFDTCxDQUFDLENBQUM7QUFFSyxLQUFLLFVBQVUsT0FBTyxDQUFFLElBQVMsRUFBRSxZQUEwQixFQUFFLE9BQWMsRUFBRTtJQUNsRixNQUFNLElBQUksR0FBRyxNQUFNLFdBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLElBQUksTUFBTSxHQUFrQixJQUFJLENBQUM7SUFFakMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFF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LE1BQU0sR0FBRyxNQUFNLGVBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxhQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLHFCQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSxxQ0FBcUMsSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVyQixPQUFPLElBQUEseUJBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhbWwgZnJvbSBcImpzLXlhbWxcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHtDb21tYW5kZXJ9IGZyb20gXCIuL2NvbW1hbmRlclwiO1xuaW1wb3J0IHtQYXJzZXJ9IGZyb20gXCIuL3BhcnNlclwiO1xuaW1wb3J0ICogYXMgc3RhdGUgZnJvbSBcIi4vc3RhdGVcIjtcbmltcG9ydCBwcmV0dHlIcnRpbWUgZnJvbSBcInByZXR0eS1ocnRpbWVcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge2NsZWFudXBKb2JSZXNvdXJjZXMsIEpvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuY29uc3QgZ2VuZXJhdGVHaXRJZ25vcmUgPSAoY3dkOiBzdHJpbmcsIHN0YXRlRGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBnaXRJZ25vcmVGaWxlUGF0aCA9IGAke2N3ZH0vJHtzdGF0ZURpcn0vLmdpdGlnbm9yZWA7XG4gICAgY29uc3QgZ2l0SWdub3JlQ29udGVudCA9IFwiKlxcbiEuZ2l0aWdub3JlXFxuXCI7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdElnbm9yZUZpbGVQYXRoKSkge1xuICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhnaXRJZ25vcmVGaWxlUGF0aCwgZ2l0SWdub3JlQ29udGVudCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIgKGFyZ3M6IGFueSwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMsIGpvYnM6IEpvYltdID0gW10pIHtcbiAgICBjb25zdCBhcmd2ID0gYXdhaXQgQXJndi5idWlsZChhcmdzLCB3cml0ZVN0cmVhbXMpO1xuICAgIGNvbnN0IGN3ZCA9IGFyZ3YuY3dkO1xuICAgIGNvbnN0IHN0YXRlRGlyID0gYXJndi5zdGF0ZURpcjtcbiAgICBjb25zdCBmaWxlID0gYXJndi5maWxlO1xuICAgIGxldCBwYXJzZXI6IFBhcnNlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbikge1xuICAgICAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke3BhdGgucmVzb2x2ZShjd2QpfS8ke2ZpbGV9IGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuXG4gICAgaWYgKGFyZ3YuZmV0Y2hJbmNsdWRlcykge1xuICAgICAgICBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgMCwgam9icyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5wcmV2aWV3KSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icywgZmFsc2UpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IFtcImluY2x1ZGVcIiwgXCJhZnRlcl9zY3JpcHRcIiwgXCJiZWZvcmVfc2NyaXB0XCIsIFwiZGVmYXVsdFwiXS5pbmNsdWRlcyhqb2JOYW1lKSkge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBzaW5jZSB0aGVzZSBhcmUgcmVkdW5kYW50IGluZm8gd2hpY2ggYXJlIGFscmVhZHkgXCJleHRlbmRlZFwiIGluIHRoZSBqb2JzXG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09PSBudWxsLCBcIllvdSBjYW5ub3QgdXNlIC0tc3RhZ2Ugd2hlbiBzdGFydGluZyBpbmRpdmlkdWFsIGpvYnNcIik7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJlbW92ZShgJHtjd2R9LyR7c3RhdGVEaXJ9L2FydGlmYWN0c2ApO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBzdGF0ZURpciwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuSm9icyhhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIGlmIChhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHtncmV5IHBpcGVsaW5lIGZpbmlzaGVkfSBpbiB7Z3JleSAke3ByZXR0eUhydGltZShwcm9jZXNzLmhydGltZSh0aW1lKSl9fVxcbmApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmd2LnN0YWdlKSB7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBzdGF0ZURpciwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuSm9ic0luU3RhZ2UoYXJndiwgcGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHtncmV5IHBpcGVsaW5lIGZpbmlzaGVkfSBpbiB7Z3JleSAke3ByZXR0eUhydGltZShwcm9jZXNzLmhydGltZSh0aW1lKSl9fVxcbmApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgIGF3YWl0IHN0YXRlLmluY3JlbWVudFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5QaXBlbGluZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfVxuICAgIHdyaXRlU3RyZWFtcy5mbHVzaCgpO1xuXG4gICAgcmV0dXJuIGNsZWFudXBKb2JSZXNvdXJjZXMoam9icyk7XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQU0sTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCLEVBQUUs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LENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksUUFBUSxZQUFZLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEQsTUFBTSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUEscUNBQXFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7Q29tbWFuZGVyfSBmcm9tIFwiLi9jb21tYW5kZXIuanNcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXIuanNcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlLmpzXCI7XG5pbXBvcnQgcHJldHR5SHJ0aW1lIGZyb20gXCJwcmV0dHktaHJ0aW1lXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtcy5qc1wiO1xuaW1wb3J0IHtjbGVhbnVwSm9iUmVzb3VyY2VzLCBKb2J9IGZyb20gXCIuL2pvYi5qc1wiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndi5qc1wiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmNvbnN0IGdlbmVyYXRlR2l0SWdub3JlID0gKGN3ZDogc3RyaW5nLCBzdGF0ZURpcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZ2l0SWdub3JlRmlsZVBhdGggPSBgJHtjd2R9LyR7c3RhdGVEaXJ9Ly5naXRpZ25vcmVgO1xuICAgIGNvbnN0IGdpdElnbm9yZUNvbnRlbnQgPSBcIipcXG4hLmdpdGlnbm9yZVxcblwiO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhnaXRJZ25vcmVGaWxlUGF0aCkpIHtcbiAgICAgICAgZnMub3V0cHV0RmlsZVN5bmMoZ2l0SWdub3JlRmlsZVBhdGgsIGdpdElnbm9yZUNvbnRlbnQpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyIChhcmdzOiBhbnksIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBqb2JzOiBKb2JbXSA9IFtdKSB7XG4gICAgY29uc3QgYXJndiA9IGF3YWl0IEFyZ3YuYnVpbGQoYXJncywgd3JpdGVTdHJlYW1zKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICBjb25zdCBzdGF0ZURpciA9IGFyZ3Yuc3RhdGVEaXI7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3YuZmlsZTtcbiAgICBsZXQgcGFyc2VyOiBQYXJzZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChhcmd2LmNvbXBsZXRpb24pIHtcbiAgICAgICAgeWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKS5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke3BhdGgucmVzb2x2ZShjd2QpfS8ke2ZpbGV9IGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuXG4gICAgaWYgKGFyZ3YuZmV0Y2hJbmNsdWRlcykge1xuICAgICAgICBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgMCwgam9icyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5wcmV2aWV3KSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icywgZmFsc2UpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IFtcImluY2x1ZGVcIiwgXCJhZnRlcl9zY3JpcHRcIiwgXCJiZWZvcmVfc2NyaXB0XCIsIFwiZGVmYXVsdFwiXS5pbmNsdWRlcyhqb2JOYW1lKSkge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBzaW5jZSB0aGVzZSBhcmUgcmVkdW5kYW50IGluZm8gd2hpY2ggYXJlIGFscmVhZHkgXCJleHRlbmRlZFwiIGluIHRoZSBqb2JzXG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09PSBudWxsLCBcIllvdSBjYW5ub3QgdXNlIC0tc3RhZ2Ugd2hlbiBzdGFydGluZyBpbmRpdmlkdWFsIGpvYnNcIik7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJlbW92ZShgJHtjd2R9LyR7c3RhdGVEaXJ9L2FydGlmYWN0c2ApO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBzdGF0ZURpciwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuSm9icyhhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIGlmIChhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHtncmV5IHBpcGVsaW5lIGZpbmlzaGVkfSBpbiB7Z3JleSAke3ByZXR0eUhydGltZShwcm9jZXNzLmhydGltZSh0aW1lKSl9fVxcbmApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmd2LnN0YWdlKSB7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBzdGF0ZURpciwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuSm9ic0luU3RhZ2UoYXJndiwgcGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHtncmV5IHBpcGVsaW5lIGZpbmlzaGVkfSBpbiB7Z3JleSAke3ByZXR0eUhydGltZShwcm9jZXNzLmhydGltZSh0aW1lKSl9fVxcbmApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyYXRlR2l0SWdub3JlKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgIGF3YWl0IHN0YXRlLmluY3JlbWVudFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5QaXBlbGluZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfVxuICAgIHdyaXRlU3RyZWFtcy5mbHVzaCgpO1xuXG4gICAgcmV0dXJuIGNsZWFudXBKb2JSZXNvdXJjZXMoam9icyk7XG59XG4iXX0=