@appium/support 2.56.1 → 2.57.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/build/lib/env.d.ts +54 -0
  2. package/build/lib/env.d.ts.map +1 -0
  3. package/build/lib/fs.d.ts +221 -0
  4. package/build/lib/fs.d.ts.map +1 -0
  5. package/build/lib/fs.js +1 -1
  6. package/build/lib/image-util.d.ts +56 -0
  7. package/build/lib/image-util.d.ts.map +1 -0
  8. package/build/lib/image-util.js +2 -3
  9. package/build/lib/index.d.ts +38 -0
  10. package/build/lib/index.d.ts.map +1 -0
  11. package/build/lib/index.js +20 -14
  12. package/build/lib/log-internal.d.ts +74 -0
  13. package/build/lib/log-internal.d.ts.map +1 -0
  14. package/build/lib/log-internal.js +10 -18
  15. package/build/lib/logger.d.ts +3 -0
  16. package/build/lib/logger.d.ts.map +1 -0
  17. package/build/lib/logging.d.ts +45 -0
  18. package/build/lib/logging.d.ts.map +1 -0
  19. package/build/lib/logging.js +11 -13
  20. package/build/lib/mjpeg.d.ts +65 -0
  21. package/build/lib/mjpeg.d.ts.map +1 -0
  22. package/build/lib/mjpeg.js +11 -4
  23. package/build/lib/mkdirp.d.ts +3 -0
  24. package/build/lib/mkdirp.d.ts.map +1 -0
  25. package/build/lib/net.d.ts +95 -0
  26. package/build/lib/net.d.ts.map +1 -0
  27. package/build/lib/net.js +41 -23
  28. package/build/lib/node.d.ts +26 -0
  29. package/build/lib/node.d.ts.map +1 -0
  30. package/build/lib/node.js +4 -2
  31. package/build/lib/npm.d.ts +123 -0
  32. package/build/lib/npm.d.ts.map +1 -0
  33. package/build/lib/npm.js +18 -41
  34. package/build/lib/plist.d.ts +43 -0
  35. package/build/lib/plist.d.ts.map +1 -0
  36. package/build/lib/plist.js +1 -1
  37. package/build/lib/process.d.ts +3 -0
  38. package/build/lib/process.d.ts.map +1 -0
  39. package/build/lib/system.d.ts +7 -0
  40. package/build/lib/system.d.ts.map +1 -0
  41. package/build/lib/tempdir.d.ts +63 -0
  42. package/build/lib/tempdir.d.ts.map +1 -0
  43. package/build/lib/tempdir.js +3 -6
  44. package/build/lib/timing.d.ts +46 -0
  45. package/build/lib/timing.d.ts.map +1 -0
  46. package/build/lib/util.d.ts +183 -0
  47. package/build/lib/util.d.ts.map +1 -0
  48. package/build/lib/util.js +4 -8
  49. package/build/lib/zip.d.ts +180 -0
  50. package/build/lib/zip.d.ts.map +1 -0
  51. package/build/lib/zip.js +6 -2
  52. package/build/tsconfig.tsbuildinfo +1 -0
  53. package/lib/fs.js +9 -4
  54. package/lib/image-util.js +23 -7
  55. package/lib/index.js +2 -8
  56. package/lib/log-internal.js +31 -38
  57. package/lib/logging.js +40 -16
  58. package/lib/mjpeg.js +14 -5
  59. package/lib/net.js +116 -60
  60. package/lib/node.js +4 -4
  61. package/lib/npm.js +33 -90
  62. package/lib/plist.js +3 -1
  63. package/lib/tempdir.js +8 -7
  64. package/lib/util.js +10 -11
  65. package/lib/zip.js +24 -13
  66. package/package.json +18 -11
package/build/lib/npm.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.npm = exports.NPM = exports.LINK_LOCKFILE_RELATIVE_PATH = exports.INSTALL_LOCKFILE_RELATIVE_PATH = exports.CACHE_DIR_RELATIVE_PATH = void 0;
8
+ exports.npm = exports.NPM = exports.INSTALL_LOCKFILE_RELATIVE_PATH = exports.CACHE_DIR_RELATIVE_PATH = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -13,6 +13,8 @@ var _path = _interopRequireDefault(require("path"));
13
13
 
14
14
  var _semver = _interopRequireDefault(require("semver"));
15
15
 
16
+ var _env = require("./env");
17
+
16
18
  var _teen_process = require("teen_process");
17
19
 
18
20
  var _fs = require("./fs");
@@ -35,19 +37,11 @@ const INSTALL_LOCKFILE_RELATIVE_PATH = _path.default.join(CACHE_DIR_RELATIVE_PAT
35
37
 
36
38
  exports.INSTALL_LOCKFILE_RELATIVE_PATH = INSTALL_LOCKFILE_RELATIVE_PATH;
37
39
 
38
- const LINK_LOCKFILE_RELATIVE_PATH = _path.default.join(CACHE_DIR_RELATIVE_PATH, '.link.lock');
39
-
40
- exports.LINK_LOCKFILE_RELATIVE_PATH = LINK_LOCKFILE_RELATIVE_PATH;
41
-
42
40
  class NPM {
43
41
  _getInstallLockfilePath(cwd) {
44
42
  return _path.default.join(cwd, INSTALL_LOCKFILE_RELATIVE_PATH);
45
43
  }
46
44
 
47
- _getLinkLockfilePath(cwd) {
48
- return _path.default.join(cwd, LINK_LOCKFILE_RELATIVE_PATH);
49
- }
50
-
51
45
  async exec(cmd, args, opts, execOpts = {}) {
52
46
  let {
53
47
  cwd,
@@ -171,13 +165,23 @@ class NPM {
171
165
  async installPackage(cwd, pkgName, {
172
166
  pkgVer
173
167
  } = {}) {
174
- const dummyPkgJson = _path.default.resolve(cwd, 'package.json');
168
+ let dummyPkgJson;
169
+
170
+ const dummyPkgPath = _path.default.join(cwd, 'package.json');
175
171
 
176
- if (!(await _fs.fs.exists(dummyPkgJson))) {
177
- await _fs.fs.writeFile(dummyPkgJson, '{}');
172
+ try {
173
+ dummyPkgJson = JSON.parse(await _fs.fs.readFile(dummyPkgPath, 'utf8'));
174
+ } catch (err) {
175
+ if (err.code === 'ENOENT') {
176
+ dummyPkgJson = {};
177
+ await _fs.fs.writeFile(dummyPkgPath, JSON.stringify(dummyPkgJson, null, 2), 'utf8');
178
+ } else {
179
+ throw err;
180
+ }
178
181
  }
179
182
 
180
- const res = await this.exec('install', ['--no-save', '--global-style', '--no-package-lock', pkgVer ? `${pkgName}@${pkgVer}` : pkgName], {
183
+ const installOpts = (await (0, _env.hasAppiumDependency)(cwd)) ? ['--save-dev'] : ['--save-dev', '--save-exact', '--global-style', '--no-package-lock'];
184
+ const res = await this.exec('install', [...installOpts, pkgVer ? `${pkgName}@${pkgVer}` : pkgName], {
181
185
  cwd,
182
186
  json: true,
183
187
  lockFile: this._getInstallLockfilePath(cwd)
@@ -198,33 +202,6 @@ class NPM {
198
202
  }
199
203
  }
200
204
 
201
- async linkPackage(cwd, pkgPath) {
202
- let pkgName;
203
-
204
- try {
205
- pkgName = require(_path.default.resolve(pkgPath, 'package.json')).name;
206
- } catch {
207
- throw new Error('Could not find package.json inside the package path ' + `provided: ${pkgPath}`);
208
- }
209
-
210
- pkgPath = _path.default.resolve(process.cwd(), pkgPath);
211
- const args = ['--global-style', '--no-package-lock', pkgPath];
212
- const res = await this.exec('link', args, {
213
- cwd,
214
- lockFile: this._getLinkLockfilePath(cwd)
215
- });
216
-
217
- if (res.json && res.json.error) {
218
- throw new Error(res.json.error);
219
- }
220
-
221
- try {
222
- return require((0, _resolveFrom.default)(cwd, `${pkgName}/package.json`));
223
- } catch {
224
- throw new Error('The package was not linked correctly; its package.json ' + 'did not exist or was unreadable');
225
- }
226
- }
227
-
228
205
  async uninstallPackage(cwd, pkg) {
229
206
  await this.exec('uninstall', [pkg], {
230
207
  cwd,
@@ -237,4 +214,4 @@ class NPM {
237
214
  exports.NPM = NPM;
238
215
  const npm = new NPM();
239
216
  exports.npm = npm;
240
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9ucG0uanMiXSwibmFtZXMiOlsiQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgiLCJwYXRoIiwiam9pbiIsIklOU1RBTExfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCIsIkxJTktfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCIsIk5QTSIsIl9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoIiwiY3dkIiwiX2dldExpbmtMb2NrZmlsZVBhdGgiLCJleGVjIiwiY21kIiwiYXJncyIsIm9wdHMiLCJleGVjT3B0cyIsImpzb24iLCJsb2NrRmlsZSIsInVuc2hpZnQiLCJwdXNoIiwibnBtQ21kIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwicnVubmVyIiwiYWNxdWlyZUxvY2siLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsIl9ydW5uZXIiLCJyZXQiLCJzdGRvdXQiLCJzdGRlcnIiLCJjb2RlIiwiSlNPTiIsInBhcnNlIiwiaWduIiwiZSIsImVyciIsIkVycm9yIiwidHJpbSIsImdldExhdGVzdFZlcnNpb24iLCJwa2ciLCJsYXRlc3QiLCJnZXRMYXRlc3RTYWZlVXBncmFkZVZlcnNpb24iLCJjdXJWZXJzaW9uIiwiYWxsVmVyc2lvbnMiLCJnZXRMYXRlc3RTYWZlVXBncmFkZUZyb21WZXJzaW9ucyIsImxpc3QiLCJzYWZlVXBncmFkZVZlciIsImN1clNlbXZlciIsInNlbXZlciIsInRlc3RWZXIiLCJ0ZXN0U2VtdmVyIiwicHJlcmVsZWFzZSIsImxlbmd0aCIsImNvbXBhcmUiLCJtYWpvciIsImZvcm1hdCIsImluc3RhbGxQYWNrYWdlIiwicGtnTmFtZSIsInBrZ1ZlciIsImR1bW15UGtnSnNvbiIsInJlc29sdmUiLCJmcyIsImV4aXN0cyIsIndyaXRlRmlsZSIsInJlcyIsImVycm9yIiwicGtnSnNvblBhdGgiLCJyZXF1aXJlIiwibGlua1BhY2thZ2UiLCJwa2dQYXRoIiwibmFtZSIsInByb2Nlc3MiLCJ1bmluc3RhbGxQYWNrYWdlIiwibnBtIl0sIm1hcHBpbmdz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QUFhVyxPQUFPLENBQUMvRCxHQUFSLEVBQWIsRUFBNEI2RCxPQUE1QixDQUFWO0FBR0EsVUFBTXpELElBQUksR0FBRyxDQUNYLGdCQURXLEVBRVgsbUJBRlcsRUFHWHlELE9BSFcsQ0FBYjtBQUtBLFVBQU1MLEdBQUcsR0FBRyxNQUFNLEtBQUt0RCxJQUFMLENBQVUsTUFBVixFQUFrQkUsSUFBbEIsRUFBd0I7QUFBQ0osTUFBQUEsR0FBRDtBQUFNUSxNQUFBQSxRQUFRLEVBQUUsS0FBS1Asb0JBQUwsQ0FBMEJELEdBQTFCO0FBQWhCLEtBQXhCLENBQWxCOztBQUNBLFFBQUl3RCxHQUFHLENBQUNqRCxJQUFKLElBQVlpRCxHQUFHLENBQUNqRCxJQUFKLENBQVNrRCxLQUF6QixFQUFnQztBQUM5QixZQUFNLElBQUk3QixLQUFKLENBQVU0QixHQUFHLENBQUNqRCxJQUFKLENBQVNrRCxLQUFuQixDQUFOO0FBQ0Q7O0FBR0QsUUFBSTtBQUNGLGFBQU9FLE9BQU8sQ0FBQywwQkFBWTNELEdBQVosRUFBa0IsR0FBRWlELE9BQVEsZUFBNUIsQ0FBRCxDQUFkO0FBQ0QsS0FGRCxDQUVFLE1BQU07QUFDTixZQUFNLElBQUlyQixLQUFKLENBQVUsNERBQ0EsaUNBRFYsQ0FBTjtBQUVEO0FBQ0Y7O0FBTXFCLFFBQWhCb0MsZ0JBQWdCLENBQUVoRSxHQUFGLEVBQU8rQixHQUFQLEVBQVk7QUFDaEMsVUFBTSxLQUFLN0IsSUFBTCxDQUFVLFdBQVYsRUFBdUIsQ0FBQzZCLEdBQUQsQ0FBdkIsRUFBOEI7QUFDbEMvQixNQUFBQSxHQURrQztBQUVsQ1EsTUFBQUEsUUFBUSxFQUFFLEtBQUtULHVCQUFMLENBQTZCQyxHQUE3QjtBQUZ3QixLQUE5QixDQUFOO0FBSUQ7O0FBalBjOzs7QUFvUFYsTUFBTWlFLEdBQUcsR0FBRyxJQUFJbkUsR0FBSixFQUFaIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBmcyB9IGZyb20gJy4vZnMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgc3lzdGVtIGZyb20gJy4vc3lzdGVtJztcbmltcG9ydCByZXNvbHZlRnJvbSBmcm9tICdyZXNvbHZlLWZyb20nO1xuXG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBhbnkgQXBwaXVtIGludGVybmFsIGZpbGVzXG4gKiBYWFg6IHRoaXMgaXMgZHVwbGljYXRlZCBpbiBgYXBwaXVtL2xpYi9jb25zdGFudHMuanNgLlxuICovXG5leHBvcnQgY29uc3QgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEggPSBwYXRoLmpvaW4oXG4gICdub2RlX21vZHVsZXMnLFxuICAnLmNhY2hlJyxcbiAgJ2FwcGl1bScsXG4pO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gbG9ja2ZpbGUgdXNlZCB3aGVuIGluc3RhbGxpbmcgYW4gZXh0ZW5zaW9uIHZpYSBgYXBwaXVtYFxuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9MT0NLRklMRV9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCxcbiAgJy5pbnN0YWxsLmxvY2snLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGxvY2tmaWxlIHVzZWQgd2hlbiBsaW5raW5nIGFuIGV4dGVuc2lvbiB2aWEgYGFwcGl1bWBcbiAqL1xuZXhwb3J0IGNvbnN0IExJTktfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsXG4gICcubGluay5sb2NrJyxcbik7XG5cbi8qKlxuICogWFhYOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIHNpbmdsZXRvbiwgYnV0IGl0IGlzbid0LiAgTWF5YmUgdGhpcyBtb2R1bGUgc2hvdWxkIGp1c3QgZXhwb3J0IGZ1bmN0aW9ucz9cbiAqL1xuZXhwb3J0IGNsYXNzIE5QTSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHBhdGggdG8gXCJpbnN0YWxsXCIgbG9ja2ZpbGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKi9cbiAgX2dldEluc3RhbGxMb2NrZmlsZVBhdGggKGN3ZCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4oY3dkLCBJTlNUQUxMX0xPQ0tGSUxFX1JFTEFUSVZFX1BBVEgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgcGF0aCB0byBcImxpbmtcIiBsb2NrZmlsZVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqL1xuICBfZ2V0TGlua0xvY2tmaWxlUGF0aCAoY3dkKSB7XG4gICAgcmV0dXJuIHBhdGguam9pbihjd2QsIExJTktfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBgbnBtYCB3aXRoIGdpdmVuIGFyZ3MuXG4gICAqXG4gICAqIElmIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub256ZXJvIGNvZGUsIHRoZSBjb250ZW50cyBvZiBgU1RET1VUYCBhbmQgYFNUREVSUmAgd2lsbCBiZSBpbiB0aGVcbiAgICogYG1lc3NhZ2VgIG9mIHRoZSB7QGxpbmsgVGVlblByb2Nlc3NFeGVjRXJyb3J9IHJlamVjdGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY21kXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3NcbiAgICogQHBhcmFtIHtFeGVjT3B0c30gb3B0c1xuICAgKiBAcGFyYW0ge1RlZW5Qcm9jZXNzRXhlY09wdHN9IFtleGVjT3B0c11cbiAgICovXG4gIGFzeW5jIGV4ZWMgKGNtZCwgYXJncywgb3B0cywgZXhlY09wdHMgPSB7fSkge1xuICAgIGxldCB7IGN3ZCwganNvbiwgbG9ja0ZpbGUgfSA9IG9wdHM7XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgY3VycmVudCBvcGVyYXRpb24gaW4gY3dkXG4gICAgZXhlY09wdHMgPSB7Li4uZXhlY09wdHMsIGN3ZH07XG5cbiAgICBhcmdzLnVuc2hpZnQoY21kKTtcbiAgICBpZiAoanNvbikge1xuICAgICAgYXJncy5wdXNoKCctLWpzb24nKTtcbiAgICB9XG4gICAgY29uc3QgbnBtQ21kID0gc3lzdGVtLmlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgbGV0IHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGV4ZWMobnBtQ21kLCBhcmdzLCBleGVjT3B0cyk7XG4gICAgaWYgKGxvY2tGaWxlKSB7XG4gICAgICBjb25zdCBhY3F1aXJlTG9jayA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChsb2NrRmlsZSk7XG4gICAgICBjb25zdCBfcnVubmVyID0gcnVubmVyO1xuICAgICAgcnVubmVyID0gYXN5bmMgKCkgPT4gYXdhaXQgYWNxdWlyZUxvY2soX3J1bm5lcik7XG4gICAgfVxuXG4gICAgbGV0IHJldDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IHJ1bm5lcigpO1xuICAgICAgcmV0ID0gLyoqIEB0eXBlIHtUZWVuUHJvY2Vzc0V4ZWNSZXN1bHR9ICovKHtzdGRvdXQsIHN0ZGVyciwgY29kZX0pO1xuICAgICAgLy8gaWYgcG9zc2libGUsIHBhcnNlIE5QTSdzIGpzb24gb3V0cHV0LiBEdXJpbmcgTlBNIGluc3RhbGwgM3JkLXBhcnR5XG4gICAgICAvLyBwYWNrYWdlcyBjYW4gd3JpdGUgdG8gc3Rkb3V0LCBzbyBzb21ldGltZXMgdGhlIGpzb24gb3V0cHV0IGNhbid0IGJlXG4gICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIHBhcnNlYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0Lmpzb24gPSBKU09OLnBhcnNlKHN0ZG91dCk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3Qge3N0ZG91dCA9ICcnLCBzdGRlcnIgPSAnJywgY29kZSA9IG51bGx9ID0gLyoqIEB0eXBlIHtUZWVuUHJvY2Vzc0V4ZWNFcnJvcn0gKi8oZSk7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYG5wbSBjb21tYW5kICcke2FyZ3Muam9pbignICcpfScgZmFpbGVkIHdpdGggY29kZSAke2NvZGV9LlxcblxcblNURE9VVDpcXG4ke3N0ZG91dC50cmltKCl9XFxuXFxuU1RERVJSOlxcbiR7c3RkZXJyLnRyaW0oKX1gKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dcbiAgICovXG4gIGFzeW5jIGdldExhdGVzdFZlcnNpb24gKGN3ZCwgcGtnKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4ZWMoJ3ZpZXcnLCBbcGtnLCAnZGlzdC10YWdzJ10sIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjd2RcbiAgICB9KSkuanNvbj8ubGF0ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyVmVyc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIChjd2QsIHBrZywgY3VyVmVyc2lvbikge1xuICAgIGNvbnN0IGFsbFZlcnNpb25zID0gKGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICd2ZXJzaW9ucyddLCB7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY3dkXG4gICAgfSkpLmpzb247XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYG5wbSBsc2AsIG9wdGlvbmFsbHkgZm9yIGEgcGFydGljdWxhciBwYWNrYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGtnXVxuICAgKi9cbiAgYXN5bmMgbGlzdCAoY3dkLCBwa2cpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHBrZyA/IFtwa2ddIDogW10sIHtjd2QsIGpzb246IHRydWV9KSkuanNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGN1cnJlbnQgdmVyc2lvbiBhbmQgYSBsaXN0IG9mIGFsbCB2ZXJzaW9ucyBmb3IgYSBwYWNrYWdlLCByZXR1cm4gdGhlIHZlcnNpb24gd2hpY2ggaXNcbiAgICogdGhlIGhpZ2hlc3Qgc2FmZWx5LXVwZ3JhZGFibGUgdmVyc2lvbiAobWVhbmluZyBub3QgY3Jvc3NpbmcgYW55IG1ham9yIHJldmlzaW9uIGJvdW5kYXJpZXMsIGFuZFxuICAgKiBub3QgaW5jbHVkaW5nIGFueSBhbHBoYS9iZXRhL3JjIHZlcnNpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyVmVyc2lvbiAtIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgYSBwYWNrYWdlXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYWxsVmVyc2lvbnMgLSBhIGxpc3Qgb2YgdmVyc2lvbiBzdHJpbmdzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ3xudWxsfSAtIHRoZSBoaWdoZXN0IHNhZmVseS11cGdyYWRhYmxlIHZlcnNpb24sIG9yIG51bGwgaWYgdGhlcmUgaXNuJ3Qgb25lXG4gICAqL1xuICBnZXRMYXRlc3RTYWZlVXBncmFkZUZyb21WZXJzaW9ucyAoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpIHtcbiAgICBsZXQgc2FmZVVwZ3JhZGVWZXIgPSBudWxsO1xuICAgIGNvbnN0IGN1clNlbXZlciA9IHNlbXZlci5wYXJzZShjdXJWZXJzaW9uKTtcbiAgICBpZiAoY3VyU2VtdmVyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBjdXJyZW50IHZlcnNpb24gJyR7Y3VyVmVyc2lvbn0nYCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGVzdFZlciBvZiBhbGxWZXJzaW9ucykge1xuICAgICAgY29uc3QgdGVzdFNlbXZlciA9IHNlbXZlci5wYXJzZSh0ZXN0VmVyKTtcbiAgICAgIGlmICh0ZXN0U2VtdmVyID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlIHZlcnNpb24gdG8gdGVzdCBhZ2FpbnN0OiAnJHt0ZXN0VmVyfSdgKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB0ZXN0IHZlcnNpb24gaXMgYSBwcmVyZWxlYXNlLCBpZ25vcmUgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gaXMgbGF0ZXIgdGhhbiB0aGUgdGVzdCB2ZXJzaW9uLCBza2lwIHRoaXMgdGVzdCB2ZXJzaW9uXG4gICAgICBpZiAoY3VyU2VtdmVyLmNvbXBhcmUodGVzdFNlbXZlcikgPT09IDEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgdGVzdCB2ZXJzaW9uIGlzIG5ld2VyLCBidXQgY3Jvc3NlcyBhIG1ham9yIHJldmlzaW9uIGJvdW5kYXJ5LCBhbHNvIHNraXAgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLm1ham9yID4gY3VyU2VtdmVyLm1ham9yKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgdmVyc2lvbiBpcyBzYWZlIHRvIHVwZ3JhZGUgdG8uIEJ1dCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBvbmVzIG9mIHRoaXNcbiAgICAgIC8vIGtpbmQsIHNvIGtlZXAgaXRlcmF0aW5nIGFuZCBrZWVwaW5nIHRoZSBoaWdoZXN0XG4gICAgICBpZiAoc2FmZVVwZ3JhZGVWZXIgPT09IG51bGwgfHwgdGVzdFNlbXZlci5jb21wYXJlKHNhZmVVcGdyYWRlVmVyKSA9PT0gMSkge1xuICAgICAgICBzYWZlVXBncmFkZVZlciA9IHRlc3RTZW12ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzYWZlVXBncmFkZVZlcikge1xuICAgICAgc2FmZVVwZ3JhZGVWZXIgPSBzYWZlVXBncmFkZVZlci5mb3JtYXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNhZmVVcGdyYWRlVmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIGEgcGFja2FnZSB3LyBgbnBtYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7SW5zdGFsbFBhY2thZ2VPcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCd0eXBlLWZlc3QnKS5QYWNrYWdlSnNvbj59XG4gICAqL1xuICBhc3luYyBpbnN0YWxsUGFja2FnZSAoY3dkLCBwa2dOYW1lLCB7cGtnVmVyfSA9IHt9KSB7XG4gICAgLy8gbm90IG9ubHkgdGhpcywgdGhpcyBkaXJlY3RvcnkgbmVlZHMgYSAncGFja2FnZS5qc29uJyBpbnNpZGUgb2YgaXQsIG90aGVyd2lzZSwgaWYgYW55XG4gICAgLy8gZGlyZWN0b3J5IGluIHRoZSBmaWxlc3lzdGVtIHRyZWUgQUJPVkUgY3dkIGhhcHBlbnMgdG8gaGF2ZSBhIHBhY2thZ2UuanNvbiBvciBhIG5vZGVfbW9kdWxlc1xuICAgIC8vIGRpciBpbiBpdCwgTlBNIHdpbGwgaW5zdGFsbCB0aGUgbW9kdWxlIHVwIHRoZXJlIGluc3RlYWQgKHNpbGx5IE5QTSlcbiAgICBjb25zdCBkdW1teVBrZ0pzb24gPSBwYXRoLnJlc29sdmUoY3dkLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZHVtbXlQa2dKc29uKSkge1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGR1bW15UGtnSnNvbiwgJ3t9Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5leGVjKCdpbnN0YWxsJywgW1xuICAgICAgJy0tbm8tc2F2ZScsXG4gICAgICAnLS1nbG9iYWwtc3R5bGUnLFxuICAgICAgJy0tbm8tcGFja2FnZS1sb2NrJyxcbiAgICAgIHBrZ1ZlciA/IGAke3BrZ05hbWV9QCR7cGtnVmVyfWAgOiBwa2dOYW1lXG4gICAgXSwge1xuICAgICAgY3dkLFxuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIGxvY2tGaWxlOiB0aGlzLl9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoKGN3ZClcbiAgICB9KTtcblxuICAgIGlmIChyZXMuanNvbikge1xuICAgICAgLy8gd2UgcGFyc2VkIGEgdmFsaWQganNvbiByZXNwb25zZSwgc28gaWYgd2UgZ290IGFuIGVycm9yIGhlcmUsIHJldHVybiB0aGF0XG4gICAgICAvLyBtZXNzYWdlIHN0cmFpZ2h0YXdheVxuICAgICAgaWYgKHJlcy5qc29uLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuanNvbi5lcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm93IHJlYWQgcGFja2FnZSBkYXRhIGZyb20gdGhlIGluc3RhbGxlZCBwYWNrYWdlIHRvIHJldHVybiwgYW5kIG1ha2Ugc3VyZVxuICAgIC8vIGV2ZXJ5dGhpbmcgZ290IGluc3RhbGxlZCBvay4gUmVtZW1iZXIsIHBrZ05hbWUgbWlnaHQgZW5kIHVwIHdpdGggYSAvIGluIGl0IGR1ZSB0byBhbiBucG1cbiAgICAvLyBvcmcsIHNvIGlmIHNvLCB0aGF0IHdpbGwgZ2V0IGNvcnJlY3RseSBleHBsb2RlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzLCBieSBwYXRoLnJlc29sdmUgaGVyZVxuICAgIC8vIChldmVuIG9uIFdpbmRvd3MhKVxuICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcmVzb2x2ZUZyb20oY3dkLCBgJHtwa2dOYW1lfS9wYWNrYWdlLmpzb25gKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocGtnSnNvblBhdGgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgcGFja2FnZSB3YXMgbm90IGRvd25sb2FkZWQgY29ycmVjdGx5OyBpdHMgcGFja2FnZS5qc29uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdkaWQgbm90IGV4aXN0IG9yIHdhcyB1bnJlYWRhYmxlLiBXZSBsb29rZWQgZm9yIGl0IGF0ICcgK1xuICAgICAgICAgICAgICAgICAgICAgIHBrZ0pzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRvZG86IEkgdGhpbmsgdGhpcyBjYW4gYmUgYW4gYGluc3RhbGxgIGluc3RlYWQgb2YgYSBgbGlua2AuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1BhdGhcbiAgICovXG4gIGFzeW5jIGxpbmtQYWNrYWdlIChjd2QsIHBrZ1BhdGgpIHtcbiAgICAvLyBmcm9tIHRoZSBwYXRoIGFsb25lIHdlIGRvbid0IGtub3cgdGhlIG5wbSBwYWNrYWdlIG5hbWUsIHNvIHdlIG5lZWQgdG9cbiAgICAvLyBsb29rIGluIHBhY2thZ2UuanNvblxuICAgIGxldCBwa2dOYW1lO1xuICAgIHRyeSB7XG4gICAgICBwa2dOYW1lID0gcmVxdWlyZShwYXRoLnJlc29sdmUocGtnUGF0aCwgJ3BhY2thZ2UuanNvbicpKS5uYW1lO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBwYWNrYWdlLmpzb24gaW5zaWRlIHRoZSBwYWNrYWdlIHBhdGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgYHByb3ZpZGVkOiAke3BrZ1BhdGh9YCk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBpcyBhZGRlZCB0byBoYW5kbGUgY29tbWFuZHMgd2l0aCByZWxhdGl2ZSBwYXRoc1xuICAgIC8vIGllOiBcIm5vZGUgLiBkcml2ZXIgaW5zdGFsbCAtLXNvdXJjZT1sb2NhbCAuLi9mYWtlLWRyaXZlclwiXG4gICAgcGtnUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwa2dQYXRoKTtcblxuICAgIC8vIGNhbGwgbGluayB3aXRoIC0tbm8tcGFja2FnZS1sb2NrIHRvIGVuc3VyZSBubyBjb3JydXB0aW9uIHdoaWxlIGluc3RhbGxpbmcgbG9jYWwgcGFja2FnZXNcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgJy0tZ2xvYmFsLXN0eWxlJyxcbiAgICAgICctLW5vLXBhY2thZ2UtbG9jaycsXG4gICAgICBwa2dQYXRoXG4gICAgXTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmV4ZWMoJ2xpbmsnLCBhcmdzLCB7Y3dkLCBsb2NrRmlsZTogdGhpcy5fZ2V0TGlua0xvY2tmaWxlUGF0aChjd2QpfSk7XG4gICAgaWYgKHJlcy5qc29uICYmIHJlcy5qc29uLmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLmpzb24uZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIG5vdyBlbnN1cmUgaXQgd2FzIGxpbmtlZCB0byB0aGUgY29ycmVjdCBwbGFjZVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVxdWlyZShyZXNvbHZlRnJvbShjd2QsIGAke3BrZ05hbWV9L3BhY2thZ2UuanNvbmApKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHBhY2thZ2Ugd2FzIG5vdCBsaW5rZWQgY29ycmVjdGx5OyBpdHMgcGFja2FnZS5qc29uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdkaWQgbm90IGV4aXN0IG9yIHdhcyB1bnJlYWRhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKi9cbiAgYXN5bmMgdW5pbnN0YWxsUGFja2FnZSAoY3dkLCBwa2cpIHtcbiAgICBhd2FpdCB0aGlzLmV4ZWMoJ3VuaW5zdGFsbCcsIFtwa2ddLCB7XG4gICAgICBjd2QsXG4gICAgICBsb2NrRmlsZTogdGhpcy5fZ2V0SW5zdGFsbExvY2tmaWxlUGF0aChjd2QpXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5wbSA9IG5ldyBOUE0oKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgTlBNLmluc3RhbGxQYWNrYWdlfVxuICogQHR5cGVkZWYgSW5zdGFsbFBhY2thZ2VPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrZ1Zlcl0gLSB0aGUgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0byBpbnN0YWxsXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgTlBNLmV4ZWN9XG4gKiBAdHlwZWRlZiBFeGVjT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGN3ZCAtIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2pzb25dIC0gSWYgYHRydWVgLCBzdXBwbHkgYC0tanNvbmAgZmxhZyB0byBucG0gYW5kIHJlc29sdmUgdy8gcGFyc2VkIEpTT05cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbG9ja0ZpbGVdIC0gUGF0aCB0byBsb2NrZmlsZSB0byB1c2VcbiAqL1xuXG4vLyBUSEVTRSBUWVBFUyBTSE9VTEQgQkUgSU4gVEVFTiBQUk9DRVNTLCBOT1QgSEVSRVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIGEgbm9uLXplcm8tZXhpdCBleGVjdXRpb24gb2YgYGFwcGl1bWBcbiAqIEB0eXBlZGVmIFRlZW5Qcm9jZXNzRXhlY1Jlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0ZG91dCAtIFN0ZG91dFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0ZGVyciAtIFN0ZGVyclxuICogQHByb3BlcnR5IHtudW1iZXI/fSBjb2RlIC0gRXhpdCBjb2RlXG4gKiBAcHJvcGVydHkge2FueX0ganNvbiAtIEpTT04gcGFyc2VkIGZyb20gc3Rkb3V0XG4gKi9cblxuLyoqXG4gKiBFeHRyYSBwcm9wcyBgdGVlbl9wcm9jZXNzLmV4ZWNgIGFkZHMgdG8gaXRzIGVycm9yIG9iamVjdHNcbiAqIEB0eXBlZGVmIFRlZW5Qcm9jZXNzRXhlY0Vycm9yUHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGRvdXQgLSBTVERPVVRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGRlcnIgLSBTVERFUlJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyP30gY29kZSAtIEV4aXQgY29kZVxuICovXG5cbi8qKlxuICogT3B0aW9ucyB1bmlxdWUgdG8gYHRlZW5fcHJvY2Vzcy5leGVjYC4gSSBwcm9iYWJseSBtaXNzZWQgc29tZVxuICogQHR5cGVkZWYgVGVlblByb2Nlc3NFeGVjRXh0cmFPcHRzXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21heFN0ZG91dEJ1ZmZlclNpemVdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21heFN0ZGVyckJ1ZmZlclNpemVdXG4gKi9cblxuLyoqXG4gKiBBbGwgb3B0aW9ucyBmb3IgYHRlZW5fcHJvY2Vzcy5leGVjYFxuICogQHR5cGVkZWYge2ltcG9ydCgnY2hpbGRfcHJvY2VzcycpLlNwYXduT3B0aW9ucyAmIFRlZW5Qcm9jZXNzRXhlY0V4dHJhT3B0c30gVGVlblByb2Nlc3NFeGVjT3B0c1xuICovXG5cbi8qKlxuICogRXJyb3IgdGhyb3duIGJ5IGB0ZWVuX3Byb2Nlc3MuZXhlY2BcbiAqIEB0eXBlZGVmIHtFcnJvciAmIFRlZW5Qcm9jZXNzRXhlY0Vycm9yUHJvcHN9IFRlZW5Qcm9jZXNzRXhlY0Vycm9yXG4gKi9cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9ucG0uanMiXSwibmFtZXMiOlsiQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgiLCJwYXRoIiwiam9pbiIsIklOU1RBTExfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCIsIk5QTSIsIl9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoIiwiY3dkIiwiZXhlYyIsImNtZCIsImFyZ3MiLCJvcHRzIiwiZXhlY09wdHMiLCJqc29uIiwibG9ja0ZpbGUiLCJ1bnNoaWZ0IiwicHVzaCIsIm5wbUNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInJ1bm5lciIsImFjcXVpcmVMb2NrIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJfcnVubmVyIiwicmV0Iiwic3Rkb3V0Iiwic3RkZXJyIiwiY29kZSIsIkpTT04iLCJwYXJzZSIsImlnbiIsImUiLCJlcnIiLCJFcnJvciIsInRyaW0iLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnIiwibGF0ZXN0IiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIiwiY3VyVmVyc2lvbiIsImFsbFZlcnNpb25zIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMiLCJsaXN0Iiwic2FmZVVwZ3JhZGVWZXIiLCJjdXJTZW12ZXIiLCJzZW12ZXIiLCJ0ZXN0VmVyIiwidGVzdFNlbXZlciIsInByZXJlbGVhc2UiLCJsZW5ndGgiLCJjb21wYXJlIiwibWFqb3IiLCJmb3JtYXQiLCJpbnN0YWxsUGFja2FnZSIsInBrZ05hbWUiLCJwa2dWZXIiLCJkdW1teVBrZ0pzb24iLCJkdW1teVBrZ1BhdGgiLCJmcyIsInJlYWRGaWxlIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5IiwiaW5zdGFsbE9wdHMiLCJyZXMiLCJlcnJvciIsInBrZ0pzb25QYXRoIiwicmVxdWlyZSIsInVuaW5zdGFsbFBhY2thZ2UiLCJucG0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7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QztBQUVsQ08sTUFBQUEsUUFBUSxFQUFFLEtBQUtSLHVCQUFMLENBQTZCQyxHQUE3QjtBQUZ3QixLQUE5QixDQUFOO0FBSUQ7O0FBcE5jOzs7QUF1TlYsTUFBTThELEdBQUcsR0FBRyxJQUFJaEUsR0FBSixFQUFaIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgaGFzQXBwaXVtRGVwZW5kZW5jeSB9IGZyb20gJy4vZW52JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICcuL2ZzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIHN5c3RlbSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgcmVzb2x2ZUZyb20gZnJvbSAncmVzb2x2ZS1mcm9tJztcblxuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW55IEFwcGl1bSBpbnRlcm5hbCBmaWxlc1xuICogWFhYOiB0aGlzIGlzIGR1cGxpY2F0ZWQgaW4gYGFwcGl1bS9saWIvY29uc3RhbnRzLmpzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX0RJUl9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICAnbm9kZV9tb2R1bGVzJyxcbiAgJy5jYWNoZScsXG4gICdhcHBpdW0nLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGxvY2tmaWxlIHVzZWQgd2hlbiBpbnN0YWxsaW5nIGFuIGV4dGVuc2lvbiB2aWEgYGFwcGl1bWBcbiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTExfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsXG4gICcuaW5zdGFsbC5sb2NrJyxcbik7XG5cbi8qKlxuICogWFhYOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIHNpbmdsZXRvbiwgYnV0IGl0IGlzbid0LiAgTWF5YmUgdGhpcyBtb2R1bGUgc2hvdWxkIGp1c3QgZXhwb3J0IGZ1bmN0aW9ucz9cbiAqL1xuZXhwb3J0IGNsYXNzIE5QTSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHBhdGggdG8gXCJpbnN0YWxsXCIgbG9ja2ZpbGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKi9cbiAgX2dldEluc3RhbGxMb2NrZmlsZVBhdGggKGN3ZCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4oY3dkLCBJTlNUQUxMX0xPQ0tGSUxFX1JFTEFUSVZFX1BBVEgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYG5wbWAgd2l0aCBnaXZlbiBhcmdzLlxuICAgKlxuICAgKiBJZiB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uemVybyBjb2RlLCB0aGUgY29udGVudHMgb2YgYFNURE9VVGAgYW5kIGBTVERFUlJgIHdpbGwgYmUgaW4gdGhlXG4gICAqIGBtZXNzYWdlYCBvZiB0aGUge0BsaW5rIFRlZW5Qcm9jZXNzRXhlY0Vycm9yfSByZWplY3RlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNtZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzXG4gICAqIEBwYXJhbSB7RXhlY09wdHN9IG9wdHNcbiAgICogQHBhcmFtIHtFeGVjT3B0c30gW2V4ZWNPcHRzXVxuICAgKi9cbiAgYXN5bmMgZXhlYyAoY21kLCBhcmdzLCBvcHRzLCBleGVjT3B0cyA9IC8qKiBAdHlwZSB7RXhlY09wdHN9ICovKHt9KSkge1xuICAgIGxldCB7IGN3ZCwganNvbiwgbG9ja0ZpbGUgfSA9IG9wdHM7XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgY3VycmVudCBvcGVyYXRpb24gaW4gY3dkXG4gICAgZXhlY09wdHMgPSB7Li4uZXhlY09wdHMsIGN3ZH07XG5cbiAgICBhcmdzLnVuc2hpZnQoY21kKTtcbiAgICBpZiAoanNvbikge1xuICAgICAgYXJncy5wdXNoKCctLWpzb24nKTtcbiAgICB9XG4gICAgY29uc3QgbnBtQ21kID0gc3lzdGVtLmlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgbGV0IHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGV4ZWMobnBtQ21kLCBhcmdzLCBleGVjT3B0cyk7XG4gICAgaWYgKGxvY2tGaWxlKSB7XG4gICAgICBjb25zdCBhY3F1aXJlTG9jayA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChsb2NrRmlsZSk7XG4gICAgICBjb25zdCBfcnVubmVyID0gcnVubmVyO1xuICAgICAgcnVubmVyID0gYXN5bmMgKCkgPT4gYXdhaXQgYWNxdWlyZUxvY2soX3J1bm5lcik7XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoJ3RlZW5fcHJvY2VzcycpLkV4ZWNSZXN1bHQ8c3RyaW5nPiAmIHtqc29uPzogYW55fX0gKi9cbiAgICBsZXQgcmV0O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9ID0gYXdhaXQgcnVubmVyKCk7XG4gICAgICByZXQgPSB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9O1xuICAgICAgLy8gaWYgcG9zc2libGUsIHBhcnNlIE5QTSdzIGpzb24gb3V0cHV0LiBEdXJpbmcgTlBNIGluc3RhbGwgM3JkLXBhcnR5XG4gICAgICAvLyBwYWNrYWdlcyBjYW4gd3JpdGUgdG8gc3Rkb3V0LCBzbyBzb21ldGltZXMgdGhlIGpzb24gb3V0cHV0IGNhbid0IGJlXG4gICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIHBhcnNlYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0Lmpzb24gPSBKU09OLnBhcnNlKHN0ZG91dCk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3Qge3N0ZG91dCA9ICcnLCBzdGRlcnIgPSAnJywgY29kZSA9IG51bGx9ID0gLyoqIEB0eXBlIHtUZWVuUHJvY2Vzc0V4ZWNFcnJvcn0gKi8oZSk7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYG5wbSBjb21tYW5kICcke2FyZ3Muam9pbignICcpfScgZmFpbGVkIHdpdGggY29kZSAke2NvZGV9LlxcblxcblNURE9VVDpcXG4ke3N0ZG91dC50cmltKCl9XFxuXFxuU1RERVJSOlxcbiR7c3RkZXJyLnRyaW0oKX1gKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dcbiAgICovXG4gIGFzeW5jIGdldExhdGVzdFZlcnNpb24gKGN3ZCwgcGtnKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4ZWMoJ3ZpZXcnLCBbcGtnLCAnZGlzdC10YWdzJ10sIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBjd2RcbiAgICB9KSkuanNvbj8ubGF0ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyVmVyc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIChjd2QsIHBrZywgY3VyVmVyc2lvbikge1xuICAgIGNvbnN0IGFsbFZlcnNpb25zID0gKGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICd2ZXJzaW9ucyddLCB7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgY3dkXG4gICAgfSkpLmpzb247XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYG5wbSBsc2AsIG9wdGlvbmFsbHkgZm9yIGEgcGFydGljdWxhciBwYWNrYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGtnXVxuICAgKi9cbiAgYXN5bmMgbGlzdCAoY3dkLCBwa2cpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHBrZyA/IFtwa2ddIDogW10sIHtjd2QsIGpzb246IHRydWV9KSkuanNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGN1cnJlbnQgdmVyc2lvbiBhbmQgYSBsaXN0IG9mIGFsbCB2ZXJzaW9ucyBmb3IgYSBwYWNrYWdlLCByZXR1cm4gdGhlIHZlcnNpb24gd2hpY2ggaXNcbiAgICogdGhlIGhpZ2hlc3Qgc2FmZWx5LXVwZ3JhZGFibGUgdmVyc2lvbiAobWVhbmluZyBub3QgY3Jvc3NpbmcgYW55IG1ham9yIHJldmlzaW9uIGJvdW5kYXJpZXMsIGFuZFxuICAgKiBub3QgaW5jbHVkaW5nIGFueSBhbHBoYS9iZXRhL3JjIHZlcnNpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyVmVyc2lvbiAtIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgYSBwYWNrYWdlXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYWxsVmVyc2lvbnMgLSBhIGxpc3Qgb2YgdmVyc2lvbiBzdHJpbmdzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ3xudWxsfSAtIHRoZSBoaWdoZXN0IHNhZmVseS11cGdyYWRhYmxlIHZlcnNpb24sIG9yIG51bGwgaWYgdGhlcmUgaXNuJ3Qgb25lXG4gICAqL1xuICBnZXRMYXRlc3RTYWZlVXBncmFkZUZyb21WZXJzaW9ucyAoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpIHtcbiAgICBsZXQgc2FmZVVwZ3JhZGVWZXIgPSBudWxsO1xuICAgIGNvbnN0IGN1clNlbXZlciA9IHNlbXZlci5wYXJzZShjdXJWZXJzaW9uKTtcbiAgICBpZiAoY3VyU2VtdmVyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBjdXJyZW50IHZlcnNpb24gJyR7Y3VyVmVyc2lvbn0nYCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGVzdFZlciBvZiBhbGxWZXJzaW9ucykge1xuICAgICAgY29uc3QgdGVzdFNlbXZlciA9IHNlbXZlci5wYXJzZSh0ZXN0VmVyKTtcbiAgICAgIGlmICh0ZXN0U2VtdmVyID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlIHZlcnNpb24gdG8gdGVzdCBhZ2FpbnN0OiAnJHt0ZXN0VmVyfSdgKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB0ZXN0IHZlcnNpb24gaXMgYSBwcmVyZWxlYXNlLCBpZ25vcmUgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gaXMgbGF0ZXIgdGhhbiB0aGUgdGVzdCB2ZXJzaW9uLCBza2lwIHRoaXMgdGVzdCB2ZXJzaW9uXG4gICAgICBpZiAoY3VyU2VtdmVyLmNvbXBhcmUodGVzdFNlbXZlcikgPT09IDEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgdGVzdCB2ZXJzaW9uIGlzIG5ld2VyLCBidXQgY3Jvc3NlcyBhIG1ham9yIHJldmlzaW9uIGJvdW5kYXJ5LCBhbHNvIHNraXAgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLm1ham9yID4gY3VyU2VtdmVyLm1ham9yKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgdmVyc2lvbiBpcyBzYWZlIHRvIHVwZ3JhZGUgdG8uIEJ1dCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBvbmVzIG9mIHRoaXNcbiAgICAgIC8vIGtpbmQsIHNvIGtlZXAgaXRlcmF0aW5nIGFuZCBrZWVwaW5nIHRoZSBoaWdoZXN0XG4gICAgICBpZiAoc2FmZVVwZ3JhZGVWZXIgPT09IG51bGwgfHwgdGVzdFNlbXZlci5jb21wYXJlKHNhZmVVcGdyYWRlVmVyKSA9PT0gMSkge1xuICAgICAgICBzYWZlVXBncmFkZVZlciA9IHRlc3RTZW12ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzYWZlVXBncmFkZVZlcikge1xuICAgICAgc2FmZVVwZ3JhZGVWZXIgPSBzYWZlVXBncmFkZVZlci5mb3JtYXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNhZmVVcGdyYWRlVmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIGEgcGFja2FnZSB3LyBgbnBtYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7SW5zdGFsbFBhY2thZ2VPcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCd0eXBlLWZlc3QnKS5QYWNrYWdlSnNvbj59XG4gICAqL1xuICBhc3luYyBpbnN0YWxsUGFja2FnZSAoY3dkLCBwa2dOYW1lLCB7cGtnVmVyfSA9IHt9KSB7XG4gICAgLyoqIEB0eXBlIHthbnl9ICovXG4gICAgbGV0IGR1bW15UGtnSnNvbjtcbiAgICBjb25zdCBkdW1teVBrZ1BhdGggPSBwYXRoLmpvaW4oY3dkLCAncGFja2FnZS5qc29uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGR1bW15UGtnSnNvbiA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoZHVtbXlQa2dQYXRoLCAndXRmOCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgZHVtbXlQa2dKc29uID0ge307XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShkdW1teVBrZ1BhdGgsIEpTT04uc3RyaW5naWZ5KGR1bW15UGtnSnNvbiwgbnVsbCwgMiksICd1dGY4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UndmUgZm91bmQgYSBgcGFja2FnZS5qc29uYCBjb250YWluaW5lZCB0aGUgYGFwcGl1bUNyZWF0ZWRgIHByb3BlcnR5LFxuICAgICAqIHRoZW4gd2UgY2FuIGRvIHdoYXRldmVyIHdlIHBsZWFzZSB3aXRoIGl0LCBzaW5jZSB3ZSBjcmVhdGVkIGl0LiAgVGhpcyBpc1xuICAgICAqIGxpa2VseSB3aGVuIGBBUFBJVU1fSE9NRWAgaXMgdGhlIGRlZmF1bHQgKGluIGB+Ly5hcHBpdW1gKS4gIEluIHRoYXQgY2FzZSxcbiAgICAgKiB3ZSB3YW50IGAtLWdsb2JhbC1zdHlsZWAgdG8gYXZvaWQgZGVkdXBpbmcsIGFuZCB3ZSBhbHNvIGRvIG5vdCBuZWVkIGFcbiAgICAgKiBgcGFja2FnZS1sb2NrLmpzb25gLlxuICAgICAqXG4gICAgICogSWYgd2UgX2hhdmVuJ3RfIGZvdW5kIHN1Y2ggYSBrZXksIHRoZW4gdGhpcyBgcGFja2FnZS5qc29uYCBpc24ndCBhXG4gICAgICogXCJkdW1teVwiIGFuZCBpcyBjb250cm9sbGVkIGJ5IHRoZSB1c2VyLiAgU28gd2UnbGwganVzdCBhZGQgaXQgYXMgYSBkZXZcbiAgICAgKiBkZXA7IHdoYXRldmVyIGVsc2UgaXQgZG9lcyBpcyB1cCB0byB0aGUgdXNlcidzIG5wbSBjb25maWcuXG4gICAgICovXG4gICAgY29uc3QgaW5zdGFsbE9wdHMgPSBhd2FpdCBoYXNBcHBpdW1EZXBlbmRlbmN5KGN3ZCkgP1xuICAgICAgWyctLXNhdmUtZGV2J10gOlxuICAgICAgWyctLXNhdmUtZGV2JywgJy0tc2F2ZS1leGFjdCcsICctLWdsb2JhbC1zdHlsZScsICctLW5vLXBhY2thZ2UtbG9jayddO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5leGVjKCdpbnN0YWxsJywgW1xuICAgICAgLi4uaW5zdGFsbE9wdHMsXG4gICAgICBwa2dWZXIgPyBgJHtwa2dOYW1lfUAke3BrZ1Zlcn1gIDogcGtnTmFtZVxuICAgIF0sIHtcbiAgICAgIGN3ZCxcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBsb2NrRmlsZTogdGhpcy5fZ2V0SW5zdGFsbExvY2tmaWxlUGF0aChjd2QpXG4gICAgfSk7XG5cbiAgICBpZiAocmVzLmpzb24pIHtcbiAgICAgIC8vIHdlIHBhcnNlZCBhIHZhbGlkIGpzb24gcmVzcG9uc2UsIHNvIGlmIHdlIGdvdCBhbiBlcnJvciBoZXJlLCByZXR1cm4gdGhhdFxuICAgICAgLy8gbWVzc2FnZSBzdHJhaWdodGF3YXlcbiAgICAgIGlmIChyZXMuanNvbi5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLmpzb24uZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vdyByZWFkIHBhY2thZ2UgZGF0YSBmcm9tIHRoZSBpbnN0YWxsZWQgcGFja2FnZSB0byByZXR1cm4sIGFuZCBtYWtlIHN1cmVcbiAgICAvLyBldmVyeXRoaW5nIGdvdCBpbnN0YWxsZWQgb2suIFJlbWVtYmVyLCBwa2dOYW1lIG1pZ2h0IGVuZCB1cCB3aXRoIGEgLyBpbiBpdCBkdWUgdG8gYW4gbnBtXG4gICAgLy8gb3JnLCBzbyBpZiBzbywgdGhhdCB3aWxsIGdldCBjb3JyZWN0bHkgZXhwbG9kZWQgaW50byBtdWx0aXBsZSBkaXJlY3RvcmllcywgYnkgcGF0aC5yZXNvbHZlIGhlcmVcbiAgICAvLyAoZXZlbiBvbiBXaW5kb3dzISlcbiAgICBjb25zdCBwa2dKc29uUGF0aCA9IHJlc29sdmVGcm9tKGN3ZCwgYCR7cGtnTmFtZX0vcGFja2FnZS5qc29uYCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZXF1aXJlKHBrZ0pzb25QYXRoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHBhY2thZ2Ugd2FzIG5vdCBkb3dubG9hZGVkIGNvcnJlY3RseTsgaXRzIHBhY2thZ2UuanNvbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnZGlkIG5vdCBleGlzdCBvciB3YXMgdW5yZWFkYWJsZS4gV2UgbG9va2VkIGZvciBpdCBhdCAnICtcbiAgICAgICAgICAgICAgICAgICAgICBwa2dKc29uUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKi9cbiAgYXN5bmMgdW5pbnN0YWxsUGFja2FnZSAoY3dkLCBwa2cpIHtcbiAgICBhd2FpdCB0aGlzLmV4ZWMoJ3VuaW5zdGFsbCcsIFtwa2ddLCB7XG4gICAgICBjd2QsXG4gICAgICBsb2NrRmlsZTogdGhpcy5fZ2V0SW5zdGFsbExvY2tmaWxlUGF0aChjd2QpXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5wbSA9IG5ldyBOUE0oKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgTlBNLmluc3RhbGxQYWNrYWdlfVxuICogQHR5cGVkZWYgSW5zdGFsbFBhY2thZ2VPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrZ1Zlcl0gLSB0aGUgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0byBpbnN0YWxsXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgTlBNLmV4ZWN9XG4gKiBAdHlwZWRlZiBFeGVjT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGN3ZCAtIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2pzb25dIC0gSWYgYHRydWVgLCBzdXBwbHkgYC0tanNvbmAgZmxhZyB0byBucG0gYW5kIHJlc29sdmUgdy8gcGFyc2VkIEpTT05cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbG9ja0ZpbGVdIC0gUGF0aCB0byBsb2NrZmlsZSB0byB1c2VcbiAqL1xuXG4vLyBUSEVTRSBUWVBFUyBTSE9VTEQgQkUgSU4gVEVFTiBQUk9DRVNTLCBOT1QgSEVSRVxuXG4vKipcbiAqIEV4dHJhIHByb3BzIGB0ZWVuX3Byb2Nlc3MuZXhlY2AgYWRkcyB0byBpdHMgZXJyb3Igb2JqZWN0c1xuICogQHR5cGVkZWYgVGVlblByb2Nlc3NFeGVjRXJyb3JQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0ZG91dCAtIFNURE9VVFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0ZGVyciAtIFNUREVSUlxuICogQHByb3BlcnR5IHtudW1iZXI/fSBjb2RlIC0gRXhpdCBjb2RlXG4gKi9cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gYnkgYHRlZW5fcHJvY2Vzcy5leGVjYFxuICogQHR5cGVkZWYge0Vycm9yICYgVGVlblByb2Nlc3NFeGVjRXJyb3JQcm9wc30gVGVlblByb2Nlc3NFeGVjRXJyb3JcbiAqL1xuIl19
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Parses a file in xml or binary format of plist
3
+ * @param {string} plist The plist file path
4
+ * @param {boolean} mustExist If set to false, this method will return an empty object when the file doesn't exist
5
+ * @param {boolean} quiet If set to false, the plist path will be logged in debug level
6
+ * @returns {Promise<any>} parsed plist JS Object
7
+ */
8
+ export function parsePlistFile(plist: string, mustExist?: boolean, quiet?: boolean): Promise<any>;
9
+ /**
10
+ * Parses an buffer or a string to a JS object a plist from an object
11
+ * @param {string|Buffer} data The plist in the form of string or Buffer
12
+ * @returns {Object} parsed plist JS Object
13
+ * @throws Will throw an error if the plist type is unknown
14
+ */
15
+ export function parsePlist(data: string | Buffer): any;
16
+ /**
17
+ * Creates a plist from an object
18
+ * @param {Object} object The JS object to be turned into a plist
19
+ * @param {boolean} binary Set it to true for a binary plist
20
+ * @returns {string|Buffer} returns a buffer or a string in respect to the binary parameter
21
+ */
22
+ export function createPlist(object: any, binary?: boolean): string | Buffer;
23
+ /**
24
+ * Updates a plist file with the given fields
25
+ * @param {string} plist The plist file path
26
+ * @param {Object} updatedFields The updated fields-value pairs
27
+ * @param {boolean} binary If set to false, the file will be created as a xml plist
28
+ * @param {boolean} mustExist If set to false, this method will update an empty plist
29
+ * @param {boolean} quiet If set to false, the plist path will be logged in debug level
30
+ */
31
+ export function updatePlistFile(plist: string, updatedFields: any, binary?: boolean, mustExist?: boolean, quiet?: boolean): Promise<void>;
32
+ /**
33
+ * Creates a binary plist Buffer from an object
34
+ * @param {Object} data The object to be turned into a binary plist
35
+ * @returns {Buffer} plist in the form of a binary buffer
36
+ */
37
+ export function createBinaryPlist(data: any): Buffer;
38
+ /**
39
+ * Parses a Buffer into an Object
40
+ * @param {Buffer} data The beffer of a binary plist
41
+ */
42
+ export function parseBinaryPlist(data: Buffer): any;
43
+ //# sourceMappingURL=plist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plist.d.ts","sourceRoot":"","sources":["../../lib/plist.js"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,sCALW,MAAM,cACN,OAAO,UACP,OAAO,GACL,QAAQ,GAAG,CAAC,CAmCxB;AAkFD;;;;;GAKG;AACH,iCAJW,MAAM,GAAC,MAAM,OAgBvB;AAhCD;;;;;GAKG;AACH,kDAHW,OAAO,GACL,MAAM,GAAC,MAAM,CAQzB;AA9ED;;;;;;;GAOG;AACH,uCANW,MAAM,+BAEN,OAAO,cACP,OAAO,UACP,OAAO,iBAmBjB;AACD;;;;GAIG;AACH,8CAFa,MAAM,CAIlB;AAED;;;GAGG;AACH,uCAFW,MAAM,OAMhB"}
@@ -157,4 +157,4 @@ function parsePlist(data) {
157
157
 
158
158
  throw new Error(`Unknown type of plist, data: ${data.toString()}`);
159
159
  }
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wbGlzdC5qcyJdLCJuYW1lcyI6WyJCUExJU1RfSURFTlRJRklFUiIsIkJVRkZFUiIsIkJ1ZmZlciIsImZyb20iLCJURVhUIiwiUExJU1RfSURFTlRJRklFUiIsInBhcnNlWG1sUGxpc3RGaWxlIiwicGxpc3RGaWxlbmFtZSIsInhtbENvbnRlbnQiLCJmcyIsInJlYWRGaWxlIiwieG1scGxpc3QiLCJwYXJzZSIsInBhcnNlUGxpc3RGaWxlIiwicGxpc3QiLCJtdXN0RXhpc3QiLCJxdWlldCIsImV4aXN0cyIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJkZWJ1ZyIsIm9iaiIsInR5cGUiLCJicGxpc3RQYXJzZSIsInBhcnNlRmlsZSIsImxlbmd0aCIsIkVycm9yIiwiaWduIiwiZXJyIiwibWVzc2FnZSIsInVwZGF0ZVBsaXN0RmlsZSIsInVwZGF0ZWRGaWVsZHMiLCJiaW5hcnkiLCJfIiwiZXh0ZW5kIiwibmV3UGxpc3QiLCJidWlsZCIsIndyaXRlRmlsZSIsImNyZWF0ZUJpbmFyeVBsaXN0IiwiZGF0YSIsInBhcnNlQmluYXJ5UGxpc3QiLCJwYXJzZUJ1ZmZlciIsImdldFhtbFBsaXN0IiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwiaXNCdWZmZXIiLCJjb21wYXJlIiwidG9TdHJpbmciLCJnZXRCaW5hcnlQbGlzdCIsImNyZWF0ZVBsaXN0Iiwib2JqZWN0IiwicGFyc2VQbGlzdCIsInRleHRQbGlzdCIsImJpbmFyeVBsaXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsaUJBQWlCLEdBQUc7QUFDeEJDLEVBQUFBLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBWixDQURnQjtBQUV4QkMsRUFBQUEsSUFBSSxFQUFFO0FBRmtCLENBQTFCO0FBSUEsTUFBTUMsZ0JBQWdCLEdBQUc7QUFDdkJKLEVBQUFBLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksR0FBWixDQURlO0FBRXZCQyxFQUFBQSxJQUFJLEVBQUU7QUFGaUIsQ0FBekI7O0FBTUEsZUFBZUUsaUJBQWYsQ0FBa0NDLGFBQWxDLEVBQWlEO0FBQy9DLE1BQUlDLFVBQVUsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlILGFBQVosRUFBMkIsTUFBM0IsQ0FBdkI7QUFDQSxTQUFPSSxlQUFTQyxLQUFULENBQWVKLFVBQWYsQ0FBUDtBQUNEOztBQVNELGVBQWVLLGNBQWYsQ0FBK0JDLEtBQS9CLEVBQXNDQyxTQUFTLEdBQUcsSUFBbEQsRUFBd0RDLEtBQUssR0FBRyxJQUFoRSxFQUFzRTtBQUVwRSxNQUFJLEVBQUMsTUFBTVAsWUFBR1EsTUFBSCxDQUFVSCxLQUFWLENBQVAsQ0FBSixFQUE2QjtBQUMzQixRQUFJQyxTQUFKLEVBQWU7QUFDYkcsc0JBQUlDLGFBQUosQ0FBbUIsOEJBQTZCTCxLQUFNLEdBQXREO0FBQ0QsS0FGRCxNQUVPO0FBQ0xJLHNCQUFJRSxLQUFKLENBQVcsZUFBY04sS0FBTSw2Q0FBL0I7O0FBQ0EsYUFBTyxFQUFQO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJTyxHQUFHLEdBQUcsRUFBVjtBQUNBLE1BQUlDLElBQUksR0FBRyxRQUFYOztBQUNBLE1BQUk7QUFDRkQsSUFBQUEsR0FBRyxHQUFHLE1BQU1FLHNCQUFZQyxTQUFaLENBQXNCVixLQUF0QixDQUFaOztBQUNBLFFBQUlPLEdBQUcsQ0FBQ0ksTUFBUixFQUFnQjtBQUNkSixNQUFBQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQyxDQUFELENBQVQ7QUFDRCxLQUZELE1BRU87QUFDTCxZQUFNLElBQUlLLEtBQUosQ0FBVyxnQkFBZVosS0FBTSx3QkFBaEMsQ0FBTjtBQUNEO0FBQ0YsR0FQRCxDQU9FLE9BQU9hLEdBQVAsRUFBWTtBQUNaLFFBQUk7QUFDRk4sTUFBQUEsR0FBRyxHQUFHLE1BQU1mLGlCQUFpQixDQUFDUSxLQUFELENBQTdCO0FBQ0FRLE1BQUFBLElBQUksR0FBRyxLQUFQO0FBQ0QsS0FIRCxDQUdFLE9BQU9NLEdBQVAsRUFBWTtBQUNaVixzQkFBSUMsYUFBSixDQUFtQiwrQkFBOEJMLEtBQU0sYUFBWWMsR0FBRyxDQUFDQyxPQUFRLEVBQS9FO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJLENBQUNiLEtBQUwsRUFBWTtBQUNWRSxvQkFBSUUsS0FBSixDQUFXLHNCQUFxQk4sS0FBTSxRQUFPUSxJQUFLLEVBQWxEO0FBQ0Q7O0FBQ0QsU0FBT0QsR0FBUDtBQUNEOztBQVVELGVBQWVTLGVBQWYsQ0FBZ0NoQixLQUFoQyxFQUF1Q2lCLGFBQXZDLEVBQXNEQyxNQUFNLEdBQUcsSUFBL0QsRUFBcUVqQixTQUFTLEdBQUcsSUFBakYsRUFBdUZDLEtBQUssR0FBRyxJQUEvRixFQUFxRztBQUNuRyxNQUFJSyxHQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsR0FBRyxHQUFHLE1BQU1SLGNBQWMsQ0FBQ0MsS0FBRCxFQUFRQyxTQUFSLENBQTFCO0FBQ0QsR0FGRCxDQUVFLE9BQU9hLEdBQVAsRUFBWTtBQUNaVixvQkFBSUMsYUFBSixDQUFtQiwyQkFBMEJTLEdBQUcsQ0FBQ0MsT0FBUSxFQUF6RDtBQUNEOztBQUNESSxrQkFBRUMsTUFBRixDQUFTYixHQUFULEVBQWNVLGFBQWQ7O0FBQ0EsTUFBSUksUUFBUSxHQUFHSCxNQUFNLEdBQUcsNEJBQWFYLEdBQWIsQ0FBSCxHQUF1QlYsZUFBU3lCLEtBQVQsQ0FBZWYsR0FBZixDQUE1Qzs7QUFDQSxNQUFJO0FBQ0YsVUFBTVosWUFBRzRCLFNBQUgsQ0FBYXZCLEtBQWIsRUFBb0JxQixRQUFwQixDQUFOO0FBQ0QsR0FGRCxDQUVFLE9BQU9QLEdBQVAsRUFBWTtBQUNaVixvQkFBSUMsYUFBSixDQUFtQix5QkFBd0JTLEdBQUcsQ0FBQ0MsT0FBUSxFQUF2RDtBQUNEOztBQUNELE1BQUksQ0FBQ2IsS0FBTCxFQUFZO0FBQ1ZFLG9CQUFJRSxLQUFKLENBQVcscUJBQW9CTixLQUFNLEdBQXJDO0FBQ0Q7QUFDRjs7QUFNRCxTQUFTd0IsaUJBQVQsQ0FBNEJDLElBQTVCLEVBQWtDO0FBQ2hDLFNBQU8sNEJBQWFBLElBQWIsQ0FBUDtBQUNEOztBQU1ELFNBQVNDLGdCQUFULENBQTJCRCxJQUEzQixFQUFpQztBQUMvQixTQUFPaEIsc0JBQVlrQixXQUFaLENBQXdCRixJQUF4QixDQUFQO0FBQ0Q7O0FBRUQsU0FBU0csV0FBVCxDQUFzQkgsSUFBdEIsRUFBNEI7QUFDMUIsTUFBSU4sZ0JBQUVVLFFBQUYsQ0FBV0osSUFBWCxLQUFvQkEsSUFBSSxDQUFDSyxVQUFMLENBQWdCdkMsZ0JBQWdCLENBQUNELElBQWpDLENBQXhCLEVBQWdFO0FBQzlELFdBQU9tQyxJQUFQO0FBQ0Q7O0FBQ0QsTUFBSU4sZ0JBQUVZLFFBQUYsQ0FBV04sSUFBWCxLQUFvQmxDLGdCQUFnQixDQUFDSixNQUFqQixDQUF3QjZDLE9BQXhCLENBQWdDUCxJQUFoQyxFQUFzQyxDQUF0QyxFQUF5Q2xDLGdCQUFnQixDQUFDSixNQUFqQixDQUF3QndCLE1BQWpFLE1BQTZFLENBQXJHLEVBQXdHO0FBQ3RHLFdBQU9jLElBQUksQ0FBQ1EsUUFBTCxFQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsY0FBVCxDQUF5QlQsSUFBekIsRUFBK0I7QUFDN0IsTUFBSU4sZ0JBQUVVLFFBQUYsQ0FBV0osSUFBWCxLQUFvQkEsSUFBSSxDQUFDSyxVQUFMLENBQWdCNUMsaUJBQWlCLENBQUNJLElBQWxDLENBQXhCLEVBQWlFO0FBQy9ELFdBQU9GLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZb0MsSUFBWixDQUFQO0FBQ0Q7O0FBRUQsTUFBSU4sZ0JBQUVZLFFBQUYsQ0FBV04sSUFBWCxLQUFvQnZDLGlCQUFpQixDQUFDQyxNQUFsQixDQUF5QjZDLE9BQXpCLENBQWlDUCxJQUFqQyxFQUF1QyxDQUF2QyxFQUEwQ3ZDLGlCQUFpQixDQUFDQyxNQUFsQixDQUF5QndCLE1BQW5FLE1BQStFLENBQXZHLEVBQTBHO0FBQ3hHLFdBQU9jLElBQVA7QUFDRDs7QUFDRCxTQUFPLElBQVA7QUFDRDs7QUFRRCxTQUFTVSxXQUFULENBQXNCQyxNQUF0QixFQUE4QmxCLE1BQU0sR0FBRyxLQUF2QyxFQUE4QztBQUM1QyxNQUFJQSxNQUFKLEVBQVk7QUFDVixXQUFPTSxpQkFBaUIsQ0FBQ1ksTUFBRCxDQUF4QjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU92QyxlQUFTeUIsS0FBVCxDQUFlYyxNQUFmLENBQVA7QUFDRDtBQUNGOztBQVFELFNBQVNDLFVBQVQsQ0FBcUJaLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlhLFNBQVMsR0FBR1YsV0FBVyxDQUFDSCxJQUFELENBQTNCOztBQUNBLE1BQUlhLFNBQUosRUFBZTtBQUNiLFdBQU96QyxlQUFTQyxLQUFULENBQWV3QyxTQUFmLENBQVA7QUFDRDs7QUFFRCxNQUFJQyxXQUFXLEdBQUdMLGNBQWMsQ0FBQ1QsSUFBRCxDQUFoQzs7QUFDQSxNQUFJYyxXQUFKLEVBQWlCO0FBQ2YsV0FBT2IsZ0JBQWdCLENBQUNhLFdBQUQsQ0FBaEIsQ0FBOEIsQ0FBOUIsQ0FBUDtBQUNEOztBQUVELFFBQU0sSUFBSTNCLEtBQUosQ0FBVyxnQ0FBK0JhLElBQUksQ0FBQ1EsUUFBTCxFQUFnQixFQUExRCxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeG1scGxpc3QgZnJvbSAncGxpc3QnO1xuaW1wb3J0IGJwbGlzdENyZWF0ZSBmcm9tICdicGxpc3QtY3JlYXRvcic7XG5pbXBvcnQgYnBsaXN0UGFyc2UgZnJvbSAnYnBsaXN0LXBhcnNlcic7XG5pbXBvcnQgZnMgZnJvbSAnLi9mcyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuY29uc3QgQlBMSVNUX0lERU5USUZJRVIgPSB7XG4gIEJVRkZFUjogQnVmZmVyLmZyb20oJ2JwbGlzdDAwJyksXG4gIFRFWFQ6ICdicGxpc3QwMCdcbn07XG5jb25zdCBQTElTVF9JREVOVElGSUVSID0ge1xuICBCVUZGRVI6IEJ1ZmZlci5mcm9tKCc8JyksXG4gIFRFWFQ6ICc8J1xufTtcblxuLy8gWE1MIFBsaXN0IGxpYnJhcnkgaGVscGVyXG5hc3luYyBmdW5jdGlvbiBwYXJzZVhtbFBsaXN0RmlsZSAocGxpc3RGaWxlbmFtZSkge1xuICBsZXQgeG1sQ29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHBsaXN0RmlsZW5hbWUsICd1dGY4Jyk7XG4gIHJldHVybiB4bWxwbGlzdC5wYXJzZSh4bWxDb250ZW50KTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBmaWxlIGluIHhtbCBvciBiaW5hcnkgZm9ybWF0IG9mIHBsaXN0XG4gKiBAcGFyYW0ge3N0cmluZ30gcGxpc3QgVGhlIHBsaXN0IGZpbGUgcGF0aFxuICogQHBhcmFtIHtib29sZWFufSBtdXN0RXhpc3QgSWYgc2V0IHRvIGZhbHNlLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHF1aWV0IElmIHNldCB0byBmYWxzZSwgdGhlIHBsaXN0IHBhdGggd2lsbCBiZSBsb2dnZWQgaW4gZGVidWcgbGV2ZWxcbiAqIEByZXR1cm5zIHtPYmplY3R9IHBhcnNlZCBwbGlzdCBKUyBPYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGFyc2VQbGlzdEZpbGUgKHBsaXN0LCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgLy8gaGFuZGxlIG5vbmV4aXN0YW50IGZpbGVcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMocGxpc3QpKSB7XG4gICAgaWYgKG11c3RFeGlzdCkge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYFBsaXN0IGZpbGUgZG9lc24ndCBleGlzdDogJyR7cGxpc3R9J2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZGVidWcoYFBsaXN0IGZpbGUgJyR7cGxpc3R9JyBkb2VzIG5vdCBleGlzdC4gUmV0dXJuaW5nIGFuIGVtcHR5IHBsaXN0LmApO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGxldCBvYmogPSB7fTtcbiAgbGV0IHR5cGUgPSAnYmluYXJ5JztcbiAgdHJ5IHtcbiAgICBvYmogPSBhd2FpdCBicGxpc3RQYXJzZS5wYXJzZUZpbGUocGxpc3QpO1xuICAgIGlmIChvYmoubGVuZ3RoKSB7XG4gICAgICBvYmogPSBvYmpbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmluYXJ5IGZpbGUgJyR7cGxpc3R9JycgYXBwZWFycyB0byBiZSBlbXB0eWApO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IGF3YWl0IHBhcnNlWG1sUGxpc3RGaWxlKHBsaXN0KTtcbiAgICAgIHR5cGUgPSAneG1sJztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgcGxpc3QgZmlsZSAnJHtwbGlzdH0nIGFzIFhNTDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXF1aWV0KSB7XG4gICAgbG9nLmRlYnVnKGBQYXJzZWQgcGxpc3QgZmlsZSAnJHtwbGlzdH0nIGFzICR7dHlwZX1gKTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgYSBwbGlzdCBmaWxlIHdpdGggdGhlIGdpdmVuIGZpZWxkc1xuICogQHBhcmFtIHtzdHJpbmd9IHBsaXN0IFRoZSBwbGlzdCBmaWxlIHBhdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSB1cGRhdGVkRmllbGRzIFRoZSB1cGRhdGVkIGZpZWxkcy12YWx1ZSBwYWlyc1xuICogQHBhcmFtIHtib29sZWFufSBiaW5hcnkgSWYgc2V0IHRvIGZhbHNlLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgYXMgYSB4bWwgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVzdEV4aXN0IElmIHNldCB0byBmYWxzZSwgdGhpcyBtZXRob2Qgd2lsbCB1cGRhdGUgYW4gZW1wdHkgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcXVpZXQgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcGxpc3QgcGF0aCB3aWxsIGJlIGxvZ2dlZCBpbiBkZWJ1ZyBsZXZlbFxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVQbGlzdEZpbGUgKHBsaXN0LCB1cGRhdGVkRmllbGRzLCBiaW5hcnkgPSB0cnVlLCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgbGV0IG9iajtcbiAgdHJ5IHtcbiAgICBvYmogPSBhd2FpdCBwYXJzZVBsaXN0RmlsZShwbGlzdCwgbXVzdEV4aXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCB1cGRhdGUgcGxpc3Q6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgXy5leHRlbmQob2JqLCB1cGRhdGVkRmllbGRzKTtcbiAgbGV0IG5ld1BsaXN0ID0gYmluYXJ5ID8gYnBsaXN0Q3JlYXRlKG9iaikgOiB4bWxwbGlzdC5idWlsZChvYmopO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwbGlzdCwgbmV3UGxpc3QpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IHNhdmUgcGxpc3Q6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgaWYgKCFxdWlldCkge1xuICAgIGxvZy5kZWJ1ZyhgV3JvdGUgcGxpc3QgZmlsZSAnJHtwbGlzdH0nYCk7XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGJpbmFyeSBwbGlzdCBCdWZmZXIgZnJvbSBhbiBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgdG8gYmUgdHVybmVkIGludG8gYSBiaW5hcnkgcGxpc3RcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHBsaXN0IGluIHRoZSBmb3JtIG9mIGEgYmluYXJ5IGJ1ZmZlclxuICovXG5mdW5jdGlvbiBjcmVhdGVCaW5hcnlQbGlzdCAoZGF0YSkge1xuICByZXR1cm4gYnBsaXN0Q3JlYXRlKGRhdGEpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIEJ1ZmZlciBpbnRvIGFuIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgVGhlIGJlZmZlciBvZiBhIGJpbmFyeSBwbGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZUJpbmFyeVBsaXN0IChkYXRhKSB7XG4gIHJldHVybiBicGxpc3RQYXJzZS5wYXJzZUJ1ZmZlcihkYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0WG1sUGxpc3QgKGRhdGEpIHtcbiAgaWYgKF8uaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5zdGFydHNXaXRoKFBMSVNUX0lERU5USUZJRVIuVEVYVCkpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBpZiAoXy5pc0J1ZmZlcihkYXRhKSAmJiBQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIFBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmxlbmd0aCkgPT09IDApIHtcbiAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRCaW5hcnlQbGlzdCAoZGF0YSkge1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLnN0YXJ0c1dpdGgoQlBMSVNUX0lERU5USUZJRVIuVEVYVCkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YSk7XG4gIH1cblxuICBpZiAoXy5pc0J1ZmZlcihkYXRhKSAmJiBCUExJU1RfSURFTlRJRklFUi5CVUZGRVIuY29tcGFyZShkYXRhLCAwLCBCUExJU1RfSURFTlRJRklFUi5CVUZGRVIubGVuZ3RoKSA9PT0gMCkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgSlMgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYmluYXJ5IFNldCBpdCB0byB0cnVlIGZvciBhIGJpbmFyeSBwbGlzdFxuICogQHJldHVybnMge3N0cmluZ3xCdWZmZXJ9IHJldHVybnMgYSBidWZmZXIgb3IgYSBzdHJpbmcgaW4gcmVzcGVjdCB0byB0aGUgYmluYXJ5IHBhcmFtZXRlclxuICovXG5mdW5jdGlvbiBjcmVhdGVQbGlzdCAob2JqZWN0LCBiaW5hcnkgPSBmYWxzZSkge1xuICBpZiAoYmluYXJ5KSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJpbmFyeVBsaXN0KG9iamVjdCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHhtbHBsaXN0LmJ1aWxkKG9iamVjdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgYW4gYnVmZmVyIG9yIGEgc3RyaW5nIHRvIGEgSlMgb2JqZWN0IGEgcGxpc3QgZnJvbSBhbiBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcn0gZGF0YSBUaGUgcGxpc3QgaW4gdGhlIGZvcm0gb2Ygc3RyaW5nIG9yIEJ1ZmZlclxuICogQHJldHVybnMge09iamVjdH0gcGFyc2VkIHBsaXN0IEpTIE9iamVjdFxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwbGlzdCB0eXBlIGlzIHVua25vd25cbiAqL1xuZnVuY3Rpb24gcGFyc2VQbGlzdCAoZGF0YSkge1xuICBsZXQgdGV4dFBsaXN0ID0gZ2V0WG1sUGxpc3QoZGF0YSk7XG4gIGlmICh0ZXh0UGxpc3QpIHtcbiAgICByZXR1cm4geG1scGxpc3QucGFyc2UodGV4dFBsaXN0KTtcbiAgfVxuXG4gIGxldCBiaW5hcnlQbGlzdCA9IGdldEJpbmFyeVBsaXN0KGRhdGEpO1xuICBpZiAoYmluYXJ5UGxpc3QpIHtcbiAgICByZXR1cm4gcGFyc2VCaW5hcnlQbGlzdChiaW5hcnlQbGlzdClbMF07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSBvZiBwbGlzdCwgZGF0YTogJHtkYXRhLnRvU3RyaW5nKCl9YCk7XG59XG5cbmV4cG9ydCB7IHBhcnNlUGxpc3RGaWxlLCBwYXJzZVBsaXN0LCBjcmVhdGVQbGlzdCwgdXBkYXRlUGxpc3RGaWxlLCBjcmVhdGVCaW5hcnlQbGlzdCwgcGFyc2VCaW5hcnlQbGlzdCB9O1xuIl19
160
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wbGlzdC5qcyJdLCJuYW1lcyI6WyJCUExJU1RfSURFTlRJRklFUiIsIkJVRkZFUiIsIkJ1ZmZlciIsImZyb20iLCJURVhUIiwiUExJU1RfSURFTlRJRklFUiIsInBhcnNlWG1sUGxpc3RGaWxlIiwicGxpc3RGaWxlbmFtZSIsInhtbENvbnRlbnQiLCJmcyIsInJlYWRGaWxlIiwieG1scGxpc3QiLCJwYXJzZSIsInBhcnNlUGxpc3RGaWxlIiwicGxpc3QiLCJtdXN0RXhpc3QiLCJxdWlldCIsImV4aXN0cyIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJkZWJ1ZyIsIm9iaiIsInR5cGUiLCJicGxpc3RQYXJzZSIsInBhcnNlRmlsZSIsImxlbmd0aCIsIkVycm9yIiwiaWduIiwiZXJyIiwibWVzc2FnZSIsInVwZGF0ZVBsaXN0RmlsZSIsInVwZGF0ZWRGaWVsZHMiLCJiaW5hcnkiLCJfIiwiZXh0ZW5kIiwibmV3UGxpc3QiLCJidWlsZCIsIndyaXRlRmlsZSIsImNyZWF0ZUJpbmFyeVBsaXN0IiwiZGF0YSIsInBhcnNlQmluYXJ5UGxpc3QiLCJwYXJzZUJ1ZmZlciIsImdldFhtbFBsaXN0IiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwiaXNCdWZmZXIiLCJjb21wYXJlIiwidG9TdHJpbmciLCJnZXRCaW5hcnlQbGlzdCIsImNyZWF0ZVBsaXN0Iiwib2JqZWN0IiwicGFyc2VQbGlzdCIsInRleHRQbGlzdCIsImJpbmFyeVBsaXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsaUJBQWlCLEdBQUc7QUFDeEJDLEVBQUFBLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBWixDQURnQjtBQUV4QkMsRUFBQUEsSUFBSSxFQUFFO0FBRmtCLENBQTFCO0FBSUEsTUFBTUMsZ0JBQWdCLEdBQUc7QUFDdkJKLEVBQUFBLE1BQU0sRUFBRUMsTUFBTSxD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QyxNQUF0QixFQUE4QmxCLE1BQU0sR0FBRyxLQUF2QyxFQUE4QztBQUM1QyxNQUFJQSxNQUFKLEVBQVk7QUFDVixXQUFPTSxpQkFBaUIsQ0FBQ1ksTUFBRCxDQUF4QjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU92QyxlQUFTeUIsS0FBVCxDQUFlYyxNQUFmLENBQVA7QUFDRDtBQUNGOztBQVFELFNBQVNDLFVBQVQsQ0FBcUJaLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlhLFNBQVMsR0FBR1YsV0FBVyxDQUFDSCxJQUFELENBQTNCOztBQUNBLE1BQUlhLFNBQUosRUFBZTtBQUNiLFdBQU96QyxlQUFTQyxLQUFULENBQWV3QyxTQUFmLENBQVA7QUFDRDs7QUFFRCxNQUFJQyxXQUFXLEdBQUdMLGNBQWMsQ0FBQ1QsSUFBRCxDQUFoQzs7QUFDQSxNQUFJYyxXQUFKLEVBQWlCO0FBQ2YsV0FBT2IsZ0JBQWdCLENBQUNhLFdBQUQsQ0FBaEIsQ0FBOEIsQ0FBOUIsQ0FBUDtBQUNEOztBQUVELFFBQU0sSUFBSTNCLEtBQUosQ0FBVyxnQ0FBK0JhLElBQUksQ0FBQ1EsUUFBTCxFQUFnQixFQUExRCxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeG1scGxpc3QgZnJvbSAncGxpc3QnO1xuaW1wb3J0IGJwbGlzdENyZWF0ZSBmcm9tICdicGxpc3QtY3JlYXRvcic7XG5pbXBvcnQgYnBsaXN0UGFyc2UgZnJvbSAnYnBsaXN0LXBhcnNlcic7XG5pbXBvcnQgZnMgZnJvbSAnLi9mcyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuY29uc3QgQlBMSVNUX0lERU5USUZJRVIgPSB7XG4gIEJVRkZFUjogQnVmZmVyLmZyb20oJ2JwbGlzdDAwJyksXG4gIFRFWFQ6ICdicGxpc3QwMCdcbn07XG5jb25zdCBQTElTVF9JREVOVElGSUVSID0ge1xuICBCVUZGRVI6IEJ1ZmZlci5mcm9tKCc8JyksXG4gIFRFWFQ6ICc8J1xufTtcblxuLy8gWE1MIFBsaXN0IGxpYnJhcnkgaGVscGVyXG5hc3luYyBmdW5jdGlvbiBwYXJzZVhtbFBsaXN0RmlsZSAocGxpc3RGaWxlbmFtZSkge1xuICBsZXQgeG1sQ29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHBsaXN0RmlsZW5hbWUsICd1dGY4Jyk7XG4gIHJldHVybiB4bWxwbGlzdC5wYXJzZSh4bWxDb250ZW50KTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBmaWxlIGluIHhtbCBvciBiaW5hcnkgZm9ybWF0IG9mIHBsaXN0XG4gKiBAcGFyYW0ge3N0cmluZ30gcGxpc3QgVGhlIHBsaXN0IGZpbGUgcGF0aFxuICogQHBhcmFtIHtib29sZWFufSBtdXN0RXhpc3QgSWYgc2V0IHRvIGZhbHNlLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHF1aWV0IElmIHNldCB0byBmYWxzZSwgdGhlIHBsaXN0IHBhdGggd2lsbCBiZSBsb2dnZWQgaW4gZGVidWcgbGV2ZWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IHBhcnNlZCBwbGlzdCBKUyBPYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGFyc2VQbGlzdEZpbGUgKHBsaXN0LCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgLy8gaGFuZGxlIG5vbmV4aXN0YW50IGZpbGVcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMocGxpc3QpKSB7XG4gICAgaWYgKG11c3RFeGlzdCkge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYFBsaXN0IGZpbGUgZG9lc24ndCBleGlzdDogJyR7cGxpc3R9J2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZGVidWcoYFBsaXN0IGZpbGUgJyR7cGxpc3R9JyBkb2VzIG5vdCBleGlzdC4gUmV0dXJuaW5nIGFuIGVtcHR5IHBsaXN0LmApO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGxldCBvYmogPSB7fTtcbiAgbGV0IHR5cGUgPSAnYmluYXJ5JztcbiAgdHJ5IHtcbiAgICBvYmogPSBhd2FpdCBicGxpc3RQYXJzZS5wYXJzZUZpbGUocGxpc3QpO1xuICAgIGlmIChvYmoubGVuZ3RoKSB7XG4gICAgICBvYmogPSBvYmpbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmluYXJ5IGZpbGUgJyR7cGxpc3R9JycgYXBwZWFycyB0byBiZSBlbXB0eWApO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IGF3YWl0IHBhcnNlWG1sUGxpc3RGaWxlKHBsaXN0KTtcbiAgICAgIHR5cGUgPSAneG1sJztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgcGxpc3QgZmlsZSAnJHtwbGlzdH0nIGFzIFhNTDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXF1aWV0KSB7XG4gICAgbG9nLmRlYnVnKGBQYXJzZWQgcGxpc3QgZmlsZSAnJHtwbGlzdH0nIGFzICR7dHlwZX1gKTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgYSBwbGlzdCBmaWxlIHdpdGggdGhlIGdpdmVuIGZpZWxkc1xuICogQHBhcmFtIHtzdHJpbmd9IHBsaXN0IFRoZSBwbGlzdCBmaWxlIHBhdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSB1cGRhdGVkRmllbGRzIFRoZSB1cGRhdGVkIGZpZWxkcy12YWx1ZSBwYWlyc1xuICogQHBhcmFtIHtib29sZWFufSBiaW5hcnkgSWYgc2V0IHRvIGZhbHNlLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgYXMgYSB4bWwgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVzdEV4aXN0IElmIHNldCB0byBmYWxzZSwgdGhpcyBtZXRob2Qgd2lsbCB1cGRhdGUgYW4gZW1wdHkgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcXVpZXQgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcGxpc3QgcGF0aCB3aWxsIGJlIGxvZ2dlZCBpbiBkZWJ1ZyBsZXZlbFxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVQbGlzdEZpbGUgKHBsaXN0LCB1cGRhdGVkRmllbGRzLCBiaW5hcnkgPSB0cnVlLCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgbGV0IG9iajtcbiAgdHJ5IHtcbiAgICBvYmogPSBhd2FpdCBwYXJzZVBsaXN0RmlsZShwbGlzdCwgbXVzdEV4aXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCB1cGRhdGUgcGxpc3Q6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgXy5leHRlbmQob2JqLCB1cGRhdGVkRmllbGRzKTtcbiAgbGV0IG5ld1BsaXN0ID0gYmluYXJ5ID8gYnBsaXN0Q3JlYXRlKG9iaikgOiB4bWxwbGlzdC5idWlsZChvYmopO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwbGlzdCwgbmV3UGxpc3QpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IHNhdmUgcGxpc3Q6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgaWYgKCFxdWlldCkge1xuICAgIGxvZy5kZWJ1ZyhgV3JvdGUgcGxpc3QgZmlsZSAnJHtwbGlzdH0nYCk7XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGJpbmFyeSBwbGlzdCBCdWZmZXIgZnJvbSBhbiBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgdG8gYmUgdHVybmVkIGludG8gYSBiaW5hcnkgcGxpc3RcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHBsaXN0IGluIHRoZSBmb3JtIG9mIGEgYmluYXJ5IGJ1ZmZlclxuICovXG5mdW5jdGlvbiBjcmVhdGVCaW5hcnlQbGlzdCAoZGF0YSkge1xuICByZXR1cm4gYnBsaXN0Q3JlYXRlKGRhdGEpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIEJ1ZmZlciBpbnRvIGFuIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgVGhlIGJlZmZlciBvZiBhIGJpbmFyeSBwbGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZUJpbmFyeVBsaXN0IChkYXRhKSB7XG4gIC8vIHRoaXMgZnVuY3Rpb24gZXhpc3RzLCBidXQgaXMgbm90IGluIHRoZSB0eXBlIGRlY2xhcmF0aW9ucy5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICByZXR1cm4gYnBsaXN0UGFyc2UucGFyc2VCdWZmZXIoZGF0YSk7XG59XG5cbmZ1bmN0aW9uIGdldFhtbFBsaXN0IChkYXRhKSB7XG4gIGlmIChfLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEuc3RhcnRzV2l0aChQTElTVF9JREVOVElGSUVSLlRFWFQpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKF8uaXNCdWZmZXIoZGF0YSkgJiYgUExJU1RfSURFTlRJRklFUi5CVUZGRVIuY29tcGFyZShkYXRhLCAwLCBQTElTVF9JREVOVElGSUVSLkJVRkZFUi5sZW5ndGgpID09PSAwKSB7XG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5UGxpc3QgKGRhdGEpIHtcbiAgaWYgKF8uaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5zdGFydHNXaXRoKEJQTElTVF9JREVOVElGSUVSLlRFWFQpKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRhdGEpO1xuICB9XG5cbiAgaWYgKF8uaXNCdWZmZXIoZGF0YSkgJiYgQlBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmNvbXBhcmUoZGF0YSwgMCwgQlBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmxlbmd0aCkgPT09IDApIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGxpc3QgZnJvbSBhbiBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIEpTIG9iamVjdCB0byBiZSB0dXJuZWQgaW50byBhIHBsaXN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpbmFyeSBTZXQgaXQgdG8gdHJ1ZSBmb3IgYSBiaW5hcnkgcGxpc3RcbiAqIEByZXR1cm5zIHtzdHJpbmd8QnVmZmVyfSByZXR1cm5zIGEgYnVmZmVyIG9yIGEgc3RyaW5nIGluIHJlc3BlY3QgdG8gdGhlIGJpbmFyeSBwYXJhbWV0ZXJcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUGxpc3QgKG9iamVjdCwgYmluYXJ5ID0gZmFsc2UpIHtcbiAgaWYgKGJpbmFyeSkge1xuICAgIHJldHVybiBjcmVhdGVCaW5hcnlQbGlzdChvYmplY3QpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4bWxwbGlzdC5idWlsZChvYmplY3QpO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGFuIGJ1ZmZlciBvciBhIHN0cmluZyB0byBhIEpTIG9iamVjdCBhIHBsaXN0IGZyb20gYW4gb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ9IGRhdGEgVGhlIHBsaXN0IGluIHRoZSBmb3JtIG9mIHN0cmluZyBvciBCdWZmZXJcbiAqIEByZXR1cm5zIHtPYmplY3R9IHBhcnNlZCBwbGlzdCBKUyBPYmplY3RcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcGxpc3QgdHlwZSBpcyB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUGxpc3QgKGRhdGEpIHtcbiAgbGV0IHRleHRQbGlzdCA9IGdldFhtbFBsaXN0KGRhdGEpO1xuICBpZiAodGV4dFBsaXN0KSB7XG4gICAgcmV0dXJuIHhtbHBsaXN0LnBhcnNlKHRleHRQbGlzdCk7XG4gIH1cblxuICBsZXQgYmluYXJ5UGxpc3QgPSBnZXRCaW5hcnlQbGlzdChkYXRhKTtcbiAgaWYgKGJpbmFyeVBsaXN0KSB7XG4gICAgcmV0dXJuIHBhcnNlQmluYXJ5UGxpc3QoYmluYXJ5UGxpc3QpWzBdO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgb2YgcGxpc3QsIGRhdGE6ICR7ZGF0YS50b1N0cmluZygpfWApO1xufVxuXG5leHBvcnQgeyBwYXJzZVBsaXN0RmlsZSwgcGFyc2VQbGlzdCwgY3JlYXRlUGxpc3QsIHVwZGF0ZVBsaXN0RmlsZSwgY3JlYXRlQmluYXJ5UGxpc3QsIHBhcnNlQmluYXJ5UGxpc3QgfTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export function getProcessIds(appName: any): Promise<any[]>;
2
+ export function killProcess(appName: any, force?: boolean): Promise<void>;
3
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../lib/process.js"],"names":[],"mappings":"AAWA,4DAYC;AAED,0EAgBC"}
@@ -0,0 +1,7 @@
1
+ export function isWindows(): boolean;
2
+ export function isMac(): boolean;
3
+ export function isLinux(): boolean;
4
+ export function isOSWin64(): boolean;
5
+ export function arch(): Promise<"32" | "64" | undefined>;
6
+ export function macOsxVersion(): Promise<string>;
7
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../lib/system.js"],"names":[],"mappings":"AAMA,qCAEC;AAED,iCAEC;AAED,mCAEC;AAED,qCAEC;AAED,yDAQC;AAED,iDAaC"}
@@ -0,0 +1,63 @@
1
+ export type Affixes = {
2
+ /**
3
+ * - prefix of the temp directory name
4
+ */
5
+ prefix?: string | undefined;
6
+ /**
7
+ * - suffix of the temp directory name
8
+ */
9
+ suffix?: string | undefined;
10
+ };
11
+ export type OpenedAffixes = {
12
+ /**
13
+ * - The path to file
14
+ */
15
+ path: string;
16
+ /**
17
+ * - The file descriptor opened
18
+ */
19
+ fd: number;
20
+ };
21
+ /**
22
+ * @typedef OpenedAffixes
23
+ * @property {string} path - The path to file
24
+ * @property {number} fd - The file descriptor opened
25
+ */
26
+ /**
27
+ * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR
28
+ * with arbitrary prefix/suffix for the directory name and return it as open.
29
+ *
30
+ * @param {Affixes} affixes
31
+ * @returns {Promise<OpenedAffixes>}
32
+ */
33
+ export function open(affixes: Affixes): Promise<OpenedAffixes>;
34
+ /**
35
+ * @typedef Affixes
36
+ * @property {string} [prefix] - prefix of the temp directory name
37
+ * @property {string} [suffix] - suffix of the temp directory name
38
+ */
39
+ /**
40
+ * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR
41
+ * with arbitrary prefix/suffix for the directory name.
42
+ *
43
+ * @param {string|Affixes} rawAffixes
44
+ * @param {string} [defaultPrefix]
45
+ * @returns {Promise<string>} A path to the temporary directory with rawAffixes and defaultPrefix
46
+ */
47
+ export function path(rawAffixes: string | Affixes, defaultPrefix?: string | undefined): Promise<string>;
48
+ /**
49
+ * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR.
50
+ * e.g.
51
+ * - No `process.env.APPIUM_TMP_DIR`: `/var/folders/34/2222sh8n27d6rcp7jqlkw8km0000gn/T/xxxxxxxx.yyyy`
52
+ * - With `process.env.APPIUM_TMP_DIR = '/path/to/root'`: `/path/to/root/xxxxxxxx.yyyy`
53
+ *
54
+ * @returns {Promise<string>} A path to the temporary directory
55
+ */
56
+ export function openDir(): Promise<string>;
57
+ /**
58
+ * Returns a path to a temporary directory whcih is defined as static in the same process
59
+ *
60
+ * @returns {Promise<string>} A temp directory path whcih is defined as static in the same process
61
+ */
62
+ export function staticDir(): Promise<string>;
63
+ //# sourceMappingURL=tempdir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempdir.d.ts","sourceRoot":"","sources":["../../lib/tempdir.js"],"names":[],"mappings":";;;;;;;;;;;;;;UAyDc,MAAM;;;;QACN,MAAM;;AAHpB;;;;GAIG;AAEH;;;;;;GAMG;AACH,8BAHW,OAAO,GACL,QAAQ,aAAa,CAAC,CAWlC;AA3CD;;;;GAIG;AAEH;;;;;;;GAOG;AACH,iCAJW,MAAM,GAAC,OAAO,uCAEZ,QAAQ,MAAM,CAAC,CAO3B;AA5CD;;;;;;;GAOG;AACH,2BAFa,QAAQ,MAAM,CAAC,CAiB3B;AAoFD;;;;GAIG;AACH,6BAFa,QAAQ,MAAM,CAAC,CAI3B"}
@@ -50,15 +50,12 @@ async function open(affixes) {
50
50
  fd
51
51
  };
52
52
  } catch (err) {
53
- _logger.default.errorAndThrow(err);
53
+ return _logger.default.errorAndThrow(err);
54
54
  }
55
55
  }
56
56
 
57
57
  function parseAffixes(rawAffixes, defaultPrefix) {
58
- let affixes = {
59
- prefix: null,
60
- suffix: null
61
- };
58
+ let affixes = {};
62
59
 
63
60
  if (rawAffixes) {
64
61
  switch (typeof rawAffixes) {
@@ -88,4 +85,4 @@ exports.openDir = openDir;
88
85
  async function staticDir() {
89
86
  return _static;
90
87
  }
91
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90ZW1wZGlyLmpzIl0sIm5hbWVzIjpbIlJEV1JfRVhDTCIsImNuc3QiLCJPX0NSRUFUIiwiT19UUlVOQyIsIk9fUkRXUiIsIk9fRVhDTCIsInRlbXBEaXIiLCJub3ciLCJEYXRlIiwiZmlsZVBhdGgiLCJub2RlUGF0aCIsImpvaW4iLCJwcm9jZXNzIiwiZW52IiwiQVBQSVVNX1RNUF9ESVIiLCJvcyIsInRtcGRpciIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwicGlkIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwiZnMiLCJta2RpciIsInBhdGgiLCJyYXdBZmZpeGVzIiwiZGVmYXVsdFByZWZpeCIsImFmZml4ZXMiLCJwYXJzZUFmZml4ZXMiLCJuYW1lIiwicHJlZml4Iiwic3VmZml4IiwidGVtcERpcmVjdG9yeSIsIm9wZW4iLCJmZCIsImVyciIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJFcnJvciIsIl9zdGF0aWMiLCJvcGVuRGlyIiwic3RhdGljRGlyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFNBQVMsR0FBR0MsbUJBQUtDLE9BQUwsR0FBZUQsbUJBQUtFLE9BQXBCLEdBQThCRixtQkFBS0csTUFBbkMsR0FBNENILG1CQUFLSSxNQUFuRTs7QUFVQSxlQUFlQyxPQUFmLEdBQTBCO0FBQ3hCLFFBQU1DLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7O0FBQ0EsUUFBTUMsUUFBUSxHQUFHQyxjQUFTQyxJQUFULENBQWNDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxjQUFaLElBQThCQyxZQUFHQyxNQUFILEVBQTVDLEVBQ2YsQ0FDRVQsR0FBRyxDQUFDVSxXQUFKLEVBREYsRUFDcUJWLEdBQUcsQ0FBQ1csUUFBSixFQURyQixFQUNxQ1gsR0FBRyxDQUFDWSxPQUFKLEVBRHJDLEVBRUUsR0FGRixFQUdFUCxPQUFPLENBQUNRLEdBSFYsRUFJRSxHQUpGLEVBS0UsQ0FBQ0MsSUFBSSxDQUFDQyxNQUFMLEtBQWdCLFdBQWhCLEdBQThCLENBQS9CLEVBQWtDQyxRQUFsQyxDQUEyQyxFQUEzQyxDQUxGLEVBTUVaLElBTkYsQ0FNTyxFQU5QLENBRGUsQ0FBakI7O0FBVUEsUUFBTWEsWUFBR0MsS0FBSCxDQUFTaEIsUUFBVCxDQUFOO0FBRUEsU0FBT0EsUUFBUDtBQUNEOztBQWdCRCxlQUFlaUIsSUFBZixDQUFxQkMsVUFBckIsRUFBaUNDLGFBQWpDLEVBQWdEO0FBQzlDLFFBQU1DLE9BQU8sR0FBR0MsWUFBWSxDQUFDSCxVQUFELEVBQWFDLGFBQWIsQ0FBNUI7QUFDQSxRQUFNRyxJQUFJLEdBQUksR0FBRUYsT0FBTyxDQUFDRyxNQUFSLElBQWtCLEVBQUcsR0FBRUgsT0FBTyxDQUFDSSxNQUFSLElBQWtCLEVBQUcsRUFBNUQ7QUFDQSxRQUFNQyxhQUFhLEdBQUcsTUFBTTVCLE9BQU8sRUFBbkM7QUFDQSxTQUFPSSxjQUFTQyxJQUFULENBQWN1QixhQUFkLEVBQTZCSCxJQUE3QixDQUFQO0FBQ0Q7O0FBZUQsZUFBZUksSUFBZixDQUFxQk4sT0FBckIsRUFBOEI7QUFDNUIsUUFBTXBCLFFBQVEsR0FBRyxNQUFNaUIsSUFBSSxDQUFDRyxPQUFELEVBQVUsSUFBVixDQUEzQjs7QUFDQSxNQUFJO0FBQ0YsUUFBSU8sRUFBRSxHQUFHLE1BQU1aLFlBQUdXLElBQUgsQ0FBUTFCLFFBQVIsRUFBa0JULFNBQWxCLEVBQTZCLEtBQTdCLENBQWY7QUFFQSxXQUFPO0FBQUMwQixNQUFBQSxJQUFJLEVBQUVqQixRQUFQO0FBQWlCMkIsTUFBQUE7QUFBakIsS0FBUDtBQUNELEdBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVk7QUFDWkMsb0JBQUlDLGFBQUosQ0FBa0JGLEdBQWxCO0FBQ0Q7QUFDRjs7QUFVRCxTQUFTUCxZQUFULENBQXVCSCxVQUF2QixFQUFtQ0MsYUFBbkMsRUFBa0Q7QUFDaEQsTUFBSUMsT0FBTyxHQUFHO0FBQUNHLElBQUFBLE1BQU0sRUFBRSxJQUFUO0FBQWVDLElBQUFBLE1BQU0sRUFBRTtBQUF2QixHQUFkOztBQUNBLE1BQUlOLFVBQUosRUFBZ0I7QUFDZCxZQUFRLE9BQU9BLFVBQWY7QUFDRSxXQUFLLFFBQUw7QUFDRUUsUUFBQUEsT0FBTyxDQUFDRyxNQUFSLEdBQWlCTCxVQUFqQjtBQUNBOztBQUNGLFdBQUssUUFBTDtBQUNFRSxRQUFBQSxPQUFPLEdBQUdGLFVBQVY7QUFDQTs7QUFDRjtBQUNFLGNBQU0sSUFBSWEsS0FBSixDQUFXLDhCQUE2QlgsT0FBUSxFQUFoRCxDQUFOO0FBUko7QUFVRCxHQVhELE1BV087QUFDTEEsSUFBQUEsT0FBTyxDQUFDRyxNQUFSLEdBQWlCSixhQUFqQjtBQUNEOztBQUNELFNBQU9DLE9BQVA7QUFDRDs7QUFFRCxNQUFNWSxPQUFPLEdBQUduQyxPQUFPLEVBQXZCOztBQU9BLE1BQU1vQyxPQUFPLEdBQUdwQyxPQUFoQjs7O0FBT0EsZUFBZXFDLFNBQWYsR0FBNEI7QUFDMUIsU0FBT0YsT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogVGhpcyBsaWJyYXJ5IGlzIG9yaWdpbmF0ZWQgZnJvbSB0ZW1wLmpzIGF0IGh0dHA6Ly9naXRodWIuY29tL2JydWNlL25vZGUtdGVtcCAqL1xuaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBub2RlUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBjbnN0IGZyb20gJ2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3QgUkRXUl9FWENMID0gY25zdC5PX0NSRUFUIHwgY25zdC5PX1RSVU5DIHwgY25zdC5PX1JEV1IgfCBjbnN0Lk9fRVhDTDtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gb3MudGVtcGRpcigpIG9yIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSLlxuICogZS5nLlxuICogLSBObyBgcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVJgOiBgL3Zhci9mb2xkZXJzLzM0LzIyMjJzaDhuMjdkNnJjcDdqcWxrdzhrbTAwMDBnbi9UL3h4eHh4eHh4Lnl5eXlgXG4gKiAtIFdpdGggYHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSID0gJy9wYXRoL3RvL3Jvb3QnYDogYC9wYXRoL3RvL3Jvb3QveHh4eHh4eHgueXl5eWBcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBBIHBhdGggdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdGVtcERpciAoKSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGZpbGVQYXRoID0gbm9kZVBhdGguam9pbihwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUiB8fCBvcy50bXBkaXIoKSxcbiAgICBbXG4gICAgICBub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksXG4gICAgICAnLScsXG4gICAgICBwcm9jZXNzLnBpZCxcbiAgICAgICctJyxcbiAgICAgIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDAgKyAxKS50b1N0cmluZygzNiksXG4gICAgXS5qb2luKCcnKSk7XG4gIC8vIGNyZWF0ZXMgYSB0ZW1wIGRpcmVjdG9yeSB1c2luZyB0aGUgZGF0ZSBhbmQgYSByYW5kb20gc3RyaW5nXG5cbiAgYXdhaXQgZnMubWtkaXIoZmlsZVBhdGgpO1xuXG4gIHJldHVybiBmaWxlUGF0aDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBBZmZpeGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJlZml4IC0gcHJlZml4IG9mIHRoZSB0ZW1wIGRpcmVjdG9yeSBuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3VmZml4IC0gc3VmZml4IG9mIHRoZSB0ZW1wIGRpcmVjdG9yeSBuYW1lXG4gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gb3MudGVtcGRpcigpIG9yIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSXG4gKiB3aXRoIGFyYml0cmFyeSBwcmVmaXgvc3VmZml4IGZvciB0aGUgZGlyZWN0b3J5IG5hbWUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8QWZmaXhlc30gcmF3QWZmaXhlc1xuICogQHBhcmFtIHs/c3RyaW5nfSBkZWZhdWx0UHJlZml4XG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAgQSBwYXRoIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpdGggcmF3QWZmaXhlcyBhbmQgZGVmYXVsdFByZWZpeFxuICovXG5hc3luYyBmdW5jdGlvbiBwYXRoIChyYXdBZmZpeGVzLCBkZWZhdWx0UHJlZml4KSB7XG4gIGNvbnN0IGFmZml4ZXMgPSBwYXJzZUFmZml4ZXMocmF3QWZmaXhlcywgZGVmYXVsdFByZWZpeCk7XG4gIGNvbnN0IG5hbWUgPSBgJHthZmZpeGVzLnByZWZpeCB8fCAnJ30ke2FmZml4ZXMuc3VmZml4IHx8ICcnfWA7XG4gIGNvbnN0IHRlbXBEaXJlY3RvcnkgPSBhd2FpdCB0ZW1wRGlyKCk7XG4gIHJldHVybiBub2RlUGF0aC5qb2luKHRlbXBEaXJlY3RvcnksIG5hbWUpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIE9wZW5lZEFmZml4ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gZmlsZVxuICogQHByb3BlcnR5IHtpbnRlZ2VyfSBmZCAtIFRoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbmVkXG4gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gb3MudGVtcGRpcigpIG9yIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSXG4gKiB3aXRoIGFyYml0cmFyeSBwcmVmaXgvc3VmZml4IGZvciB0aGUgZGlyZWN0b3J5IG5hbWUgYW5kIHJldHVybiBpdCBhcyBvcGVuLlxuICpcbiAqIEBwYXJhbSB7QWZmaXhlc30gYWZmaXhlc1xuICogQHJldHVybnMge1Byb21pc2U8T3BlbmVkQWZmaXhlcz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9wZW4gKGFmZml4ZXMpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBhd2FpdCBwYXRoKGFmZml4ZXMsICdmLScpO1xuICB0cnkge1xuICAgIGxldCBmZCA9IGF3YWl0IGZzLm9wZW4oZmlsZVBhdGgsIFJEV1JfRVhDTCwgMG82MDApO1xuICAgIC8vIG9wZW5zIHRoZSBmaWxlIGluIG1vZGUgMzg0XG4gICAgcmV0dXJuIHtwYXRoOiBmaWxlUGF0aCwgZmR9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIFJldHVybnMgcHJlZml4L3N1ZmZpeCBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBZmZpeGVzfSByYXdBZmZpeGVzXG4gKiBAcGFyYW0gez9zdHJpbmd9IGRlZmF1bHRQcmVmaXhcbiAqIEByZXR1cm5zIHtBZmZpeGVzfVxuICovXG5mdW5jdGlvbiBwYXJzZUFmZml4ZXMgKHJhd0FmZml4ZXMsIGRlZmF1bHRQcmVmaXgpIHtcbiAgbGV0IGFmZml4ZXMgPSB7cHJlZml4OiBudWxsLCBzdWZmaXg6IG51bGx9O1xuICBpZiAocmF3QWZmaXhlcykge1xuICAgIHN3aXRjaCAodHlwZW9mIHJhd0FmZml4ZXMpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGFmZml4ZXMucHJlZml4ID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBhZmZpeGVzID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWZmaXggZGVjbGFyYXRpb246ICR7YWZmaXhlc31gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYWZmaXhlcy5wcmVmaXggPSBkZWZhdWx0UHJlZml4O1xuICB9XG4gIHJldHVybiBhZmZpeGVzO1xufVxuXG5jb25zdCBfc3RhdGljID0gdGVtcERpcigpO1xuXG4vKipcbiAqIFJldHVybnMgYSBuZXcgcGF0aCB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIG5ldyB0ZW1wRGlyKCkgaWYgdGVtcFJvb3REaXJlY3RvcnkgaXMgbm90IHByb3ZpZGVkXG4gKi9cbmNvbnN0IG9wZW5EaXIgPSB0ZW1wRGlyO1xuXG4vKipcbiAqIFJldHVybnMgYSBwYXRoIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGNpaCBpcyBkZWZpbmVkIGFzIHN0YXRpYyBpbiB0aGUgc2FtZSBwcm9jZXNzXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSB0ZW1wIGRpcmVjdG9yeSBwYXRoIHdoY2loIGlzIGRlZmluZWQgYXMgc3RhdGljIGluIHRoZSBzYW1lIHByb2Nlc3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhdGljRGlyICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHJldHVybiBfc3RhdGljO1xufVxuXG5leHBvcnQgeyBvcGVuLCBwYXRoLCBvcGVuRGlyLCBzdGF0aWNEaXIgfTtcbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90ZW1wZGlyLmpzIl0sIm5hbWVzIjpbIlJEV1JfRVhDTCIsImNuc3QiLCJPX0NSRUFUIiwiT19UUlVOQyIsIk9fUkRXUiIsIk9fRVhDTCIsInRlbXBEaXIiLCJub3ciLCJEYXRlIiwiZmlsZVBhdGgiLCJub2RlUGF0aCIsImpvaW4iLCJwcm9jZXNzIiwiZW52IiwiQVBQSVVNX1RNUF9ESVIiLCJvcyIsInRtcGRpciIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwicGlkIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwiZnMiLCJta2RpciIsInBhdGgiLCJyYXdBZmZpeGVzIiwiZGVmYXVsdFByZWZpeCIsImFmZml4ZXMiLCJwYXJzZUFmZml4ZXMiLCJuYW1lIiwicHJlZml4Iiwic3VmZml4IiwidGVtcERpcmVjdG9yeSIsIm9wZW4iLCJmZCIsImVyciIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJFcnJvciIsIl9zdGF0aWMiLCJvcGVuRGlyIiwic3RhdGljRGlyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFNBQVMsR0FBR0MsbUJBQUtDLE9BQUwsR0FBZUQsbUJBQUtFLE9BQXBCLEdBQThCRixtQkFBS0csTUFBbkMsR0FBNENILG1CQUFLSSxNQUFuRTs7QUFVQSxlQUFlQyxPQUFmLEdBQTBCO0FBQ3hCLFFBQU1DLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7O0FBQ0EsUUFBTUMsUUFBUSxHQUFHQyxjQUFTQyxJQUFULENBQWNDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxjQUFaLElBQThCQyxZQUFHQyxNQUFILEVBQTVDLEVBQ2YsQ0FDRVQsR0FBRyxDQUFDVSxXQUFKLEVBREYsRUFDcUJWLEdBQUcsQ0FBQ1csUUFBSixFQURyQixFQUNxQ1gsR0FBRyxDQUFDWSxPQUFKLEVBRHJDLEVBRUUsR0FGRixFQUdFUCxPQUFPLENBQUNRLEdBSFYsRUFJRSxHQUpGLEVBS0UsQ0FBQ0MsSUFBSSxDQUFDQyxNQUFMLEtBQWdCLFdBQWhCLEdBQThCLENBQS9CLEVBQWtDQyxRQUFsQyxDQUEyQyxFQUEzQyxDQUxGLEVBTUVaLElBTkYsQ0FNTyxFQU5QLENBRGUsQ0FBakI7O0FBVUEsUUFBTWEsWUFBR0MsS0FBSCxDQUFTaEIsUUFBVCxDQUFOO0FBRUEsU0FBT0EsUUFBUDtBQUNEOztBQWdCRCxlQUFlaUIsSUFBZixDQUFxQkMsVUFBckIsRUFBaUNDLGFBQWpDLEVBQWdEO0FBQzlDLFFBQU1DLE9BQU8sR0FBR0MsWUFBWSxDQUFDSCxVQUFELEVBQWFDLGFBQWIsQ0FBNUI7QUFDQSxRQUFNRyxJQUFJLEdBQUksR0FBRUYsT0FBTyxDQUFDRyxNQUFSLElBQWtCLEVBQUcsR0FBRUgsT0FBTyxDQUFDSSxNQUFSLElBQWtCLEVBQUcsRUFBNUQ7QUFDQSxRQUFNQyxhQUFhLEdBQUcsTUFBTTVCLE9BQU8sRUFBbkM7QUFDQSxTQUFPSSxjQUFTQyxJQUFULENBQWN1QixhQUFkLEVBQTZCSCxJQUE3QixDQUFQO0FBQ0Q7O0FBZUQsZUFBZUksSUFBZixDQUFxQk4sT0FBckIsRUFBOEI7QUFDNUIsUUFBTXBCLFFBQVEsR0FBRyxNQUFNaUIsSUFBSSxDQUFDRyxPQUFELEVBQVUsSUFBVixDQUEzQjs7QUFDQSxNQUFJO0FBQ0YsUUFBSU8sRUFBRSxHQUFHLE1BQU1aLFlBQUdXLElBQUgsQ0FBUTFCLFFBQVIsRUFBa0JULFNBQWxCLEVBQTZCLEtBQTdCLENBQWY7QUFFQSxXQUFPO0FBQUMwQixNQUFBQSxJQUFJLEVBQUVqQixRQUFQO0FBQWlCMkIsTUFBQUE7QUFBakIsS0FBUDtBQUNELEdBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixXQUFPQyxnQkFBSUMsYUFBSixDQUFrQkYsR0FBbEIsQ0FBUDtBQUNEO0FBQ0Y7O0FBVUQsU0FBU1AsWUFBVCxDQUF1QkgsVUFBdkIsRUFBbUNDLGFBQW5DLEVBQWtEO0FBRWhELE1BQUlDLE9BQU8sR0FBRyxFQUFkOztBQUNBLE1BQUlGLFVBQUosRUFBZ0I7QUFDZCxZQUFRLE9BQU9BLFVBQWY7QUFDRSxXQUFLLFFBQUw7QUFDRUUsUUFBQUEsT0FBTyxDQUFDRyxNQUFSLEdBQWlCTCxVQUFqQjtBQUNBOztBQUNGLFdBQUssUUFBTDtBQUNFRSxRQUFBQSxPQUFPLEdBQUdGLFVBQVY7QUFDQTs7QUFDRjtBQUNFLGNBQU0sSUFBSWEsS0FBSixDQUFXLDhCQUE2QlgsT0FBUSxFQUFoRCxDQUFOO0FBUko7QUFVRCxHQVhELE1BV087QUFDTEEsSUFBQUEsT0FBTyxDQUFDRyxNQUFSLEdBQWlCSixhQUFqQjtBQUNEOztBQUNELFNBQU9DLE9BQVA7QUFDRDs7QUFFRCxNQUFNWSxPQUFPLEdBQUduQyxPQUFPLEVBQXZCOztBQU9BLE1BQU1vQyxPQUFPLEdBQUdwQyxPQUFoQjs7O0FBT0EsZUFBZXFDLFNBQWYsR0FBNEI7QUFDMUIsU0FBT0YsT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogVGhpcyBsaWJyYXJ5IGlzIG9yaWdpbmF0ZWQgZnJvbSB0ZW1wLmpzIGF0IGh0dHA6Ly9naXRodWIuY29tL2JydWNlL25vZGUtdGVtcCAqL1xuaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBub2RlUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBjbnN0IGZyb20gJ2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3QgUkRXUl9FWENMID0gY25zdC5PX0NSRUFUIHwgY25zdC5PX1RSVU5DIHwgY25zdC5PX1JEV1IgfCBjbnN0Lk9fRVhDTDtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gb3MudGVtcGRpcigpIG9yIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSLlxuICogZS5nLlxuICogLSBObyBgcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVJgOiBgL3Zhci9mb2xkZXJzLzM0LzIyMjJzaDhuMjdkNnJjcDdqcWxrdzhrbTAwMDBnbi9UL3h4eHh4eHh4Lnl5eXlgXG4gKiAtIFdpdGggYHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSID0gJy9wYXRoL3RvL3Jvb3QnYDogYC9wYXRoL3RvL3Jvb3QveHh4eHh4eHgueXl5eWBcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBBIHBhdGggdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdGVtcERpciAoKSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGZpbGVQYXRoID0gbm9kZVBhdGguam9pbihwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUiB8fCBvcy50bXBkaXIoKSxcbiAgICBbXG4gICAgICBub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksXG4gICAgICAnLScsXG4gICAgICBwcm9jZXNzLnBpZCxcbiAgICAgICctJyxcbiAgICAgIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDAgKyAxKS50b1N0cmluZygzNiksXG4gICAgXS5qb2luKCcnKSk7XG4gIC8vIGNyZWF0ZXMgYSB0ZW1wIGRpcmVjdG9yeSB1c2luZyB0aGUgZGF0ZSBhbmQgYSByYW5kb20gc3RyaW5nXG5cbiAgYXdhaXQgZnMubWtkaXIoZmlsZVBhdGgpO1xuXG4gIHJldHVybiBmaWxlUGF0aDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBBZmZpeGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByZWZpeF0gLSBwcmVmaXggb2YgdGhlIHRlbXAgZGlyZWN0b3J5IG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc3VmZml4XSAtIHN1ZmZpeCBvZiB0aGUgdGVtcCBkaXJlY3RvcnkgbmFtZVxuICovXG5cbi8qKlxuICogR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIG9zLnRlbXBkaXIoKSBvciBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUlxuICogd2l0aCBhcmJpdHJhcnkgcHJlZml4L3N1ZmZpeCBmb3IgdGhlIGRpcmVjdG9yeSBuYW1lLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFmZml4ZXN9IHJhd0FmZml4ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFByZWZpeF1cbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59ICBBIHBhdGggdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2l0aCByYXdBZmZpeGVzIGFuZCBkZWZhdWx0UHJlZml4XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBhdGggKHJhd0FmZml4ZXMsIGRlZmF1bHRQcmVmaXgpIHtcbiAgY29uc3QgYWZmaXhlcyA9IHBhcnNlQWZmaXhlcyhyYXdBZmZpeGVzLCBkZWZhdWx0UHJlZml4KTtcbiAgY29uc3QgbmFtZSA9IGAke2FmZml4ZXMucHJlZml4IHx8ICcnfSR7YWZmaXhlcy5zdWZmaXggfHwgJyd9YDtcbiAgY29uc3QgdGVtcERpcmVjdG9yeSA9IGF3YWl0IHRlbXBEaXIoKTtcbiAgcmV0dXJuIG5vZGVQYXRoLmpvaW4odGVtcERpcmVjdG9yeSwgbmFtZSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgT3BlbmVkQWZmaXhlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byBmaWxlXG4gKiBAcHJvcGVydHkge251bWJlcn0gZmQgLSBUaGUgZmlsZSBkZXNjcmlwdG9yIG9wZW5lZFxuICovXG5cbi8qKlxuICogR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIG9zLnRlbXBkaXIoKSBvciBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUlxuICogd2l0aCBhcmJpdHJhcnkgcHJlZml4L3N1ZmZpeCBmb3IgdGhlIGRpcmVjdG9yeSBuYW1lIGFuZCByZXR1cm4gaXQgYXMgb3Blbi5cbiAqXG4gKiBAcGFyYW0ge0FmZml4ZXN9IGFmZml4ZXNcbiAqIEByZXR1cm5zIHtQcm9taXNlPE9wZW5lZEFmZml4ZXM+fVxuICovXG5hc3luYyBmdW5jdGlvbiBvcGVuIChhZmZpeGVzKSB7XG4gIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgcGF0aChhZmZpeGVzLCAnZi0nKTtcbiAgdHJ5IHtcbiAgICBsZXQgZmQgPSBhd2FpdCBmcy5vcGVuKGZpbGVQYXRoLCBSRFdSX0VYQ0wsIDBvNjAwKTtcbiAgICAvLyBvcGVucyB0aGUgZmlsZSBpbiBtb2RlIDM4NFxuICAgIHJldHVybiB7cGF0aDogZmlsZVBhdGgsIGZkfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGxvZy5lcnJvckFuZFRocm93KGVycik7XG4gIH1cbn1cblxuLyoqXG4gKlxuICogUmV0dXJucyBwcmVmaXgvc3VmZml4IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFmZml4ZXN9IHJhd0FmZml4ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFByZWZpeF1cbiAqIEByZXR1cm5zIHtBZmZpeGVzfVxuICovXG5mdW5jdGlvbiBwYXJzZUFmZml4ZXMgKHJhd0FmZml4ZXMsIGRlZmF1bHRQcmVmaXgpIHtcbiAgLyoqIEB0eXBlIHtBZmZpeGVzfSAqL1xuICBsZXQgYWZmaXhlcyA9IHt9O1xuICBpZiAocmF3QWZmaXhlcykge1xuICAgIHN3aXRjaCAodHlwZW9mIHJhd0FmZml4ZXMpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGFmZml4ZXMucHJlZml4ID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBhZmZpeGVzID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWZmaXggZGVjbGFyYXRpb246ICR7YWZmaXhlc31gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYWZmaXhlcy5wcmVmaXggPSBkZWZhdWx0UHJlZml4O1xuICB9XG4gIHJldHVybiBhZmZpeGVzO1xufVxuXG5jb25zdCBfc3RhdGljID0gdGVtcERpcigpO1xuXG4vKipcbiAqIFJldHVybnMgYSBuZXcgcGF0aCB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIG5ldyB0ZW1wRGlyKCkgaWYgdGVtcFJvb3REaXJlY3RvcnkgaXMgbm90IHByb3ZpZGVkXG4gKi9cbmNvbnN0IG9wZW5EaXIgPSB0ZW1wRGlyO1xuXG4vKipcbiAqIFJldHVybnMgYSBwYXRoIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGNpaCBpcyBkZWZpbmVkIGFzIHN0YXRpYyBpbiB0aGUgc2FtZSBwcm9jZXNzXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSB0ZW1wIGRpcmVjdG9yeSBwYXRoIHdoY2loIGlzIGRlZmluZWQgYXMgc3RhdGljIGluIHRoZSBzYW1lIHByb2Nlc3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhdGljRGlyICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHJldHVybiBfc3RhdGljO1xufVxuXG5leHBvcnQgeyBvcGVuLCBwYXRoLCBvcGVuRGlyLCBzdGF0aWNEaXIgfTtcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ export default Timer;
2
+ export class Timer {
3
+ _startTime: bigint | [number, number] | null;
4
+ get startTime(): bigint | [number, number] | null;
5
+ /**
6
+ * Start the timer
7
+ *
8
+ * @return {Timer} The current instance, for chaining
9
+ */
10
+ start(): Timer;
11
+ /**
12
+ * Get the duration since the timer was started
13
+ *
14
+ * @return {Duration} the duration
15
+ */
16
+ getDuration(): Duration;
17
+ toString(): string;
18
+ }
19
+ /**
20
+ * Class representing a duration, encapsulating the number and units.
21
+ */
22
+ export class Duration {
23
+ constructor(nanos: any);
24
+ _nanos: any;
25
+ get nanos(): any;
26
+ /**
27
+ * Get the duration as nanoseconds
28
+ *
29
+ * @returns {number} The duration as nanoseconds
30
+ */
31
+ get asNanoSeconds(): number;
32
+ /**
33
+ * Get the duration converted into milliseconds
34
+ *
35
+ * @returns {number} The duration as milliseconds
36
+ */
37
+ get asMilliSeconds(): number;
38
+ /**
39
+ * Get the duration converted into seconds
40
+ *
41
+ * @returns {number} The duration fas seconds
42
+ */
43
+ get asSeconds(): number;
44
+ toString(): string;
45
+ }
46
+ //# sourceMappingURL=timing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../lib/timing.js"],"names":[],"mappings":";AAoDA;IAKI,6CAAsB;IAGxB,kDAEC;IAED;;;;OAIG;IACH,SAFY,KAAK,CAWhB;IAED;;;;OAIG;IACH,eAFY,QAAQ,CAsBnB;IAED,mBAMC;CACF;AA3GD;;GAEG;AACH;IACE,wBAEC;IADC,YAAmB;IAGrB,iBAEC;IAED;;;;OAIG;IACH,4BAEC;IAED;;;;OAIG;IACH,6BAEC;IAED;;;;OAIG;IACH,wBAEC;IAED,mBAGC;CACF"}