appium-android-driver 4.54.0 → 5.0.3

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 (60) hide show
  1. package/README.md +1 -2
  2. package/build/index.js +6 -4
  3. package/build/lib/android-helpers.js +12 -9
  4. package/build/lib/bootstrap.js +7 -7
  5. package/build/lib/commands/actions.js +13 -13
  6. package/build/lib/commands/alert.js +7 -7
  7. package/build/lib/commands/app-management.js +6 -6
  8. package/build/lib/commands/context.js +10 -8
  9. package/build/lib/commands/element.js +5 -5
  10. package/build/lib/commands/execute.js +5 -5
  11. package/build/lib/commands/file-actions.js +12 -12
  12. package/build/lib/commands/find.js +6 -6
  13. package/build/lib/commands/general.js +7 -69
  14. package/build/lib/commands/ime.js +4 -4
  15. package/build/lib/commands/index.js +4 -2
  16. package/build/lib/commands/intent.js +7 -7
  17. package/build/lib/commands/log.js +6 -6
  18. package/build/lib/commands/network.js +4 -4
  19. package/build/lib/commands/performance.js +1 -1
  20. package/build/lib/commands/recordscreen.js +15 -15
  21. package/build/lib/commands/shell.js +3 -3
  22. package/build/lib/commands/streamscreen.js +7 -7
  23. package/build/lib/commands/system-bars.js +144 -0
  24. package/build/lib/commands/touch.js +8 -8
  25. package/build/lib/desired-caps.js +1 -1
  26. package/build/lib/driver.js +12 -12
  27. package/build/lib/logger.js +3 -3
  28. package/build/lib/server.js +4 -4
  29. package/build/lib/uiautomator.js +3 -3
  30. package/build/lib/unlock-helpers.js +8 -8
  31. package/build/lib/webview-helpers.js +7 -7
  32. package/lib/android-helpers.js +1 -1
  33. package/lib/bootstrap.js +2 -2
  34. package/lib/commands/actions.js +1 -1
  35. package/lib/commands/alert.js +1 -1
  36. package/lib/commands/app-management.js +4 -2
  37. package/lib/commands/context.js +2 -2
  38. package/lib/commands/element.js +1 -1
  39. package/lib/commands/execute.js +1 -1
  40. package/lib/commands/file-actions.js +1 -1
  41. package/lib/commands/find.js +2 -2
  42. package/lib/commands/general.js +1 -83
  43. package/lib/commands/ime.js +1 -1
  44. package/lib/commands/index.js +2 -0
  45. package/lib/commands/intent.js +1 -1
  46. package/lib/commands/log.js +1 -1
  47. package/lib/commands/network.js +1 -1
  48. package/lib/commands/recordscreen.js +1 -1
  49. package/lib/commands/shell.js +1 -1
  50. package/lib/commands/streamscreen.js +1 -1
  51. package/lib/commands/system-bars.js +131 -0
  52. package/lib/commands/touch.js +2 -2
  53. package/lib/driver.js +2 -2
  54. package/lib/logger.js +1 -1
  55. package/lib/server.js +1 -1
  56. package/lib/uiautomator.js +1 -1
  57. package/lib/unlock-helpers.js +1 -1
  58. package/lib/webview-helpers.js +1 -1
  59. package/package.json +14 -12
  60. package/lib/.DS_Store +0 -0
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.helpers = exports.commands = void 0;
8
+ exports.helpers = exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
12
  var _logger = _interopRequireDefault(require("../logger"));
13
13
 
14
- var _appiumBaseDriver = require("appium-base-driver");
14
+ var _baseDriver = require("@appium/base-driver");
15
15
 
16
16
  let commands = {},
17
17
  helpers = {},
@@ -47,7 +47,7 @@ commands.activateIMEEngine = async function activateIMEEngine(imeId) {
47
47
  if (availableEngines.indexOf(imeId) === -1) {
48
48
  _logger.default.debug('IME not found, failing');
49
49
 
50
- throw new _appiumBaseDriver.errors.IMENotAvailableError();
50
+ throw new _baseDriver.errors.IMENotAvailableError();
51
51
  }
52
52
 
53
53
  _logger.default.debug('Found installed IME, attempting to activate');
@@ -69,4 +69,4 @@ var _default = extensions;
69
69
  exports.default = _default;require('source-map-support').install();
70
70
 
71
71
 
72
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImlzSU1FQWN0aXZhdGVkIiwiYXZhaWxhYmxlSU1FRW5naW5lcyIsImxvZyIsImRlYnVnIiwiZW5naW5lcyIsImFkYiIsImF2YWlsYWJsZUlNRXMiLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QWN0aXZlSU1FRW5naW5lIiwiZGVmYXVsdElNRSIsImFjdGl2YXRlSU1FRW5naW5lIiwiaW1lSWQiLCJhdmFpbGFibGVFbmdpbmVzIiwiaW5kZXhPZiIsImVycm9ycyIsIklNRU5vdEF2YWlsYWJsZUVycm9yIiwiZW5hYmxlSU1FIiwic2V0SU1FIiwiZGVhY3RpdmF0ZUlNRUVuZ2luZSIsImN1cnJlbnRFbmdpbmUiLCJkaXNhYmxlSU1FIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFBUSxDQUFDRyxjQUFULEdBQTBCLGVBQWVBLGNBQWYsR0FBaUM7QUFFekQsU0FBTyxJQUFQO0FBQ0QsQ0FIRDs7QUFLQUgsUUFBUSxDQUFDSSxtQkFBVCxHQUErQixlQUFlQSxtQkFBZixHQUFzQztBQUNuRUMsa0JBQUlDLEtBQUosQ0FBVSwyQkFBVjs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7O0FBQ0FKLGtCQUFJQyxLQUFKLENBQVcsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBOUM7O0FBQ0EsU0FBT0EsT0FBUDtBQUNELENBTEQ7O0FBT0FQLFFBQVEsQ0FBQ1ksa0JBQVQsR0FBOEIsZUFBZUEsa0JBQWYsR0FBcUM7QUFDakVQLGtCQUFJQyxLQUFKLENBQVUsZ0NBQVY7O0FBQ0EsU0FBTyxNQUFNLEtBQUtFLEdBQUwsQ0FBU0ssVUFBVCxFQUFiO0FBQ0QsQ0FIRDs7QUFLQWIsUUFBUSxDQUFDYyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixDQUFrQ0MsS0FBbEMsRUFBeUM7QUFDcEVWLGtCQUFJQyxLQUFKLENBQVcsOEJBQTZCUyxLQUFNLEVBQTlDOztBQUNBLE1BQUlDLGdCQUFnQixHQUFHLE1BQU0sS0FBS1IsR0FBTCxDQUFTQyxhQUFULEVBQTdCOztBQUNBLE1BQUlPLGdCQUFnQixDQUFDQyxPQUFqQixDQUF5QkYsS0FBekIsTUFBb0MsQ0FBQyxDQUF6QyxFQUE0QztBQUMxQ1Ysb0JBQUlDLEtBQUosQ0FBVSx3QkFBVjs7QUFDQSxVQUFNLElBQUlZLHlCQUFPQyxvQkFBWCxFQUFOO0FBQ0Q7O0FBQ0RkLGtCQUFJQyxLQUFKLENBQVUsNkNBQVY7O0FBQ0EsUUFBTSxLQUFLRSxHQUFMLENBQVNZLFNBQVQsQ0FBbUJMLEtBQW5CLENBQU47QUFDQSxRQUFNLEtBQUtQLEdBQUwsQ0FBU2EsTUFBVCxDQUFnQk4sS0FBaEIsQ0FBTjtBQUNELENBVkQ7O0FBWUFmLFFBQVEsQ0FBQ3NCLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLEdBQXNDO0FBQ25FLE1BQUlDLGFBQWEsR0FBRyxNQUFNLEtBQUtYLGtCQUFMLEVBQTFCOztBQUNBUCxrQkFBSUMsS0FBSixDQUFXLDRCQUEyQmlCLGFBQWMsRUFBcEQ7O0FBQ0EsUUFBTSxLQUFLZixHQUFMLENBQVNnQixVQUFULENBQW9CRCxhQUFwQixDQUFOO0FBQ0QsQ0FKRDs7QUFNQUUsTUFBTSxDQUFDQyxNQUFQLENBQWN4QixVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuaXNJTUVBY3RpdmF0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0lNRUFjdGl2YXRlZCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBJTUUgaXMgYWx3YXlzIGFjdGl2YXRlZCBvbiBBbmRyb2lkIGRldmljZXNcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb21tYW5kcy5hdmFpbGFibGVJTUVFbmdpbmVzID0gYXN5bmMgZnVuY3Rpb24gYXZhaWxhYmxlSU1FRW5naW5lcyAoKSB7XG4gIGxvZy5kZWJ1ZygnUmV0cmlldmluZyBhdmFpbGFibGUgSU1FcycpO1xuICBsZXQgZW5naW5lcyA9IGF3YWl0IHRoaXMuYWRiLmF2YWlsYWJsZUlNRXMoKTtcbiAgbG9nLmRlYnVnKGBFbmdpbmVzOiAke0pTT04uc3RyaW5naWZ5KGVuZ2luZXMpfWApO1xuICByZXR1cm4gZW5naW5lcztcbn07XG5cbmNvbW1hbmRzLmdldEFjdGl2ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2ZUlNRUVuZ2luZSAoKSB7XG4gIGxvZy5kZWJ1ZygnUmV0cmlldmluZyBjdXJyZW50IGRlZmF1bHQgSU1FJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5kZWZhdWx0SU1FKCk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlSU1FRW5naW5lIChpbWVJZCkge1xuICBsb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gYWN0aXZhdGUgSU1FICR7aW1lSWR9YCk7XG4gIGxldCBhdmFpbGFibGVFbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICBpZiAoYXZhaWxhYmxlRW5naW5lcy5pbmRleE9mKGltZUlkKSA9PT0gLTEpIHtcbiAgICBsb2cuZGVidWcoJ0lNRSBub3QgZm91bmQsIGZhaWxpbmcnKTtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLklNRU5vdEF2YWlsYWJsZUVycm9yKCk7XG4gIH1cbiAgbG9nLmRlYnVnKCdGb3VuZCBpbnN0YWxsZWQgSU1FLCBhdHRlbXB0aW5nIHRvIGFjdGl2YXRlJyk7XG4gIGF3YWl0IHRoaXMuYWRiLmVuYWJsZUlNRShpbWVJZCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNldElNRShpbWVJZCk7XG59O1xuXG5jb21tYW5kcy5kZWFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZGVhY3RpdmF0ZUlNRUVuZ2luZSAoKSB7XG4gIGxldCBjdXJyZW50RW5naW5lID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVJTUVFbmdpbmUoKTtcbiAgbG9nLmRlYnVnKGBBdHRlbXB0aW5nIHRvIGRlYWN0aXZhdGUgJHtjdXJyZW50RW5naW5lfWApO1xuICBhd2FpdCB0aGlzLmFkYi5kaXNhYmxlSU1FKGN1cnJlbnRFbmdpbmUpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2ltZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
72
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImlzSU1FQWN0aXZhdGVkIiwiYXZhaWxhYmxlSU1FRW5naW5lcyIsImxvZyIsImRlYnVnIiwiZW5naW5lcyIsImFkYiIsImF2YWlsYWJsZUlNRXMiLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QWN0aXZlSU1FRW5naW5lIiwiZGVmYXVsdElNRSIsImFjdGl2YXRlSU1FRW5naW5lIiwiaW1lSWQiLCJhdmFpbGFibGVFbmdpbmVzIiwiaW5kZXhPZiIsImVycm9ycyIsIklNRU5vdEF2YWlsYWJsZUVycm9yIiwiZW5hYmxlSU1FIiwic2V0SU1FIiwiZGVhY3RpdmF0ZUlNRUVuZ2luZSIsImN1cnJlbnRFbmdpbmUiLCJkaXNhYmxlSU1FIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFBUSxDQUFDRyxjQUFULEdBQTBCLGVBQWVBLGNBQWYsR0FBaUM7QUFFekQsU0FBTyxJQUFQO0FBQ0QsQ0FIRDs7QUFLQUgsUUFBUSxDQUFDSSxtQkFBVCxHQUErQixlQUFlQSxtQkFBZixHQUFzQztBQUNuRUMsa0JBQUlDLEtBQUosQ0FBVSwyQkFBVjs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7O0FBQ0FKLGtCQUFJQyxLQUFKLENBQVcsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBOUM7O0FBQ0EsU0FBT0EsT0FBUDtBQUNELENBTEQ7O0FBT0FQLFFBQVEsQ0FBQ1ksa0JBQVQsR0FBOEIsZUFBZUEsa0JBQWYsR0FBcUM7QUFDakVQLGtCQUFJQyxLQUFKLENBQVUsZ0NBQVY7O0FBQ0EsU0FBTyxNQUFNLEtBQUtFLEdBQUwsQ0FBU0ssVUFBVCxFQUFiO0FBQ0QsQ0FIRDs7QUFLQWIsUUFBUSxDQUFDYyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixDQUFrQ0MsS0FBbEMsRUFBeUM7QUFDcEVWLGtCQUFJQyxLQUFKLENBQVcsOEJBQTZCUyxLQUFNLEVBQTlDOztBQUNBLE1BQUlDLGdCQUFnQixHQUFHLE1BQU0sS0FBS1IsR0FBTCxDQUFTQyxhQUFULEVBQTdCOztBQUNBLE1BQUlPLGdCQUFnQixDQUFDQyxPQUFqQixDQUF5QkYsS0FBekIsTUFBb0MsQ0FBQyxDQUF6QyxFQUE0QztBQUMxQ1Ysb0JBQUlDLEtBQUosQ0FBVSx3QkFBVjs7QUFDQSxVQUFNLElBQUlZLG1CQUFPQyxvQkFBWCxFQUFOO0FBQ0Q7O0FBQ0RkLGtCQUFJQyxLQUFKLENBQVUsNkNBQVY7O0FBQ0EsUUFBTSxLQUFLRSxHQUFMLENBQVNZLFNBQVQsQ0FBbUJMLEtBQW5CLENBQU47QUFDQSxRQUFNLEtBQUtQLEdBQUwsQ0FBU2EsTUFBVCxDQUFnQk4sS0FBaEIsQ0FBTjtBQUNELENBVkQ7O0FBWUFmLFFBQVEsQ0FBQ3NCLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLEdBQXNDO0FBQ25FLE1BQUlDLGFBQWEsR0FBRyxNQUFNLEtBQUtYLGtCQUFMLEVBQTFCOztBQUNBUCxrQkFBSUMsS0FBSixDQUFXLDRCQUEyQmlCLGFBQWMsRUFBcEQ7O0FBQ0EsUUFBTSxLQUFLZixHQUFMLENBQVNnQixVQUFULENBQW9CRCxhQUFwQixDQUFOO0FBQ0QsQ0FKRDs7QUFNQUUsTUFBTSxDQUFDQyxNQUFQLENBQWN4QixVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmlzSU1FQWN0aXZhdGVkID0gYXN5bmMgZnVuY3Rpb24gaXNJTUVBY3RpdmF0ZWQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgLy8gSU1FIGlzIGFsd2F5cyBhY3RpdmF0ZWQgb24gQW5kcm9pZCBkZXZpY2VzXG4gIHJldHVybiB0cnVlO1xufTtcblxuY29tbWFuZHMuYXZhaWxhYmxlSU1FRW5naW5lcyA9IGFzeW5jIGZ1bmN0aW9uIGF2YWlsYWJsZUlNRUVuZ2luZXMgKCkge1xuICBsb2cuZGVidWcoJ1JldHJpZXZpbmcgYXZhaWxhYmxlIElNRXMnKTtcbiAgbGV0IGVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIGxvZy5kZWJ1ZyhgRW5naW5lczogJHtKU09OLnN0cmluZ2lmeShlbmdpbmVzKX1gKTtcbiAgcmV0dXJuIGVuZ2luZXM7XG59O1xuXG5jb21tYW5kcy5nZXRBY3RpdmVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVJTUVFbmdpbmUgKCkge1xuICBsb2cuZGVidWcoJ1JldHJpZXZpbmcgY3VycmVudCBkZWZhdWx0IElNRScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZGVmYXVsdElNRSgpO1xufTtcblxuY29tbWFuZHMuYWN0aXZhdGVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUlNRUVuZ2luZSAoaW1lSWQpIHtcbiAgbG9nLmRlYnVnKGBBdHRlbXB0aW5nIHRvIGFjdGl2YXRlIElNRSAke2ltZUlkfWApO1xuICBsZXQgYXZhaWxhYmxlRW5naW5lcyA9IGF3YWl0IHRoaXMuYWRiLmF2YWlsYWJsZUlNRXMoKTtcbiAgaWYgKGF2YWlsYWJsZUVuZ2luZXMuaW5kZXhPZihpbWVJZCkgPT09IC0xKSB7XG4gICAgbG9nLmRlYnVnKCdJTUUgbm90IGZvdW5kLCBmYWlsaW5nJyk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JTUVOb3RBdmFpbGFibGVFcnJvcigpO1xuICB9XG4gIGxvZy5kZWJ1ZygnRm91bmQgaW5zdGFsbGVkIElNRSwgYXR0ZW1wdGluZyB0byBhY3RpdmF0ZScpO1xuICBhd2FpdCB0aGlzLmFkYi5lbmFibGVJTUUoaW1lSWQpO1xuICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUoaW1lSWQpO1xufTtcblxuY29tbWFuZHMuZGVhY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGRlYWN0aXZhdGVJTUVFbmdpbmUgKCkge1xuICBsZXQgY3VycmVudEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlSU1FRW5naW5lKCk7XG4gIGxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBkZWFjdGl2YXRlICR7Y3VycmVudEVuZ2luZX1gKTtcbiAgYXdhaXQgdGhpcy5hZGIuZGlzYWJsZUlNRShjdXJyZW50RW5naW5lKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbWUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -47,13 +47,15 @@ var _appManagement = _interopRequireDefault(require("./app-management"));
47
47
 
48
48
  var _intent = _interopRequireDefault(require("./intent"));
49
49
 
50
+ var _systemBars = _interopRequireDefault(require("./system-bars"));
51
+
50
52
  var _log = _interopRequireDefault(require("./log"));
51
53
 
52
54
  let commands = {};
53
55
  exports.commands = commands;
54
- Object.assign(commands, _find.default, _general.default, _alert.default, _element.default, _context.default, _actions.default, _touch.default, _ime.default, _network.default, _coverage.default, _recordscreen.default, _intent.default, _streamscreen.default, _performance.default, _execute.default, _shell.default, _emuConsole.default, _appManagement.default, _fileActions.default, _log.default);
56
+ Object.assign(commands, _find.default, _general.default, _alert.default, _element.default, _context.default, _actions.default, _touch.default, _ime.default, _network.default, _coverage.default, _recordscreen.default, _intent.default, _streamscreen.default, _performance.default, _execute.default, _shell.default, _emuConsole.default, _systemBars.default, _appManagement.default, _fileActions.default, _log.default);
55
57
  var _default = commands;
56
58
  exports.default = _default;require('source-map-support').install();
57
59
 
58
60
 
59
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZ2VuZXJhbENtZHMiLCJhbGVydENtZHMiLCJlbGVtZW50Q21kcyIsImNvbnRleHRDbWRzIiwiYWN0aW9uQ21kcyIsInRvdWNoQ21kcyIsImltZUNtZHMiLCJuZXR3b3JrQ21kcyIsImNvdmVyYWdlQ21kcyIsInJlY29yZHNjcmVlbkNtZHMiLCJpbnRlbnRDbWRzIiwic2NyZWVuU3RyZWFtQ21kcyIsInBlcmZvcm1hbmNlQ21kcyIsImV4ZWN1dGVDbWRzIiwic2hlbGxDbWRzIiwiZW11Q29uc29sZUNtZHMiLCJhcHBNYW5hZ2VtZW50Q21kcyIsImZpbGVBY3Rpb25zQ21kcyIsImxvZ0NtZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsUUFBUSxHQUFHLEVBQWY7O0FBQ0FDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNFRixRQURGLEVBRUVHLGFBRkYsRUFHRUMsZ0JBSEYsRUFJRUMsY0FKRixFQUtFQyxnQkFMRixFQU1FQyxnQkFORixFQU9FQyxnQkFQRixFQVFFQyxjQVJGLEVBU0VDLFlBVEYsRUFVRUMsZ0JBVkYsRUFXRUMsaUJBWEYsRUFZRUMscUJBWkYsRUFhRUMsZUFiRixFQWNFQyxxQkFkRixFQWVFQyxvQkFmRixFQWdCRUMsZ0JBaEJGLEVBaUJFQyxjQWpCRixFQWtCRUMsbUJBbEJGLEVBbUJFQyxzQkFuQkYsRUFvQkVDLG9CQXBCRixFQXFCRUMsWUFyQkY7ZUEwQmV0QixRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbmRDbWRzIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgZ2VuZXJhbENtZHMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBhbGVydENtZHMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgZWxlbWVudENtZHMgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBjb250ZXh0Q21kcyBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGFjdGlvbkNtZHMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB0b3VjaENtZHMgZnJvbSAnLi90b3VjaCc7XG5pbXBvcnQgaW1lQ21kcyBmcm9tICcuL2ltZSc7XG5pbXBvcnQgbmV0d29ya0NtZHMgZnJvbSAnLi9uZXR3b3JrJztcbmltcG9ydCBjb3ZlcmFnZUNtZHMgZnJvbSAnLi9jb3ZlcmFnZSc7XG5pbXBvcnQgcmVjb3Jkc2NyZWVuQ21kcyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgc2NyZWVuU3RyZWFtQ21kcyBmcm9tICcuL3N0cmVhbXNjcmVlbic7XG5pbXBvcnQgcGVyZm9ybWFuY2VDbWRzIGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuaW1wb3J0IGV4ZWN1dGVDbWRzIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgc2hlbGxDbWRzIGZyb20gJy4vc2hlbGwnO1xuaW1wb3J0IGVtdUNvbnNvbGVDbWRzIGZyb20gJy4vZW11LWNvbnNvbGUnO1xuaW1wb3J0IGZpbGVBY3Rpb25zQ21kcyBmcm9tICcuL2ZpbGUtYWN0aW9ucyc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudENtZHMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgaW50ZW50Q21kcyBmcm9tICcuL2ludGVudCc7XG5pbXBvcnQgbG9nQ21kcyBmcm9tICcuL2xvZyc7XG5cblxubGV0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgZmluZENtZHMsXG4gIGdlbmVyYWxDbWRzLFxuICBhbGVydENtZHMsXG4gIGVsZW1lbnRDbWRzLFxuICBjb250ZXh0Q21kcyxcbiAgYWN0aW9uQ21kcyxcbiAgdG91Y2hDbWRzLFxuICBpbWVDbWRzLFxuICBuZXR3b3JrQ21kcyxcbiAgY292ZXJhZ2VDbWRzLFxuICByZWNvcmRzY3JlZW5DbWRzLFxuICBpbnRlbnRDbWRzLFxuICBzY3JlZW5TdHJlYW1DbWRzLFxuICBwZXJmb3JtYW5jZUNtZHMsXG4gIGV4ZWN1dGVDbWRzLFxuICBzaGVsbENtZHMsXG4gIGVtdUNvbnNvbGVDbWRzLFxuICBhcHBNYW5hZ2VtZW50Q21kcyxcbiAgZmlsZUFjdGlvbnNDbWRzLFxuICBsb2dDbWRzLFxuICAvLyBhZGQgb3RoZXIgY29tbWFuZCB0eXBlcyBoZXJlXG4pO1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
61
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZ2VuZXJhbENtZHMiLCJhbGVydENtZHMiLCJlbGVtZW50Q21kcyIsImNvbnRleHRDbWRzIiwiYWN0aW9uQ21kcyIsInRvdWNoQ21kcyIsImltZUNtZHMiLCJuZXR3b3JrQ21kcyIsImNvdmVyYWdlQ21kcyIsInJlY29yZHNjcmVlbkNtZHMiLCJpbnRlbnRDbWRzIiwic2NyZWVuU3RyZWFtQ21kcyIsInBlcmZvcm1hbmNlQ21kcyIsImV4ZWN1dGVDbWRzIiwic2hlbGxDbWRzIiwiZW11Q29uc29sZUNtZHMiLCJzeXN0ZW1CYXJzQ21kcyIsImFwcE1hbmFnZW1lbnRDbWRzIiwiZmlsZUFjdGlvbnNDbWRzIiwibG9nQ21kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjs7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLFFBREYsRUFFRUcsYUFGRixFQUdFQyxnQkFIRixFQUlFQyxjQUpGLEVBS0VDLGdCQUxGLEVBTUVDLGdCQU5GLEVBT0VDLGdCQVBGLEVBUUVDLGNBUkYsRUFTRUMsWUFURixFQVVFQyxnQkFWRixFQVdFQyxpQkFYRixFQVlFQyxxQkFaRixFQWFFQyxlQWJGLEVBY0VDLHFCQWRGLEVBZUVDLG9CQWZGLEVBZ0JFQyxnQkFoQkYsRUFpQkVDLGNBakJGLEVBa0JFQyxtQkFsQkYsRUFtQkVDLG1CQW5CRixFQW9CRUMsc0JBcEJGLEVBcUJFQyxvQkFyQkYsRUFzQkVDLFlBdEJGO2VBMkJldkIsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kQ21kcyBmcm9tICcuL2ZpbmQnO1xuaW1wb3J0IGdlbmVyYWxDbWRzIGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgYWxlcnRDbWRzIGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IGVsZW1lbnRDbWRzIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgY29udGV4dENtZHMgZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCBhY3Rpb25DbWRzIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgdG91Y2hDbWRzIGZyb20gJy4vdG91Y2gnO1xuaW1wb3J0IGltZUNtZHMgZnJvbSAnLi9pbWUnO1xuaW1wb3J0IG5ldHdvcmtDbWRzIGZyb20gJy4vbmV0d29yayc7XG5pbXBvcnQgY292ZXJhZ2VDbWRzIGZyb20gJy4vY292ZXJhZ2UnO1xuaW1wb3J0IHJlY29yZHNjcmVlbkNtZHMgZnJvbSAnLi9yZWNvcmRzY3JlZW4nO1xuaW1wb3J0IHNjcmVlblN0cmVhbUNtZHMgZnJvbSAnLi9zdHJlYW1zY3JlZW4nO1xuaW1wb3J0IHBlcmZvcm1hbmNlQ21kcyBmcm9tICcuL3BlcmZvcm1hbmNlJztcbmltcG9ydCBleGVjdXRlQ21kcyBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IHNoZWxsQ21kcyBmcm9tICcuL3NoZWxsJztcbmltcG9ydCBlbXVDb25zb2xlQ21kcyBmcm9tICcuL2VtdS1jb25zb2xlJztcbmltcG9ydCBmaWxlQWN0aW9uc0NtZHMgZnJvbSAnLi9maWxlLWFjdGlvbnMnO1xuaW1wb3J0IGFwcE1hbmFnZW1lbnRDbWRzIGZyb20gJy4vYXBwLW1hbmFnZW1lbnQnO1xuaW1wb3J0IGludGVudENtZHMgZnJvbSAnLi9pbnRlbnQnO1xuaW1wb3J0IHN5c3RlbUJhcnNDbWRzIGZyb20gJy4vc3lzdGVtLWJhcnMnO1xuaW1wb3J0IGxvZ0NtZHMgZnJvbSAnLi9sb2cnO1xuXG5cbmxldCBjb21tYW5kcyA9IHt9O1xuT2JqZWN0LmFzc2lnbihcbiAgY29tbWFuZHMsXG4gIGZpbmRDbWRzLFxuICBnZW5lcmFsQ21kcyxcbiAgYWxlcnRDbWRzLFxuICBlbGVtZW50Q21kcyxcbiAgY29udGV4dENtZHMsXG4gIGFjdGlvbkNtZHMsXG4gIHRvdWNoQ21kcyxcbiAgaW1lQ21kcyxcbiAgbmV0d29ya0NtZHMsXG4gIGNvdmVyYWdlQ21kcyxcbiAgcmVjb3Jkc2NyZWVuQ21kcyxcbiAgaW50ZW50Q21kcyxcbiAgc2NyZWVuU3RyZWFtQ21kcyxcbiAgcGVyZm9ybWFuY2VDbWRzLFxuICBleGVjdXRlQ21kcyxcbiAgc2hlbGxDbWRzLFxuICBlbXVDb25zb2xlQ21kcyxcbiAgc3lzdGVtQmFyc0NtZHMsXG4gIGFwcE1hbmFnZW1lbnRDbWRzLFxuICBmaWxlQWN0aW9uc0NtZHMsXG4gIGxvZ0NtZHMsXG4gIC8vIGFkZCBvdGhlciBjb21tYW5kIHR5cGVzIGhlcmVcbik7XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _appiumBaseDriver = require("appium-base-driver");
14
+ var _baseDriver = require("@appium/base-driver");
15
15
 
16
16
  const NO_VALUE_ARG_TYPE = 'sn';
17
17
  const SUPPORTED_EXTRA_TYPES = ['s', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn', 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal'];
@@ -71,28 +71,28 @@ function parseIntentSpec(opts = {}) {
71
71
 
72
72
  if (extras) {
73
73
  if (!_lodash.default.isArray(extras)) {
74
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`'extras' must be an array`);
74
+ throw new _baseDriver.errors.InvalidArgumentError(`'extras' must be an array`);
75
75
  }
76
76
 
77
77
  for (const item of extras) {
78
78
  if (!_lodash.default.isArray(item)) {
79
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);
79
+ throw new _baseDriver.errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);
80
80
  }
81
81
 
82
82
  const [type, key, value] = item;
83
83
 
84
84
  if (!_lodash.default.includes(SUPPORTED_EXTRA_TYPES, type)) {
85
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`Extra argument type '${type}' is not known. ` + `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
85
+ throw new _baseDriver.errors.InvalidArgumentError(`Extra argument type '${type}' is not known. ` + `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
86
86
  }
87
87
 
88
88
  if (_lodash.default.isEmpty(key) || _lodash.default.isString(key) && _lodash.default.trim(key) === '') {
89
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`);
89
+ throw new _baseDriver.errors.InvalidArgumentError(`Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`);
90
90
  }
91
91
 
92
92
  if (type === NO_VALUE_ARG_TYPE) {
93
93
  resultArgs.push(`--e${type}`, key);
94
94
  } else if (_lodash.default.isUndefined(value)) {
95
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`Intent argument type '${type}' in '${JSON.stringify(item)}' requires a ` + `valid value to be provided`);
95
+ throw new _baseDriver.errors.InvalidArgumentError(`Intent argument type '${type}' in '${JSON.stringify(item)}' requires a ` + `valid value to be provided`);
96
96
  } else {
97
97
  resultArgs.push(`--e${type}`, key, value);
98
98
  }
@@ -208,4 +208,4 @@ var _default = commands;
208
208
  exports.default = _default;require('source-map-support').install();
209
209
 
210
210
 
211
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbnRlbnQuanMiXSwibmFtZXMiOlsiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJwYXJzZUludGVudFNwZWMiLCJvcHRzIiwiaW50ZW50IiwiYWN0aW9uIiwidXJpIiwibWltZVR5cGUiLCJpZGVudGlmaWVyIiwiY2F0ZWdvcmllcyIsImNvbXBvbmVudCIsImV4dHJhcyIsImZsYWdzIiwicmVzdWx0QXJncyIsInB1c2giLCJfIiwiaXNOaWwiLCJpc0FycmF5IiwiZmxhdE1hcCIsIm1hcCIsImNOYW1lIiwicGFja2FnZSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiaXRlbSIsInR5cGUiLCJrZXkiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiaXNFbXB0eSIsImlzU3RyaW5nIiwidHJpbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc1VuZGVmaW5lZCIsIm1vYmlsZVN0YXJ0QWN0aXZpdHkiLCJ1c2VyIiwid2FpdCIsInN0b3AiLCJ3aW5kb3dpbmdNb2RlIiwiYWN0aXZpdHlUeXBlIiwiZGlzcGxheSIsImNtZCIsImFkYiIsImdldEFwaUxldmVsIiwic2hlbGwiLCJtb2JpbGVCcm9hZGNhc3QiLCJyZWNlaXZlclBlcm1pc3Npb24iLCJhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyIsIm1vYmlsZVN0YXJ0U2VydmljZSIsImZvcmVncm91bmQiLCJtb2JpbGVTdG9wU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLENBQzVCLEdBRDRCLEVBQ3ZCRCxpQkFEdUIsRUFDSixHQURJLEVBQ0MsR0FERCxFQUNNLEdBRE4sRUFDVyxHQURYLEVBQ2dCLEdBRGhCLEVBQ3FCLElBRHJCLEVBRTVCLElBRjRCLEVBRXRCLEtB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UyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBaEJEOztBQTRDQXpDLFFBQVEsQ0FBQ2tELGlCQUFULEdBQTZCLGVBQWVBLGlCQUFmLENBQWtDaEQsSUFBSSxHQUFHLEVBQXpDLEVBQTZDO0FBQ3hFLFFBQU07QUFDSmlDLElBQUFBO0FBREksTUFFRmpDLElBRko7QUFHQSxRQUFNdUMsR0FBRyxHQUFHLENBQ1YsSUFEVSxFQUVULE9BQU0sS0FBS0MsR0FBTCxDQUFTQyxXQUFULEVBQU4sSUFBK0I1QyxtQkFBaEMsR0FBdUQsYUFBdkQsR0FBdUUsY0FGN0QsQ0FBWjs7QUFJQSxNQUFJLENBQUNlLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBYkQ7O2VBaUJlekMsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuXG5jb25zdCBOT19WQUxVRV9BUkdfVFlQRSA9ICdzbic7XG5jb25zdCBTVVBQT1JURURfRVhUUkFfVFlQRVMgPSBbXG4gICdzJywgTk9fVkFMVUVfQVJHX1RZUEUsICd6JywgJ2knLCAnbCcsICdmJywgJ3UnLCAnY24nLFxuICAnaWEnLCAnaWFsJywgJ2xhJywgJ2xhbCcsICdmYScsICdmYWwnLCAnc2EnLCAnc2FsJyxcbl07XG5jb25zdCBBUElfTEVWRUxfQU5EUk9JRF84ID0gMjY7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIHBhcnNlSW50ZW50U3BlYyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlbnQsXG4gICAgYWN0aW9uLFxuICAgIHVyaSxcbiAgICBtaW1lVHlwZSxcbiAgICBpZGVudGlmaWVyLFxuICAgIGNhdGVnb3JpZXMsXG4gICAgY29tcG9uZW50LFxuICAgIGV4dHJhcyxcbiAgICBmbGFncyxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHJlc3VsdEFyZ3MgPSBbXTtcbiAgaWYgKGludGVudCkge1xuICAgIHJlc3VsdEFyZ3MucHVzaChpbnRlbnQpO1xuICB9XG4gIGlmIChhY3Rpb24pIHtcbiAgICByZXN1bHRBcmdzLnB1c2goJy1hJywgYWN0aW9uKTtcbiAgfVxuICBpZiAodXJpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZCcsIHVyaSk7XG4gIH1cbiAgaWYgKG1pbWVUeXBlKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctdCcsIG1pbWVUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoaWRlbnRpZmllcikpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goJy1pJywgaWRlbnRpZmllcik7XG4gIH1cbiAgaWYgKGNhdGVnb3JpZXMpIHtcbiAgICBpZiAoXy5pc0FycmF5KGNhdGVnb3JpZXMpKSB7XG4gICAgICByZXN1bHRBcmdzLnB1c2goLi4uKF8uZmxhdE1hcChjYXRlZ29yaWVzLm1hcCgoY05hbWUpID0+IFsnLWMnLCBjTmFtZV0pKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRBcmdzLnB1c2goJy1jJywgY2F0ZWdvcmllcyk7XG4gICAgfVxuICB9XG4gIGlmIChjb21wb25lbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goJy1uJywgY29tcG9uZW50KTtcbiAgfVxuICBpZiAob3B0cy5wYWNrYWdlKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctcCcsIG9wdHMucGFja2FnZSk7XG4gIH1cbiAgaWYgKGV4dHJhcykge1xuICAgIGlmICghXy5pc0FycmF5KGV4dHJhcykpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdleHRyYXMnIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dHJhcykge1xuICAgICAgaWYgKCFfLmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgRXh0cmEgYXJndW1lbnQgJyR7aXRlbX0nIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IFt0eXBlLCBrZXksIHZhbHVlXSA9IGl0ZW07XG4gICAgICBpZiAoIV8uaW5jbHVkZXMoU1VQUE9SVEVEX0VYVFJBX1RZUEVTLCB0eXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICAgIGBFeHRyYSBhcmd1bWVudCB0eXBlICcke3R5cGV9JyBpcyBub3Qga25vd24uIGAgK1xuICAgICAgICAgIGBTdXBwb3J0ZWQgaW50ZW50IGFyZ3VtZW50IHR5cGVzIGFyZTogJHtTVVBQT1JURURfRVhUUkFfVFlQRVN9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eShrZXkpIHx8IChfLmlzU3RyaW5nKGtleSkgJiYgXy50cmltKGtleSkgPT09ICcnKSkge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICAgIGBFeHRyYSBhcmd1bWVudCdzIGtleSBpbiAnJHtKU09OLnN0cmluZ2lmeShpdGVtKX0nIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgaWRlbnRpZmllcmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBOT19WQUxVRV9BUkdfVFlQRSkge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXkpO1xuICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICAgIGBJbnRlbnQgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyByZXF1aXJlcyBhIGAgK1xuICAgICAgICAgIGB2YWxpZCB2YWx1ZSB0byBiZSBwcm92aWRlZGBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdEFyZ3MucHVzaChgLS1lJHt0eXBlfWAsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZmxhZ3MpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goJy1mJywgZmxhZ3MpO1xuICB9XG4gIHJldHVybiByZXN1bHRBcmdzO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0QWN0aXZpdHlPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB1c2VyIFsnY3VycmVudCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBzZXJ2aWNlIGlzIHN0YXJ0ZWQuXG4gKiBUaGUgYGN1cnJlbnRgIHVzZXIgaWQgaXMgdXNlZCBieSBkZWZhdWx0XG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB3YWl0IFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIGlmIHlvdSB3YW50IHRvIGJsb2NrIHRoZSBtZXRob2QgY2FsbFxuICogdW50aWwgdGhlIGFjdGl2aXR5IG1hbmFnZXIncyBwcm9jZXNzIHJldHVybnMgdGhlIGNvbnRyb2wgdG8gdGhlIHN5c3RlbS5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHN0b3AgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgdG8gZm9yY2Ugc3RvcCB0aGUgdGFyZ2V0XG4gKiBhcHAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eVxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gd2luZG93aW5nTW9kZSAtIFRoZSB3aW5kb3dpbmcgbW9kZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGludG8uXG4gKiBDaGVjayBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9tYXN0ZXIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1dpbmRvd0NvbmZpZ3VyYXRpb24uamF2YVxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBwb3NzaWJsZSB3aW5kb3dpbmcgbW9kZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBXSU5ET1dJTkdfTU9ERV9gKS5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IGFjdGl2aXR5VHlwZSAtIFRoZSBhY3Rpdml0eSB0eXBlIHRvIGxhdW5jaCB0aGUgYWN0aXZpdHkgYXMuXG4gKiBDaGVjayBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9tYXN0ZXIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1dpbmRvd0NvbmZpZ3VyYXRpb24uamF2YVxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBwb3NzaWJsZSBhY3Rpdml0eSB0eXBlcyAoY29uc3RhbnRzIHN0YXJ0aW5nIHdpdGggYEFDVElWSVRZX1RZUEVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBkaXNwbGF5IC0gVGhlIGRpc3BsYXkgaWRlbnRpZmllciB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGludG8uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpdml0eSBpbnRlbnQgdG8gc3RhcnQsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWBcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gYWN0aW9uIC0gQWN0aW9uIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nfEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLiBNdXN0IGJlIHJlcHJlc2VudGVkXG4gKiBhcyBhcnJheSBvZiBhcnJheXMsIHdoZXJlIGVhY2ggc3ViYXJyYXkgaXRlbSBjb250YWlucyB0d28gb3IgdGhyZWUgc3RyaW5nIGl0ZW1zOlxuICogdmFsdWUgdHlwZSwga2V5IG5hbWUgYW5kIHRoZSB2YWx1ZSBpdHNlbGYuXG4gKiBTdXBwb3J0ZWQgdmFsdWUgdHlwZXMgYXJlOlxuICogLSBzOiBzdHJpbmcuIFZhbHVlIG11c3QgYmUgYSB2YWxpZCBzdHJpbmdcbiAqIC0gc246IG51bGwuIFZhbHVlIGlzIGlnbm9yZWQgZm9yIHRoaXMgdHlwZVxuICogLSB6OiBib29sZWFuLiBWYWx1ZSBtdXN0IGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogLSBpOiBpbnRlZ2VyLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgNC1ieXRlIGludGVnZXIgbnVtYmVyXG4gKiAtIGw6IGxvbmcuIFZhbHVlIG11c3QgYmUgYSB2YWxpZCA4LWJ5dGUgbG9uZyBudW1iZXJcbiAqIC0gZjogZmxvYXQ6IFZhbHVlIG11c3QgYmUgYSB2YWxpZCBmbG9hdCBudW1iZXJcbiAqIC0gdTogdXJpLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHN0cmluZ1xuICogLSBjbjogY29tcG9uZW50IG5hbWUuIFZhbHVlIG11c3QgYmUgYSB2YWxpZCBjb21wb25lbnQgbmFtZSBzdHJpbmdcbiAqIC0gaWE6IEludGVnZXJbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gaWFsOiBMaXN0PEludGVnZXI+LiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBpbnRlZ2Vyc1xuICogLSBsYTogTG9uZ1tdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBsb25nIG51bWJlcnNcbiAqIC0gbGFsOiBMaXN0PExvbmc+LiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBsb25nIG51bWJlcnNcbiAqIC0gZmE6IEZsb2F0W10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gZmFsOiBMaXN0PEZsb2F0Pi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgZmxvYXQgbnVtYmVyc1xuICogLSBzYTogU3RyaW5nW10uIFZhbHVlIG11c3QgYmUgY29tbWEtc2VwYXJhdGVkIHN0cmluZ3MuIFRvIGVtYmVkIGEgY29tbWEgaW50byBhIHN0cmluZyxcbiAqIGVzY2FwZSBpdCB1c2luZyBcIlxcLFwiXG4gKiAtIHNhbDogTGlzdDxTdHJpbmc+LiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogRm9yIGV4YW1wbGU6IFtbJ3MnLCAndmFyTmFtZTEnLCAnTXkgU3RyaW5nMSddLCBbJ3MnLCAndmFyTmFtZTInLCAnTXkgU3RyaW5nMiddLCBbJ2lhJywgJ2Fyck5hbWUnLCAnMSwyLDMsNCddXVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50Lmh0bWxcbiAqIGZvciB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmxhZyB2YWx1ZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIEZMQUdfQUNUSVZJVFlfKS5cbiAqIEZsYWcgdmFsdWVzIGNvdWxkIGJlIG1lcmdlZCB1c2luZyB0aGUgbG9naWNhbCAnb3InIG9wZXJhdGlvbi5cbiAqIEZvciBleGFtcGxlLCAweDEwMjAwMDAwIGlzIHRoZSBjb21iaW5hdGlvbiBvZiB0d28gZmxhZ3M6XG4gKiAweDEwMDAwMDAwIGBGTEFHX0FDVElWSVRZX05FV19UQVNLYCB8IDB4MDAyMDAwMDAgYEZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERURgXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIGFjdGl2aXR5IGludGVudC5cbiAqXG4gKiBAcGFyYW0ge1N0YXJ0QWN0aXZpdHlPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydEFjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRBY3Rpdml0eSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICAgIHdhaXQsXG4gICAgc3RvcCxcbiAgICB3aW5kb3dpbmdNb2RlLFxuICAgIGFjdGl2aXR5VHlwZSxcbiAgICBkaXNwbGF5LFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgQVBJX0xFVkVMX0FORFJPSURfOCkgPyAnc3RhcnQnIDogJ3N0YXJ0LWFjdGl2aXR5JyxcbiAgXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmICh3YWl0KSB7XG4gICAgY21kLnB1c2goJy1XJyk7XG4gIH1cbiAgaWYgKHN0b3ApIHtcbiAgICBjbWQucHVzaCgnLVMnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwod2luZG93aW5nTW9kZSkpIHtcbiAgICBjbWQucHVzaCgnLS13aW5kb3dpbmdNb2RlJywgd2luZG93aW5nTW9kZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGFjdGl2aXR5VHlwZSkpIHtcbiAgICBjbWQucHVzaCgnLS1hY3Rpdml0eVR5cGUnLCBhY3Rpdml0eVR5cGUpO1xuICB9XG4gIGlmICghXy5pc05pbChkaXNwbGF5KSkge1xuICAgIGNtZC5wdXNoKCctLWRpc3BsYXknLCBkaXNwbGF5KTtcbiAgfVxuICBjbWQucHVzaCguLi4ocGFyc2VJbnRlbnRTcGVjKG9wdHMpKSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBCcm9hZGNhc3RPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB1c2VyIFsnYWxsJ10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIGJyb2FkY2FzdCBpcyBzZW50LlxuICogVGhlIGBjdXJyZW50YCBhbGlhcyBhc3N1bWVzIHRoZSBjdXJyZW50IHVzZXIgSUQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlY2VpdmVyUGVybWlzc2lvbiAtIFJlcXVpcmUgcmVjZWl2ZXIgdG8gaG9sZCB0aGUgZ2l2ZW4gcGVybWlzc2lvbi5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzIFtmYWxzZV0gLSBXaGV0aGVyIHRoZSByZWNlaXZlciBtYXlcbiAqIHN0YXJ0IGFjdGl2aXRpZXMgZXZlbiBpZiBpbiB0aGUgYmFja2dyb3VuZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIGludGVudCB0byBicm9hZGNhc3QgdG8sIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gSW50ZW50IHN0YXJ0dXAtc3BlY2lmaWMgZmxhZ3MgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuXG4gKiBTZWUgYWJvdmUgZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi5cbiAqL1xuXG5cbi8qKlxuICogU2VuZCBhIGJyb2FkY2FzdCBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtCcm9hZGNhc3RPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVCcm9hZGNhc3QgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICByZWNlaXZlclBlcm1pc3Npb24sXG4gICAgYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMsXG4gIH0gPSBvcHRzO1xuICBjb25zdCBjbWQgPSBbJ2FtJywgJ2Jyb2FkY2FzdCddO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgaWYgKHJlY2VpdmVyUGVybWlzc2lvbikge1xuICAgIGNtZC5wdXNoKCctLXJlY2VpdmVyLXBlcm1pc3Npb24nLCByZWNlaXZlclBlcm1pc3Npb24pO1xuICB9XG4gIGlmIChhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cykge1xuICAgIGNtZC5wdXNoKCctLWFsbG93LWJhY2tncm91bmQtYWN0aXZpdHktc3RhcnRzJyk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRTZXJ2aWNlT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yZWdyb3VuZCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3VyIHNlcnZpY2UgbXVzdCBiZVxuICogc3RhcnRlZCBhcyBmb3JlZ3JvdW5kIHNlcnZpY2UuIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgdGhlIEFQSSBsZXZlbCBvZiB0aGVcbiAqIGRldmljZSB1bmRlciB0ZXN0IGlzIGJlbG93IDI2IChBbmRyb2lkIDgpLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZSBpbnRlbnQgdG8gc3RhcnQsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gSW50ZW50IHN0YXJ0dXAtc3BlY2lmaWMgZmxhZ3MgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuXG4gKiBTZWUgYWJvdmUgZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi5cbiAqL1xuXG4vKipcbiAqIFN0YXJ0cyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydFNlcnZpY2VPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHN0YXJ0aW5nIHRoZSBzZXJ2aWNlXG4gKiBvciByZXF1aXJlZCBvcHRpb25zIGFyZSBtaXNzaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0YXJ0U2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0U2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICAgIGZvcmVncm91bmQsXG4gIH0gPSBvcHRzO1xuICBjb25zdCBjbWQgPSBbJ2FtJ107XG4gIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgQVBJX0xFVkVMX0FORFJPSURfOCkge1xuICAgIGNtZC5wdXNoKCdzdGFydHNlcnZpY2UnKTtcbiAgfSBlbHNlIHtcbiAgICBjbWQucHVzaChmb3JlZ3JvdW5kID8gJ3N0YXJ0LWZvcmVncm91bmQtc2VydmljZScgOiAnc3RhcnQtc2VydmljZScpO1xuICB9XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBjbWQucHVzaCguLi4ocGFyc2VJbnRlbnRTcGVjKG9wdHMpKSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wU2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBydW5uaW5nLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZSBpbnRlbnQgdG8gc3RvcCwgZm9yIGV4YW1wbGVcbiAqIGBjb20uc29tZS5wYWNrYWdlLm5hbWUvLllvdXJTZXJ2aWNlU3ViQ2xhc3NOYW1lYC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gYWN0aW9uIC0gQWN0aW9uIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8QXJyYXk8c3RyaW5nPj59IGV4dHJhcyAtIE9wdGlvbmFsIGludGVudCBhcmd1bWVudHMuXG4gKiBTZWUgYWJvdmUgZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBTZWUgYWJvdmUgZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi5cbiAqL1xuXG4vKipcbiAqIFN0b3BzIHRoZSBnaXZlbiBzZXJ2aWNlIGludGVudC5cbiAqXG4gKiBAcGFyYW0ge1N0b3BTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdG9wcGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wU2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BTZXJ2aWNlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gIH0gPSBvcHRzO1xuICBjb25zdCBjbWQgPSBbXG4gICAgJ2FtJyxcbiAgICAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0b3BzZXJ2aWNlJyA6ICdzdG9wLXNlcnZpY2UnXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBjbWQucHVzaCguLi4ocGFyc2VJbnRlbnRTcGVjKG9wdHMpKSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbnRlbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
211
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbnRlbnQuanMiXSwibmFtZXMiOlsiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJwYXJzZUludGVudFNwZWMiLCJvcHRzIiwiaW50ZW50IiwiYWN0aW9uIiwidXJpIiwibWltZVR5cGUiLCJpZGVudGlmaWVyIiwiY2F0ZWdvcmllcyIsImNvbXBvbmVudCIsImV4dHJhcyIsImZsYWdzIiwicmVzdWx0QXJncyIsInB1c2giLCJfIiwiaXNOaWwiLCJpc0FycmF5IiwiZmxhdE1hcCIsIm1hcCIsImNOYW1lIiwicGFja2FnZSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiaXRlbSIsInR5cGUiLCJrZXkiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiaXNFbXB0eSIsImlzU3RyaW5nIiwidHJpbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc1VuZGVmaW5lZCIsIm1vYmlsZVN0YXJ0QWN0aXZpdHkiLCJ1c2VyIiwid2FpdCIsInN0b3AiLCJ3aW5kb3dpbmdNb2RlIiwiYWN0aXZpdHlUeXBlIiwiZGlzcGxheSIsImNtZCIsImFkYiIsImdldEFwaUxldmVsIiwic2hlbGwiLCJtb2JpbGVCcm9hZGNhc3QiLCJyZWNlaXZlclBlcm1pc3Npb24iLCJhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyIsIm1vYmlsZVN0YXJ0U2VydmljZSIsImZvcmVncm91bmQiLCJtb2JpbGVTdG9wU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLENBQzVCLEdBRDRCLEVBQ3ZCRCxpQkFEdUIsRUFDSixHQURJLEVBQ0MsR0FERCxFQUNNLEdBRE4sRUFDVyxHQURYLEVBQ2dCLEdBRGhCLEVBQ3FCLElBRHJCLEVBRTVCLElBRjRCLEVBRXRCLEtB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UyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBaEJEOztBQTRDQXpDLFFBQVEsQ0FBQ2tELGlCQUFULEdBQTZCLGVBQWVBLGlCQUFmLENBQWtDaEQsSUFBSSxHQUFHLEVBQXpDLEVBQTZDO0FBQ3hFLFFBQU07QUFDSmlDLElBQUFBO0FBREksTUFFRmpDLElBRko7QUFHQSxRQUFNdUMsR0FBRyxHQUFHLENBQ1YsSUFEVSxFQUVULE9BQU0sS0FBS0MsR0FBTCxDQUFTQyxXQUFULEVBQU4sSUFBK0I1QyxtQkFBaEMsR0FBdUQsYUFBdkQsR0FBdUUsY0FGN0QsQ0FBWjs7QUFJQSxNQUFJLENBQUNlLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBYkQ7O2VBaUJlekMsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW50ZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -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.default = exports.helpers = exports.commands = void 0;
8
+ exports.helpers = exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -17,7 +17,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
17
17
 
18
18
  var _ws = _interopRequireDefault(require("ws"));
19
19
 
20
- var _appiumBaseDriver = require("appium-base-driver");
20
+ var _baseDriver = require("@appium/base-driver");
21
21
 
22
22
  const GET_SERVER_LOGS_FEATURE = 'get_server_logs';
23
23
  let commands = {},
@@ -26,7 +26,7 @@ let commands = {},
26
26
  exports.helpers = helpers;
27
27
  exports.commands = commands;
28
28
 
29
- const WEBSOCKET_ENDPOINT = sessionId => `${_appiumBaseDriver.DEFAULT_WS_PATHNAME_PREFIX}/session/${sessionId}/appium/device/logcat`;
29
+ const WEBSOCKET_ENDPOINT = sessionId => `${_baseDriver.DEFAULT_WS_PATHNAME_PREFIX}/session/${sessionId}/appium/device/logcat`;
30
30
 
31
31
  function toLogRecord(timestamp, level, message) {
32
32
  return {
@@ -131,7 +131,7 @@ commands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast() {
131
131
  };
132
132
 
133
133
  commands.getLogTypes = async function getLogTypes() {
134
- const nativeLogTypes = await _appiumBaseDriver.BaseDriver.prototype.getLogTypes.call(this);
134
+ const nativeLogTypes = await _baseDriver.BaseDriver.prototype.getLogTypes.call(this);
135
135
 
136
136
  if (this.isWebContext()) {
137
137
  const webLogTypes = await this.chromedriver.jwproxy.command('/log/types', 'GET');
@@ -148,7 +148,7 @@ commands.getLog = async function getLog(logType) {
148
148
  });
149
149
  }
150
150
 
151
- return await _appiumBaseDriver.BaseDriver.prototype.getLog.call(this, logType);
151
+ return await _baseDriver.BaseDriver.prototype.getLog.call(this, logType);
152
152
  };
153
153
 
154
154
  Object.assign(extensions, commands, helpers);
@@ -156,4 +156,4 @@ var _default = extensions;
156
156
  exports.default = _default;require('source-map-support').install();
157
157
 
158
158
 
159
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwibmFtZXMiOlsiR0VUX1NFUlZFUl9MT0dTX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiV0VCU09DS0VUX0VORFBPSU5UIiwic2Vzc2lvbklkIiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0b0xvZ1JlY29yZCIsInRpbWVzdGFtcCIsImxldmVsIiwibWVzc2FnZSIsInN1cHBvcnRlZExvZ1R5cGVzIiwibG9nY2F0IiwiZGVzY3JpcHRpb24iLCJnZXR0ZXIiLCJzZWxmIiwiYWRiIiwiZ2V0TG9nY2F0TG9ncyIsImJ1Z3JlcG9ydCIsIm91dHB1dCIsIkRhdGUiLCJub3ciLCJzcGxpdCIsIm9zIiwiRU9MIiwibWFwIiwieCIsInNlcnZlciIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwibG9nIiwidW53cmFwIiwicmVjb3JkIiwiXyIsImlzRW1wdHkiLCJwcmVmaXgiLCJtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QiLCJwYXRobmFtZSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwiZGVidWciLCJpbmZvIiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVxIiwicmVtb3RlSXAiLCJoZWFkZXJzIiwiY29ubmVjdGlvbiIsInJlbW90ZUFkZHJlc3MiLCJfbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIiLCJsb2dSZWNvcmQiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJzZXRMb2djYXRMaXN0ZW5lciIsImNvZGUiLCJyZWFzb24iLCJyZW1vdmVMb2djYXRMaXN0ZW5lciIsImlnbiIsImNsb3NlTXNnIiwidG9TdHJpbmciLCJhZGRXZWJTb2NrZXRIYW5kbGVyIiwibW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QiLCJyZW1vdmVXZWJTb2NrZXRIYW5kbGVyIiwiZ2V0TG9nVHlwZXMiLCJuYXRpdmVMb2dUeXBlcyIsIkJhc2VEcml2ZXIiLCJwcm90b3R5cGUiLCJjYWxsIiwiaXNXZWJDb250ZXh0Iiwid2ViTG9nVHlwZXMiLCJjaHJvbWVkcml2ZXIiLCJqd3Byb3h5IiwiY29tbWFuZCIsImdldExvZyIsImxvZ1R5cGUiLCJrZXlzIiwiaW5jbHVkZXMiLCJ0eXBlIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHVCQUF1QixHQUFHLGlCQUFoQztBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBSUMsU0FBRCxJQUFnQixHQUFFQyw0Q0FBMkIsWUFBV0QsU0FBVSx1QkFBN0Y7O0FBR0EsU0FBU0UsV0FBVCxDQUFzQkMsU0FBdEIsRUFBaUNDLEtBQWpDLEVBQXdDQyxPQUF4QyxFQUFpRDtBQUMvQyxTQUFPO0FBQ0xGLElBQUFBLFNBREs7QUFFTEMsSUFBQUEsS0FGSztBQUdMQyxJQUFBQTtBQUhLLEdBQVA7QUFLRDs7QUFFRFAsVUFBVSxDQUFDUSxpQkFBWCxHQUErQjtBQUM3QkMsRUFBQUEsTUFBTSxFQUFFO0FBQ05DLElBQUFBLFdBQVcsRUFBRSxvRUFEUDtBQUVOQyxJQUFBQSxNQUFNLEVBQUUsTUFBT0MsSUFBUCxJQUFnQixNQUFNQSxJQUFJLENBQUNDLEdBQUwsQ0FBU0MsYUFBVDtBQUZ4QixHQURxQjtBQUs3QkMsRUFBQUEsU0FBUyxFQUFFO0FBQ1RMLElBQUFBLFdBQVcsRUFBRyx1REFETDtBQUVUQyxJQUFBQSxNQUFNLEVBQUUsTUFBT0MsSUFBUCxJQUFnQjtBQUN0QixZQUFNSSxNQUFNLEdBQUcsTUFBTUosSUFBSSxDQUFDQyxHQUFMLENBQVNFLFNBQVQsRUFBckI7QUFDQSxZQUFNVixTQUFTLEdBQUdZLElBQUksQ0FBQ0MsR0FBTCxFQUFsQjtBQUNBLGFBQU9GLE1BQU0sQ0FBQ0csS0FBUCxDQUFh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bEIsQ0FBMEJDLE9BQTFCLENBQWtDLFlBQWxDLEVBQWdELEtBQWhELENBQTFCO0FBQ0EsV0FBTyxDQUFDLEdBQUdSLGNBQUosRUFBb0IsR0FBR0ssV0FBdkIsQ0FBUDtBQUNEOztBQUNELFNBQU9MLGNBQVA7QUFDRCxDQVBEOztBQVNBbEUsUUFBUSxDQUFDMkUsTUFBVCxHQUFrQixlQUFlQSxNQUFmLENBQXVCQyxPQUF2QixFQUFnQztBQUNoRCxNQUFJLEtBQUtOLFlBQUwsTUFBdUIsQ0FBQ3ZDLGdCQUFFOEMsSUFBRixDQUFPLEtBQUtuRSxpQkFBWixFQUErQm9FLFFBQS9CLENBQXdDRixPQUF4QyxDQUE1QixFQUE4RTtBQUM1RSxXQUFPLE1BQU0sS0FBS0osWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQWtDLE1BQWxDLEVBQTBDLE1BQTFDLEVBQWtEO0FBQUNLLE1BQUFBLElBQUksRUFBRUg7QUFBUCxLQUFsRCxDQUFiO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNVCw2QkFBV0MsU0FBWCxDQUFxQk8sTUFBckIsQ0FBNEJOLElBQTVCLENBQWlDLElBQWpDLEVBQXVDTyxPQUF2QyxDQUFiO0FBQ0QsQ0FMRDs7QUFPQUksTUFBTSxDQUFDQyxNQUFQLENBQWMvRSxVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCwgQmFzZURyaXZlciB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYEFzc2lnbmluZyBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIHRvICR7cGF0aG5hbWV9YCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL2Jsb2IvbWFzdGVyL2RvYy93cy5tZFxuICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgbm9TZXJ2ZXI6IHRydWUsXG4gIH0pO1xuICB3c3Mub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIGNvbnN0IHJlbW90ZUlwID0gXy5pc0VtcHR5KHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSlcbiAgICAgICAgPyByZXEuY29ubmVjdGlvbj8ucmVtb3RlQWRkcmVzc1xuICAgICAgICA6IHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXTtcbiAgICAgIGxvZy5kZWJ1ZyhgRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbiBmcm9tICR7cmVtb3RlSXB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IChsb2dSZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHdzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQobG9nUmVjb3JkLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkYi5zZXRMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG5cbiAgICB3cy5vbignY2xvc2UnLCAoY29kZSwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmFkYi5yZW1vdmVMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2xvc2VNc2cgPSAnTG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgaXMgY2xvc2VkLic7XG4gICAgICBpZiAoIV8uaXNFbXB0eShjb2RlKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIENvZGU6ICR7Y29kZX0uYDtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KHJlYXNvbikpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBSZWFzb246ICR7cmVhc29uLnRvU3RyaW5nKCl9LmA7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoY2xvc2VNc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgdGhpcy5zZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSwgd3NzKTtcbn07XG5cbi8qKlxuICogU3RvcHMgdGhlIHByZXZpb3VzbHkgc3RhcnRlZCBsb2djYXQgYnJvYWRjYXN0aW5nIHdlc29ja2V0IHNlcnZlci5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIG5vIHNlcnZlciBpcyBydW5uaW5nLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyJyk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLnJlbW92ZVdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2dUeXBlcyAoKSB7XG4gIGNvbnN0IG5hdGl2ZUxvZ1R5cGVzID0gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nVHlwZXMuY2FsbCh0aGlzKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCB3ZWJMb2dUeXBlcyA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZy90eXBlcycsICdHRVQnKTtcbiAgICByZXR1cm4gWy4uLm5hdGl2ZUxvZ1R5cGVzLCAuLi53ZWJMb2dUeXBlc107XG4gIH1cbiAgcmV0dXJuIG5hdGl2ZUxvZ1R5cGVzO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpICYmICFfLmtleXModGhpcy5zdXBwb3J0ZWRMb2dUeXBlcykuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKCcvbG9nJywgJ1BPU1QnLCB7dHlwZTogbG9nVHlwZX0pO1xuICB9XG4gIHJldHVybiBhd2FpdCBCYXNlRHJpdmVyLnByb3RvdHlwZS5nZXRMb2cuY2FsbCh0aGlzLCBsb2dUeXBlKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9sb2cuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
159
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwibmFtZXMiOlsiR0VUX1NFUlZFUl9MT0dTX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiV0VCU09DS0VUX0VORFBPSU5UIiwic2Vzc2lvbklkIiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0b0xvZ1JlY29yZCIsInRpbWVzdGFtcCIsImxldmVsIiwibWVzc2FnZSIsInN1cHBvcnRlZExvZ1R5cGVzIiwibG9nY2F0IiwiZGVzY3JpcHRpb24iLCJnZXR0ZXIiLCJzZWxmIiwiYWRiIiwiZ2V0TG9nY2F0TG9ncyIsImJ1Z3JlcG9ydCIsIm91dHB1dCIsIkRhdGUiLCJub3ciLCJzcGxpdCIsIm9zIiwiRU9MIiwibWFwIiwieCIsInNlcnZlciIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwibG9nIiwidW53cmFwIiwicmVjb3JkIiwiXyIsImlzRW1wdHkiLCJwcmVmaXgiLCJtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QiLCJwYXRobmFtZSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwiZGVidWciLCJpbmZvIiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVxIiwicmVtb3RlSXAiLCJoZWFkZXJzIiwiY29ubmVjdGlvbiIsInJlbW90ZUFkZHJlc3MiLCJfbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIiLCJsb2dSZWNvcmQiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJzZXRMb2djYXRMaXN0ZW5lciIsImNvZGUiLCJyZWFzb24iLCJyZW1vdmVMb2djYXRMaXN0ZW5lciIsImlnbiIsImNsb3NlTXNnIiwidG9TdHJpbmciLCJhZGRXZWJTb2NrZXRIYW5kbGVyIiwibW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QiLCJyZW1vdmVXZWJTb2NrZXRIYW5kbGVyIiwiZ2V0TG9nVHlwZXMiLCJuYXRpdmVMb2dUeXBlcyIsIkJhc2VEcml2ZXIiLCJwcm90b3R5cGUiLCJjYWxsIiwiaXNXZWJDb250ZXh0Iiwid2ViTG9nVHlwZXMiLCJjaHJvbWVkcml2ZXIiLCJqd3Byb3h5IiwiY29tbWFuZCIsImdldExvZyIsImxvZ1R5cGUiLCJrZXlzIiwiaW5jbHVkZXMiLCJ0eXBlIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHVCQUF1QixHQUFHLGlCQUFoQztBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBSUMsU0FBRCxJQUFnQixHQUFFQyxzQ0FBMkIsWUFBV0QsU0FBVSx1QkFBN0Y7O0FBR0EsU0FBU0UsV0FBVCxDQUFzQkMsU0FBdEIsRUFBaUNDLEtBQWpDLEVBQXdDQyxPQUF4QyxFQUFpRDtBQUMvQyxTQUFPO0FBQ0xGLElBQUFBLFNBREs7QUFFTEMsSUFBQUEsS0FGSztBQUdMQyxJQUFBQTtBQUhLLEdBQVA7QUFLRDs7QUFFRFAsVUFBVSxDQUFDUSxpQkFBWCxHQUErQjtBQUM3QkMsRUFBQUEsTUFBTSxFQUFFO0FBQ05DLElBQUFBLFdBQVcsRUFBRSxvRUFEUDtBQUVOQyxJQUFBQSxNQUFNLEVBQUUsTUFBT0MsSUFBUCxJQUFnQixNQUFNQSxJQUFJLENBQUNDLEdBQUwsQ0FBU0MsYUFBVDtBQUZ4QixHQURxQjtBQUs3QkMsRUFBQUEsU0FBUyxFQUFFO0FBQ1RMLElBQUFBLFdBQVcsRUFBRyx1REFETDtBQUVUQyxJQUFBQSxNQUFNLEVBQUUsTUFBT0MsSUFBUCxJQUFnQjtBQUN0QixZQUFNSSxNQUFNLEdBQUcsTUFBTUosSUFBSSxDQUFDQyxHQUFMLENBQVNFLFNBQVQsRUFBckI7QUFDQSxZQUFNVixTQUFTLEdBQUdZLElBQUksQ0FBQ0MsR0FBTCxFQUFsQjtBQUNBLGFBQU9GLE1BQU0sQ0FBQ0csS0FBUCxDQUFh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bEIsQ0FBMEJDLE9BQTFCLENBQWtDLFlBQWxDLEVBQWdELEtBQWhELENBQTFCO0FBQ0EsV0FBTyxDQUFDLEdBQUdSLGNBQUosRUFBb0IsR0FBR0ssV0FBdkIsQ0FBUDtBQUNEOztBQUNELFNBQU9MLGNBQVA7QUFDRCxDQVBEOztBQVNBbEUsUUFBUSxDQUFDMkUsTUFBVCxHQUFrQixlQUFlQSxNQUFmLENBQXVCQyxPQUF2QixFQUFnQztBQUNoRCxNQUFJLEtBQUtOLFlBQUwsTUFBdUIsQ0FBQ3ZDLGdCQUFFOEMsSUFBRixDQUFPLEtBQUtuRSxpQkFBWixFQUErQm9FLFFBQS9CLENBQXdDRixPQUF4QyxDQUE1QixFQUE4RTtBQUM1RSxXQUFPLE1BQU0sS0FBS0osWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQWtDLE1BQWxDLEVBQTBDLE1BQTFDLEVBQWtEO0FBQUNLLE1BQUFBLElBQUksRUFBRUg7QUFBUCxLQUFsRCxDQUFiO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNVCx1QkFBV0MsU0FBWCxDQUFxQk8sTUFBckIsQ0FBNEJOLElBQTVCLENBQWlDLElBQWpDLEVBQXVDTyxPQUF2QyxDQUFiO0FBQ0QsQ0FMRDs7QUFPQUksTUFBTSxDQUFDQyxNQUFQLENBQWMvRSxVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCwgQmFzZURyaXZlciB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSA9ICdnZXRfc2VydmVyX2xvZ3MnO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IFdFQlNPQ0tFVF9FTkRQT0lOVCA9IChzZXNzaW9uSWQpID0+IGAke0RFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYfS9zZXNzaW9uLyR7c2Vzc2lvbklkfS9hcHBpdW0vZGV2aWNlL2xvZ2NhdGA7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TZWxlbml1bUhRL3NlbGVuaXVtL2Jsb2IvMGQ0MjU2NzZiM2M5ZGYyNjFkZDY0MTkxN2Y4NjdkNGQ1Y2U3Nzc0ZC9qYXZhL2NsaWVudC9zcmMvb3JnL29wZW5xYS9zZWxlbml1bS9sb2dnaW5nL0xvZ0VudHJ5LmphdmFcbmZ1bmN0aW9uIHRvTG9nUmVjb3JkICh0aW1lc3RhbXAsIGxldmVsLCBtZXNzYWdlKSB7XG4gIHJldHVybiB7XG4gICAgdGltZXN0YW1wLFxuICAgIGxldmVsLFxuICAgIG1lc3NhZ2UsXG4gIH07XG59XG5cbmV4dGVuc2lvbnMuc3VwcG9ydGVkTG9nVHlwZXMgPSB7XG4gIGxvZ2NhdDoge1xuICAgIGRlc2NyaXB0aW9uOiAnTG9ncyBmb3IgQW5kcm9pZCBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2UgYW5kIGVtdWxhdG9ycyB2aWEgQURCJyxcbiAgICBnZXR0ZXI6IGFzeW5jIChzZWxmKSA9PiBhd2FpdCBzZWxmLmFkYi5nZXRMb2djYXRMb2dzKCksXG4gIH0sXG4gIGJ1Z3JlcG9ydDoge1xuICAgIGRlc2NyaXB0aW9uOiBgJ2FkYiBidWdyZXBvcnQnIG91dHB1dCBmb3IgYWR2YW5jZWQgaXNzdWVzIGRpYWdub3N0aWNgLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNlbGYuYWRiLmJ1Z3JlcG9ydCgpO1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBvdXRwdXQuc3BsaXQob3MuRU9MKVxuICAgICAgICAubWFwKCh4KSA9PiB0b0xvZ1JlY29yZCh0aW1lc3RhbXAsICdBTEwnLCB4KSk7XG4gICAgfSxcbiAgfSxcbiAgc2VydmVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdBcHBpdW0gc2VydmVyIGxvZ3MnLFxuICAgIGdldHRlcjogKHNlbGYpID0+IHtcbiAgICAgIHNlbGYuZW5zdXJlRmVhdHVyZUVuYWJsZWQoR0VUX1NFUlZFUl9MT0dTX0ZFQVRVUkUpO1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBsb2cudW53cmFwKCkucmVjb3JkXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FMTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNFbXB0eSh4LnByZWZpeCkgPyB4Lm1lc3NhZ2UgOiBgWyR7eC5wcmVmaXh9XSAke3gubWVzc2FnZX1gKVxuICAgICAgICApO1xuICAgIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YXJ0cyBBbmRyb2lkIGxvZ2NhdCBicm9hZGNhc3Qgd2Vic29ja2V0IG9uIHRoZSBzYW1lIGhvc3QgYW5kIHBvcnRcbiAqIHdoZXJlIEFwcGl1bSBzZXJ2ZXIgaXMgcnVubmluZyBhdCBgL3dzL3Nlc3Npb24vOnNlc3Npb25JZDovYXBwaXVtL2xvZ2NhdGAgZW5kcG9pbnQuIFRoZSBtZXRob2RcbiAqIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSB3ZWIgc29ja2V0IGlzIGFscmVhZHkgbGlzdGVuaW5nLlxuICpcbiAqIEVhY2ggY29ubmVjdGVkIHdlYnNvY2tldCBsaXN0ZW5lciB3aWxsIHJlY2VpdmUgbG9nY2F0IGxvZyBsaW5lc1xuICogYXMgc29vbiBhcyB0aGV5IGFyZSB2aXNpYmxlIHRvIEFwcGl1bS5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoIV8uaXNFbXB0eShhd2FpdCB0aGlzLnNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyhwYXRobmFtZSkpKSB7XG4gICAgbG9nLmRlYnVnKGBUaGUgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlciBpcyBhbHJlYWR5IGxpc3RlbmluZyBhdCAke3BhdGhuYW1lfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5pbmZvKGBBc3NpZ25pbmcgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlciB0byAke3BhdGhuYW1lfWApO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9ibG9iL21hc3Rlci9kb2Mvd3MubWRcbiAgY29uc3Qgd3NzID0gbmV3IFdlYlNvY2tldC5TZXJ2ZXIoe1xuICAgIG5vU2VydmVyOiB0cnVlLFxuICB9KTtcbiAgd3NzLm9uKCdjb25uZWN0aW9uJywgKHdzLCByZXEpID0+IHtcbiAgICBpZiAocmVxKSB7XG4gICAgICBjb25zdCByZW1vdGVJcCA9IF8uaXNFbXB0eShyZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10pXG4gICAgICAgID8gcmVxLmNvbm5lY3Rpb24/LnJlbW90ZUFkZHJlc3NcbiAgICAgICAgOiByZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ107XG4gICAgICBsb2cuZGVidWcoYEVzdGFibGlzaGVkIGEgbmV3IGxvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGNvbm5lY3Rpb24gZnJvbSAke3JlbW90ZUlwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZGVidWcoJ0VzdGFibGlzaGVkIGEgbmV3IGxvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGNvbm5lY3Rpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKSkge1xuICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSAobG9nUmVjb3JkKSA9PiB7XG4gICAgICAgIGlmICh3cz8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICB3cy5zZW5kKGxvZ1JlY29yZC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5hZGIuc2V0TG9nY2F0TGlzdGVuZXIodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpO1xuXG4gICAgd3Mub24oJ2Nsb3NlJywgKGNvZGUsIHJlYXNvbikgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5hZGIucmVtb3ZlTG9nY2F0TGlzdGVuZXIodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpO1xuICAgICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICAgIHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbGV0IGNsb3NlTXNnID0gJ0xvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGlzIGNsb3NlZC4nO1xuICAgICAgaWYgKCFfLmlzRW1wdHkoY29kZSkpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBDb2RlOiAke2NvZGV9LmA7XG4gICAgICB9XG4gICAgICBpZiAoIV8uaXNFbXB0eShyZWFzb24pKSB7XG4gICAgICAgIGNsb3NlTXNnICs9IGAgUmVhc29uOiAke3JlYXNvbi50b1N0cmluZygpfS5gO1xuICAgICAgfVxuICAgICAgbG9nLmRlYnVnKGNsb3NlTXNnKTtcbiAgICB9KTtcbiAgfSk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLmFkZFdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUsIHdzcyk7XG59O1xuXG4vKipcbiAqIFN0b3BzIHRoZSBwcmV2aW91c2x5IHN0YXJ0ZWQgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZXNvY2tldCBzZXJ2ZXIuXG4gKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSBpZiBubyBzZXJ2ZXIgaXMgcnVubmluZy5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCAoKSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gV0VCU09DS0VUX0VORFBPSU5UKHRoaXMuc2Vzc2lvbklkKTtcbiAgaWYgKF8uaXNFbXB0eShhd2FpdCB0aGlzLnNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyhwYXRobmFtZSkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdTdG9wcGluZyB0aGUgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlcicpO1xuICBhd2FpdCB0aGlzLnNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbn07XG5cbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBjb25zdCBuYXRpdmVMb2dUeXBlcyA9IGF3YWl0IEJhc2VEcml2ZXIucHJvdG90eXBlLmdldExvZ1R5cGVzLmNhbGwodGhpcyk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3Qgd2ViTG9nVHlwZXMgPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoJy9sb2cvdHlwZXMnLCAnR0VUJyk7XG4gICAgcmV0dXJuIFsuLi5uYXRpdmVMb2dUeXBlcywgLi4ud2ViTG9nVHlwZXNdO1xuICB9XG4gIHJldHVybiBuYXRpdmVMb2dUeXBlcztcbn07XG5cbmNvbW1hbmRzLmdldExvZyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZyAobG9nVHlwZSkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSAmJiAhXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpLmluY2x1ZGVzKGxvZ1R5cGUpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZycsICdQT1NUJywge3R5cGU6IGxvZ1R5cGV9KTtcbiAgfVxuICByZXR1cm4gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nLmNhbGwodGhpcywgbG9nVHlwZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvbG9nLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -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.default = exports.helpers = exports.commands = void 0;
8
+ exports.helpers = exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
@@ -13,7 +13,7 @@ var _logger = _interopRequireDefault(require("../logger"));
13
13
 
14
14
  var _lodash = _interopRequireDefault(require("lodash"));
15
15
 
16
- var _appiumBaseDriver = require("appium-base-driver");
16
+ var _baseDriver = require("@appium/base-driver");
17
17
 
18
18
  var _bluebird = _interopRequireDefault(require("bluebird"));
19
19
 
@@ -210,7 +210,7 @@ commands.toggleLocationServices = async function toggleLocationServices() {
210
210
 
211
211
  await this.toggleSetting('LOCATION_SOURCE_SETTINGS', seq);
212
212
  } else {
213
- throw new _appiumBaseDriver.errors.NotYetImplementedError();
213
+ throw new _baseDriver.errors.NotYetImplementedError();
214
214
  }
215
215
  };
216
216
 
@@ -269,4 +269,4 @@ var _default = extensions;
269
269
  exports.default = _default;require('source-map-support').install();
270
270
 
271
271
 
272
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJBSVJQTEFORV9NT0RFX01BU0siLCJXSUZJX01BU0siLCJEQVRBX01BU0siLCJHRU9fRVBTSUxPTiIsIk51bWJlciIsIk1JTl9WQUxVRSIsImdldE5ldHdvcmtDb25uZWN0aW9uIiwibG9nIiwiaW5mbyIsImFpcnBsYW5lTW9kZU9uIiwiYWRiIiwiaXNBaXJwbGFuZU1vZGVPbiIsImNvbm5lY3Rpb24iLCJ3aWZpT24iLCJpc1dpZmlPbiIsImRhdGFPbiIsImlzRGF0YU9uIiwic2V0TmV0d29ya0Nvbm5lY3Rpb24iLCJ0eXBlIiwic2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlIiwic2hvdWxkRW5hYmxlV2lmaSIsInNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uIiwiY3VycmVudFN0YXRlIiwiaXNBaXJwbGFuZU1vZGVFbmFibGVkIiwiaXNXaUZpRW5hYmxlZCIsImlzRGF0YUVuYWJsZWQiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsInNldEFpcnBsYW5lTW9kZSIsImJyb2FkY2FzdEFpcnBsYW5lTW9kZSIsInNldFdpZmlTdGF0ZSIsInNldERhdGFTdGF0ZSIsImlzRW11bGF0b3IiLCJ3aWZpIiwidG9nZ2xlRGF0YSIsImRhdGEiLCJzZXRXaWZpQW5kRGF0YSIsInRvZ2dsZVdpRmkiLCJ0b2dnbGVGbGlnaHRNb2RlIiwiZmxpZ2h0TW9kZSIsInNldEdlb0xvY2F0aW9uIiwibG9jYXRpb24iLCJnZXRHZW9Mb2NhdGlvbiIsImUiLCJ3YXJuIiwibWVzc2FnZSIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiYWx0aXR1ZGUiLCJtb2JpbGVSZWZyZXNoR3BzQ2FjaGUiLCJvcHRzIiwidGltZW91dE1zIiwicmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUiLCJwYXJzZUZsb2F0IiwiS2V5Q29kZSIsIlVQIiwiRE9XTiIsIlJJR0hUIiwiQ0VOVEVSIiwidG9nZ2xlTG9jYXRpb25TZXJ2aWNlcyIsImFwaSIsImdldEFwaUxldmVsIiwicHJvdmlkZXJzIiwiZ2V0TG9jYXRpb25Qcm92aWRlcnMiLCJpc0dwc0VuYWJsZWQiLCJpbmRleE9mIiwidG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlciIsInNlcSIsInB1c2giLCJrZXlldmVudCIsInRvZ2dsZVNldHRpbmciLCJlcnJvcnMiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwic2V0dGluZyIsInByZUtleVNlcSIsIl8iLCJpc051bGwiLCJvcGVuU2V0dGluZ3NBY3Rpdml0eSIsImtleSIsImRvS2V5IiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImlnbiIsImJhY2siLCJCIiwiZGVsYXkiLCJ3cmFwcGVkIiwiYm9vdHN0cmFwIiwiaWdub3JlVW5leHBlY3RlZFNodXRkb3duIiwicmVzdGFydCIsInN0YXJ0IiwiZGlzYWJsZUFuZHJvaWRXYXRjaGVycyIsImFjY2VwdFNzbENlcnRzIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7OztBQUVBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEtBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEtBQWxCO0FBTUEsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLFNBQTNCOztBQUVBUixRQUFRLENBQUNTLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLEdBQXVDO0FBQ3JFQyxrQkFBSUMsSUFBSixDQUFTLDRCQUFUOztBQUNBLE1BQUlDLGNBQWMsR0FBRyxNQUFNLEtBQUtDLEdBQUwsQ0FBU0MsZ0JBQVQsRUFBM0I7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QUFRLElBQVIsQ0FBTjtBQUNBLFFBQU0sS0FBSzVFLEdBQUwsQ0FBUzBELFFBQVQsQ0FBa0JTLEdBQWxCLENBQU47QUFDRCxDQUpEOztBQU1BL0UsT0FBTyxDQUFDNEIsdUJBQVIsR0FBa0MsZUFBZUEsdUJBQWYsQ0FBd0M2RCxPQUF4QyxFQUFpRDtBQUNqRixNQUFJLENBQUMsS0FBS0MsU0FBVixFQUFxQjtBQUNuQixXQUFPLE1BQU1ELE9BQU8sRUFBcEI7QUFDRDs7QUFFRCxPQUFLQyxTQUFMLENBQWVDLHdCQUFmLEdBQTBDLElBQTFDOztBQUNBLE1BQUk7QUFDRixVQUFNRixPQUFPLEVBQWI7QUFDQSxVQUFNLEtBQUs3RSxHQUFMLENBQVNnRixPQUFULEVBQU47QUFDQSxVQUFNLEtBQUtGLFNBQUwsQ0FBZUcsS0FBZixDQUFxQixLQUFLMUMsSUFBTCxDQUFVOEIsVUFBL0IsRUFBMkMsS0FBSzlCLElBQUwsQ0FBVTJDLHNCQUFyRCxFQUE2RSxLQUFLM0MsSUFBTCxDQUFVNEMsY0FBdkYsQ0FBTjtBQUNELEdBSkQsU0FJVTtBQUNSLFNBQUtMLFNBQUwsQ0FBZUMsd0JBQWYsR0FBMEMsS0FBMUM7QUFDRDtBQUNGLENBYkQ7O0FBZUFLLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjaEcsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIGxvZy5pbmZvKCdHZXR0aW5nIG5ldHdvcmsgY29ubmVjdGlvbicpO1xuICBsZXQgYWlycGxhbmVNb2RlT24gPSBhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCk7XG4gIGxldCBjb25uZWN0aW9uID0gYWlycGxhbmVNb2RlT24gPyBBSVJQTEFORV9NT0RFX01BU0sgOiAwO1xuXG4gIC8vIG5vIG5lZWQgdG8gY2hlY2sgYW55dGhpbmcgZWxzZSBpZiB3ZSBhcmUgaW4gYWlycGxhbmUgbW9kZVxuICBpZiAoIWFpcnBsYW5lTW9kZU9uKSB7XG4gICAgbGV0IHdpZmlPbiA9IGF3YWl0IHRoaXMuaXNXaWZpT24oKTtcbiAgICBjb25uZWN0aW9uIHw9ICh3aWZpT24gPyBXSUZJX01BU0sgOiAwKTtcbiAgICBsZXQgZGF0YU9uID0gYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKTtcbiAgICBjb25uZWN0aW9uIHw9IChkYXRhT24gPyBEQVRBX01BU0sgOiAwKTtcbiAgfVxuXG4gIHJldHVybiBjb25uZWN0aW9uO1xufTtcblxuLyoqXG4gKiBkZWNvdXBsaW5nIHRvIG92ZXJyaWRlIHRoZSBiZWhhdmlvdXIgaW4gb3RoZXIgZHJpdmVycyBsaWtlIFVpQXV0b21hdG9yMi5cbiAqL1xuY29tbWFuZHMuaXNXaWZpT24gPSBhc3luYyBmdW5jdGlvbiBpc1dpZmlPbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5pc1dpZmlPbigpO1xufTtcblxuY29tbWFuZHMuc2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBzZXROZXR3b3JrQ29ubmVjdGlvbiAodHlwZSkge1xuICBsb2cuaW5mbygnU2V0dGluZyBuZXR3b3JrIGNvbm5lY3Rpb24nKTtcbiAgLy8gZGVjb2RlIHRoZSBpbnB1dFxuICBjb25zdCBzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUgPSAodHlwZSAmIEFJUlBMQU5FX01PREVfTUFTSykgIT09IDA7XG4gIGNvbnN0IHNob3VsZEVuYWJsZVdpZmkgPSAodHlwZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID0gKHR5cGUgJiBEQVRBX01BU0spICE9PSAwO1xuXG4gIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGF3YWl0IHRoaXMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24oKTtcbiAgY29uc3QgaXNBaXJwbGFuZU1vZGVFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIEFJUlBMQU5FX01PREVfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzV2lGaUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgV0lGSV9NQVNLKSAhPT0gMDtcbiAgY29uc3QgaXNEYXRhRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBEQVRBX01BU0spICE9PSAwO1xuXG4gIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUgIT09IGlzQWlycGxhbmVNb2RlRW5hYmxlZCkge1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5icm9hZGNhc3RBaXJwbGFuZU1vZGUoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBsb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgbG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24vV2ktRmkgc3RhdGVzLCBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IHNldCB0byBleHBlY3RlZCB2YWx1ZXMnKTtcbiAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBaXJwbGFuZU1vZGVPbigpKSB7XG4gICAgICByZXR1cm4gQUlSUExBTkVfTU9ERV9NQVNLIHwgY3VycmVudFN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gfkFJUlBMQU5FX01PREVfTUFTSyAmIGN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChzaG91bGRFbmFibGVXaWZpICE9PSBpc1dpRmlFbmFibGVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldFdpZmlTdGF0ZShzaG91bGRFbmFibGVXaWZpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYE5vdCBjaGFuZ2luZyBXaS1GaSBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIGxvZy5pbmZvKCdOb3QgY2hhbmdpbmcgZGF0YSBjb25uZWN0aW9uIHN0YXRlLCBiZWNhdXNlIGFpcnBsYW5lIG1vZGUgaXMgZW5hYmxlZCcpO1xuICAgIH0gZWxzZSBpZiAoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPT09IGlzRGF0YUVuYWJsZWQpIHtcbiAgICAgIGxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgZGF0YSBjb25uZWN0aW9uIHN0YXRlLCBzaW5jZSBpdCBpcyBhbHJlYWR5IGAgK1xuICAgICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIGxvZy5pbmZvKGBUdXJuaW5nIG5ldHdvcmsgZGF0YSAke2RhdGEgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHtkYXRhfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZVdpRmkgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVXaUZpICgpIHtcbiAgbGV0IHdpZmkgPSAhKGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCkpO1xuICBsb2cuaW5mbyhgVHVybmluZyBXaUZpICR7d2lmaSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe3dpZml9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRmxpZ2h0TW9kZSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUZsaWdodE1vZGUgKCkge1xuICAvKlxuICAgKiBUT0RPOiBJbXBsZW1lbnQgaXNSZWFsRGV2aWNlKCkuIFRoaXMgbWV0aG9kIGZhaWxzIG9uXG4gICAqIHJlYWwgZGV2aWNlcywgaXQgc2hvdWxkIHRocm93IGEgTm90WWV0SW1wbGVtZW50ZWRFcnJvclxuICAgKi9cbiAgbGV0IGZsaWdodE1vZGUgPSAhKGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKSk7XG4gIGxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy53YXJuKGBDb3VsZCBub3QgZ2V0IHRoZSBjdXJyZW50IGdlb2xvY2F0aW9uIGluZm86ICR7ZS5tZXNzYWdlfWApO1xuICAgIGxvZy53YXJuKGBSZXR1cm5pbmcgdGhlIGRlZmF1bHQgemVybydlZCB2YWx1ZXNgKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGF0aXR1ZGU6IEdFT19FUFNJTE9OLFxuICAgICAgbG9uZ2l0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGFsdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEdwc0NhY2hlUmVmcmVzaE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lb3V0TXMgWzIwMDAwXSBUaGUgbWF4aW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiB0byBibG9jayB1bnRpbCBHUFMgY2FjaGUgaXMgcmVmcmVzaGVkLiBQcm92aWRpbmcgemVybyBvciBhIG5lZ2F0aXZlXG4gKiB2YWx1ZSB0byBpdCBza2lwcyB3YWl0aW5nIGNvbXBsZXRlbHkuXG4gKi9cblxuLyoqXG4gKiBTZW5kcyBhbiBhc3luYyByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIEdQUyBjYWNoZS5cbiAqIFRoaXMgZmVhdHVyZSBvbmx5IHdvcmtzIGlmIHRoZSBkZXZpY2UgdW5kZXIgdGVzdCBoYXNcbiAqIEdvb2dsZSBQbGF5IFNlcnZpY2VzIGluc3RhbGxlZC4gSW4gY2FzZSB0aGUgdmFuaWxsYVxuICogTG9jYXRpb25NYW5hZ2VyIGlzIHVzZWQgdGhlIGRldmljZSBBUEkgbGV2ZWwgbXVzdCBiZSBhdFxuICogdmVyc2lvbiAzMCAoQW5kcm9pZCBSKSBvciBoaWdoZXIuXG4gKlxuICogQHBhcmFtIHtHcHNDYWNoZVJlZnJlc2hPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVJlZnJlc2hHcHNDYWNoZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJlZnJlc2hHcHNDYWNoZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCB0aGlzLmFkYi5yZWZyZXNoR2VvTG9jYXRpb25DYWNoZSh0aW1lb3V0TXMpO1xufTtcblxuY29tbWFuZHMuZ2V0R2VvTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBnZXRHZW9Mb2NhdGlvbiAoKSB7XG4gIGNvbnN0IHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbHRpdHVkZX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRHZW9Mb2NhdGlvbigpO1xuICByZXR1cm4ge1xuICAgIGxhdGl0dWRlOiBwYXJzZUZsb2F0KGxhdGl0dWRlKSB8fCBHRU9fRVBTSUxPTixcbiAgICBsb25naXR1ZGU6IHBhcnNlRmxvYXQobG9uZ2l0dWRlKSB8fCBHRU9fRVBTSUxPTixcbiAgICBhbHRpdHVkZTogcGFyc2VGbG9hdChhbHRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gIH07XG59O1xuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9LZXlFdmVudC5odG1sI0tFWUNPREVfRFBBRF9DRU5URVJcbi8vIGluIHRoZSBhbmRyb2lkIGRvY3MsIHRoaXMgaXMgaG93IHRoZSBrZXljb2RlcyBhcmUgZGVmaW5lZFxuY29uc3QgS2V5Q29kZSA9IHtcbiAgVVA6IDE5LFxuICBET1dOOiAyMCxcbiAgUklHSFQ6IDIyLFxuICBDRU5URVI6IDIzXG59O1xuY29tbWFuZHMudG9nZ2xlTG9jYXRpb25TZXJ2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUxvY2F0aW9uU2VydmljZXMgKCkge1xuICBsb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
272
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJBSVJQTEFORV9NT0RFX01BU0siLCJXSUZJX01BU0siLCJEQVRBX01BU0siLCJHRU9fRVBTSUxPTiIsIk51bWJlciIsIk1JTl9WQUxVRSIsImdldE5ldHdvcmtDb25uZWN0aW9uIiwibG9nIiwiaW5mbyIsImFpcnBsYW5lTW9kZU9uIiwiYWRiIiwiaXNBaXJwbGFuZU1vZGVPbiIsImNvbm5lY3Rpb24iLCJ3aWZpT24iLCJpc1dpZmlPbiIsImRhdGFPbiIsImlzRGF0YU9uIiwic2V0TmV0d29ya0Nvbm5lY3Rpb24iLCJ0eXBlIiwic2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlIiwic2hvdWxkRW5hYmxlV2lmaSIsInNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uIiwiY3VycmVudFN0YXRlIiwiaXNBaXJwbGFuZU1vZGVFbmFibGVkIiwiaXNXaUZpRW5hYmxlZCIsImlzRGF0YUVuYWJsZWQiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsInNldEFpcnBsYW5lTW9kZSIsImJyb2FkY2FzdEFpcnBsYW5lTW9kZSIsInNldFdpZmlTdGF0ZSIsInNldERhdGFTdGF0ZSIsImlzRW11bGF0b3IiLCJ3aWZpIiwidG9nZ2xlRGF0YSIsImRhdGEiLCJzZXRXaWZpQW5kRGF0YSIsInRvZ2dsZVdpRmkiLCJ0b2dnbGVGbGlnaHRNb2RlIiwiZmxpZ2h0TW9kZSIsInNldEdlb0xvY2F0aW9uIiwibG9jYXRpb24iLCJnZXRHZW9Mb2NhdGlvbiIsImUiLCJ3YXJuIiwibWVzc2FnZSIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiYWx0aXR1ZGUiLCJtb2JpbGVSZWZyZXNoR3BzQ2FjaGUiLCJvcHRzIiwidGltZW91dE1zIiwicmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUiLCJwYXJzZUZsb2F0IiwiS2V5Q29kZSIsIlVQIiwiRE9XTiIsIlJJR0hUIiwiQ0VOVEVSIiwidG9nZ2xlTG9jYXRpb25TZXJ2aWNlcyIsImFwaSIsImdldEFwaUxldmVsIiwicHJvdmlkZXJzIiwiZ2V0TG9jYXRpb25Qcm92aWRlcnMiLCJpc0dwc0VuYWJsZWQiLCJpbmRleE9mIiwidG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlciIsInNlcSIsInB1c2giLCJrZXlldmVudCIsInRvZ2dsZVNldHRpbmciLCJlcnJvcnMiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwic2V0dGluZyIsInByZUtleVNlcSIsIl8iLCJpc051bGwiLCJvcGVuU2V0dGluZ3NBY3Rpdml0eSIsImtleSIsImRvS2V5IiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImlnbiIsImJhY2siLCJCIiwiZGVsYXkiLCJ3cmFwcGVkIiwiYm9vdHN0cmFwIiwiaWdub3JlVW5leHBlY3RlZFNodXRkb3duIiwicmVzdGFydCIsInN0YXJ0IiwiZGlzYWJsZUFuZHJvaWRXYXRjaGVycyIsImFjY2VwdFNzbENlcnRzIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7OztBQUVBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEtBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEtBQWxCO0FBTUEsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLFNBQTNCOztBQUVBUixRQUFRLENBQUNTLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLEdBQXVDO0FBQ3JFQyxrQkFBSUMsSUFBSixDQUFTLDRCQUFUOztBQUNBLE1BQUlDLGNBQWMsR0FBRyxNQUFNLEtBQUtDLEdBQUwsQ0FBU0MsZ0JBQVQsRUFBM0I7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QUFRLElBQVIsQ0FBTjtBQUNBLFFBQU0sS0FBSzVFLEdBQUwsQ0FBUzBELFFBQVQsQ0FBa0JTLEdBQWxCLENBQU47QUFDRCxDQUpEOztBQU1BL0UsT0FBTyxDQUFDNEIsdUJBQVIsR0FBa0MsZUFBZUEsdUJBQWYsQ0FBd0M2RCxPQUF4QyxFQUFpRDtBQUNqRixNQUFJLENBQUMsS0FBS0MsU0FBVixFQUFxQjtBQUNuQixXQUFPLE1BQU1ELE9BQU8sRUFBcEI7QUFDRDs7QUFFRCxPQUFLQyxTQUFMLENBQWVDLHdCQUFmLEdBQTBDLElBQTFDOztBQUNBLE1BQUk7QUFDRixVQUFNRixPQUFPLEVBQWI7QUFDQSxVQUFNLEtBQUs3RSxHQUFMLENBQVNnRixPQUFULEVBQU47QUFDQSxVQUFNLEtBQUtGLFNBQUwsQ0FBZUcsS0FBZixDQUFxQixLQUFLMUMsSUFBTCxDQUFVOEIsVUFBL0IsRUFBMkMsS0FBSzlCLElBQUwsQ0FBVTJDLHNCQUFyRCxFQUE2RSxLQUFLM0MsSUFBTCxDQUFVNEMsY0FBdkYsQ0FBTjtBQUNELEdBSkQsU0FJVTtBQUNSLFNBQUtMLFNBQUwsQ0FBZUMsd0JBQWYsR0FBMEMsS0FBMUM7QUFDRDtBQUNGLENBYkQ7O0FBZUFLLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjaEcsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgQUlSUExBTkVfTU9ERV9NQVNLID0gMGIwMDE7XG5jb25zdCBXSUZJX01BU0sgPSAwYjAxMDtcbmNvbnN0IERBVEFfTUFTSyA9IDBiMTAwO1xuLy8gVGhlIHZhbHVlIGNsb3NlIHRvIHplcm8sIGJ1dCBub3QgemVybywgaXMgbmVlZGVkXG4vLyB0byB0cmljayBKU09OIGdlbmVyYXRpb24gYW5kIHNlbmQgYSBmbG9hdCB2YWx1ZSBpbnN0ZWFkIG9mIGFuIGludGVnZXIsXG4vLyBUaGlzIGFsbG93cyBzdHJpY3RseS10eXBlZCBjbGllbnRzLCBsaWtlIEphdmEsIHRvIHByb3Blcmx5XG4vLyBwYXJzZSBpdC4gT3RoZXJ3aXNlIGZsb2F0IDAuMCBpcyBhbHdheXMgcmVwcmVzZW50ZWQgYXMgaW50ZWdlciAwIGluIEpTLlxuLy8gVGhlIHZhbHVlIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBEQkxfRVBTSUxPTiAoaHR0cHM6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvTGliYy9MaWJjLTQ5OC9pbmNsdWRlL2Zsb2F0LmgpXG5jb25zdCBHRU9fRVBTSUxPTiA9IE51bWJlci5NSU5fVkFMVUU7XG5cbmNvbW1hbmRzLmdldE5ldHdvcmtDb25uZWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV0d29ya0Nvbm5lY3Rpb24gKCkge1xuICBsb2cuaW5mbygnR2V0dGluZyBuZXR3b3JrIGNvbm5lY3Rpb24nKTtcbiAgbGV0IGFpcnBsYW5lTW9kZU9uID0gYXdhaXQgdGhpcy5hZGIuaXNBaXJwbGFuZU1vZGVPbigpO1xuICBsZXQgY29ubmVjdGlvbiA9IGFpcnBsYW5lTW9kZU9uID8gQUlSUExBTkVfTU9ERV9NQVNLIDogMDtcblxuICAvLyBubyBuZWVkIHRvIGNoZWNrIGFueXRoaW5nIGVsc2UgaWYgd2UgYXJlIGluIGFpcnBsYW5lIG1vZGVcbiAgaWYgKCFhaXJwbGFuZU1vZGVPbikge1xuICAgIGxldCB3aWZpT24gPSBhd2FpdCB0aGlzLmlzV2lmaU9uKCk7XG4gICAgY29ubmVjdGlvbiB8PSAod2lmaU9uID8gV0lGSV9NQVNLIDogMCk7XG4gICAgbGV0IGRhdGFPbiA9IGF3YWl0IHRoaXMuYWRiLmlzRGF0YU9uKCk7XG4gICAgY29ubmVjdGlvbiB8PSAoZGF0YU9uID8gREFUQV9NQVNLIDogMCk7XG4gIH1cblxuICByZXR1cm4gY29ubmVjdGlvbjtcbn07XG5cbi8qKlxuICogZGVjb3VwbGluZyB0byBvdmVycmlkZSB0aGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLmlzV2lmaU9uID0gYXN5bmMgZnVuY3Rpb24gaXNXaWZpT24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKTtcbn07XG5cbmNvbW1hbmRzLnNldE5ldHdvcmtDb25uZWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TmV0d29ya0Nvbm5lY3Rpb24gKHR5cGUpIHtcbiAgbG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYE5vdCBjaGFuZ2luZyBhaXJwbGFuZSBtb2RlLCBzaW5jZSBpdCBpcyBhbHJlYWR5IGAgK1xuICAgICAgICAgICAgIGAke3Nob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCd9YCk7XG4gIH1cblxuICBpZiAoc2hvdWxkRW5hYmxlV2lmaSA9PT0gaXNXaUZpRW5hYmxlZCAmJiBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgIGxvZy5pbmZvKCdOb3QgY2hhbmdpbmcgZGF0YSBjb25uZWN0aW9uL1dpLUZpIHN0YXRlcywgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBzZXQgdG8gZXhwZWN0ZWQgdmFsdWVzJyk7XG4gICAgaWYgKGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKSkge1xuICAgICAgcmV0dXJuIEFJUlBMQU5FX01PREVfTUFTSyB8IGN1cnJlbnRTdGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIH5BSVJQTEFORV9NT0RFX01BU0sgJiBjdXJyZW50U3RhdGU7XG4gIH1cblxuICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICBpZiAoc2hvdWxkRW5hYmxlV2lmaSAhPT0gaXNXaUZpRW5hYmxlZCkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRXaWZpU3RhdGUoc2hvdWxkRW5hYmxlV2lmaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgICBgJHtzaG91bGRFbmFibGVXaWZpID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlKSB7XG4gICAgICBsb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgYmVjYXVzZSBhaXJwbGFuZSBtb2RlIGlzIGVuYWJsZWQnKTtcbiAgICB9IGVsc2UgaWYgKHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgICBsb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgICAgICAgIGAke3Nob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0RGF0YVN0YXRlKHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5nZXROZXR3b3JrQ29ubmVjdGlvbigpO1xufTtcblxuLyoqXG4gKiBkZWNvdXBsaW5nIHRvIG92ZXJyaWRlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5zZXRXaWZpU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBzZXRXaWZpU3RhdGUgKHdpZmkpIHtcbiAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaVN0YXRlKHdpZmksIHRoaXMuaXNFbXVsYXRvcigpKTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZURhdGEgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVEYXRhICgpIHtcbiAgbGV0IGRhdGEgPSAhKGF3YWl0IHRoaXMuYWRiLmlzRGF0YU9uKCkpO1xuICBsb2cuaW5mbyhgVHVybmluZyBuZXR3b3JrIGRhdGEgJHtkYXRhID8gJ29uJyA6ICdvZmYnfWApO1xuICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpQW5kRGF0YSh7ZGF0YX0sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgfSk7XG59O1xuXG5jb21tYW5kcy50b2dnbGVXaUZpID0gYXN5bmMgZnVuY3Rpb24gdG9nZ2xlV2lGaSAoKSB7XG4gIGxldCB3aWZpID0gIShhd2FpdCB0aGlzLmFkYi5pc1dpZmlPbigpKTtcbiAgbG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICBsb2cuaW5mbyhgVHVybmluZyBmbGlnaHQgbW9kZSAke2ZsaWdodE1vZGUgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShmbGlnaHRNb2RlKTtcbiAgfSk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLmJyb2FkY2FzdEFpcnBsYW5lTW9kZShmbGlnaHRNb2RlKTtcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5zZXRHZW9Mb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldEdlb0xvY2F0aW9uIChsb2NhdGlvbikge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRHZW9Mb2NhdGlvbihsb2NhdGlvbiwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEdlb0xvY2F0aW9uKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cud2FybihgQ291bGQgbm90IGdldCB0aGUgY3VycmVudCBnZW9sb2NhdGlvbiBpbmZvOiAke2UubWVzc2FnZX1gKTtcbiAgICBsb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgbG9nLmluZm8oJ1RvZ2dsaW5nIGxvY2F0aW9uIHNlcnZpY2VzJyk7XG4gIGxldCBhcGkgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICBpZiAodGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICBsZXQgcHJvdmlkZXJzID0gYXdhaXQgdGhpcy5hZGIuZ2V0TG9jYXRpb25Qcm92aWRlcnMoKTtcbiAgICBsZXQgaXNHcHNFbmFibGVkID0gcHJvdmlkZXJzLmluZGV4T2YoJ2dwcycpICE9PSAtMTtcbiAgICBhd2FpdCB0aGlzLmFkYi50b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyKCFpc0dwc0VuYWJsZWQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChhcGkgPiAxNSkge1xuICAgIGxldCBzZXEgPSBbS2V5Q29kZS5VUCwgS2V5Q29kZS5VUF07XG4gICAgaWYgKGFwaSA9PT0gMTYpIHtcbiAgICAgIC8vIFRoaXMgdmVyc2lvbiBvZiBBbmRyb2lkIGhhcyBhIFwicGFyZW50XCIgYnV0dG9uIGluIGl0cyBhY3Rpb24gYmFyXG4gICAgICBzZXEucHVzaChLZXlDb2RlLkRPV04pO1xuICAgIH0gZWxzZSBpZiAoYXBpIDwgMjgpIHtcbiAgICAgIC8vIE5ld2VyIHZlcnNpb25zIG9mIEFuZHJvaWQgaGF2ZSB0aGUgdG9nZ2xlIGluIHRoZSBBY3Rpb24gYmFyXG4gICAgICBzZXEgPSBbS2V5Q29kZS5SSUdIVCwgS2V5Q29kZS5SSUdIVCwgS2V5Q29kZS5VUF07XG4gICAgICAvKlxuICAgICAgICogT25jZSB0aGUgTG9jYXRpb24gc2VydmljZXMgc3dpdGNoIGlzIE9GRiwgaXQgd29uJ3QgcmVjZWl2ZSBmb2N1c1xuICAgICAgICogd2hlbiBnb2luZyBiYWNrIHRvIHRoZSBMb2NhdGlvbiBTZXJ2aWNlcyBzZXR0aW5ncyBzY3JlZW4gdW5sZXNzIHdlXG4gICAgICAgKiBzZW5kIGEgZHVtbXkga2V5ZXZlbnQgKFVQKSAqYmVmb3JlKiBvcGVuaW5nIHRoZSBzZXR0aW5ncyBzY3JlZW5cbiAgICAgICAqL1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfSBlbHNlIGlmIChhcGkgPj0gMjgpIHtcbiAgICAgIC8vIEV2ZW4gbmV3ZXIgdmVyc2lvbnMgb2YgYW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gYSBiYXIgYmVsb3cgdGhlIGFjdGlvbiBiYXJcbiAgICAgIC8vIHRoaXMgbWVhbnMgYSBzaW5nbGUgcmlnaHQgY2xpY2sgd2lsbCBjYXVzZSBpdCB0byBiZSBzZWxlY3RlZC5cbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hUXTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KEtleUNvZGUuVVApO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnRvZ2dsZVNldHRpbmcoJ0xPQ0FUSU9OX1NPVVJDRV9TRVRUSU5HUycsIHNlcSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlcmUncyBubyBnbG9iYWwgbG9jYXRpb24gc2VydmljZXMgdG9nZ2xlIG9uIG9sZGVyIEFuZHJvaWQgdmVyc2lvbnNcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufTtcblxuaGVscGVycy50b2dnbGVTZXR0aW5nID0gYXN5bmMgZnVuY3Rpb24gdG9nZ2xlU2V0dGluZyAoc2V0dGluZywgcHJlS2V5U2VxKSB7XG4gIC8qXG4gICAqIHByZUtleVNlcSBpcyB0aGUga2V5ZXZlbnQgc2VxdWVuY2UgdG8gc2VuZCBvdmVyIEFEQiBpbiBvcmRlclxuICAgKiB0byBwb3NpdGlvbiB0aGUgY3Vyc29yIG9uIHRoZSByaWdodCBvcHRpb24uXG4gICAqIEJ5IGRlZmF1bHQgaXQncyBbdXAsIHVwLCBkb3duXSBiZWNhdXNlIHdlIHVzdWFsbHkgdGFyZ2V0IHRoZSAxc3QgaXRlbSBpblxuICAgKiB0aGUgc2NyZWVuLCBhbmQgc29tZXRpbWVzIHdoZW4gb3BlbmluZyBzZXR0aW5ncyBhY3Rpdml0aWVzIHRoZSBjdXJzb3IgaXNcbiAgICogYWxyZWFkeSBwb3NpdGlvbm5lZCBvbiB0aGUgMXN0IGl0ZW0sIGJ1dCB3ZSBjYW4ndCBrbm93IGZvciBzdXJlXG4gICAqL1xuICBpZiAoXy5pc051bGwocHJlS2V5U2VxKSkge1xuICAgIHByZUtleVNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQLCBLZXlDb2RlLkRPV05dO1xuICB9XG5cbiAgYXdhaXQgdGhpcy5vcGVuU2V0dGluZ3NBY3Rpdml0eShzZXR0aW5nKTtcblxuICBmb3IgKGxldCBrZXkgb2YgcHJlS2V5U2VxKSB7XG4gICAgYXdhaXQgdGhpcy5kb0tleShrZXkpO1xuICB9XG5cbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG5cbiAgLypcbiAgICogQ2xpY2sgYW5kIGhhbmRsZSBwb3RlbnRpYWwgQURCIGRpc2Nvbm5lY3QgdGhhdCBvY2N1cnMgb24gb2ZmaWNpYWxcbiAgICogZW11bGF0b3Igd2hlbiB0aGUgbmV0d29yayBjb25uZWN0aW9uIGlzIGRpc2FibGVkXG4gICAqL1xuICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgfSk7XG5cbiAgLypcbiAgICogSW4gb25lIHBhcnRpY3VsYXIgY2FzZSAoZW5hYmxlIExvY2F0aW9uIFNlcnZpY2VzKSwgYSBwb3AtdXAgaXNcbiAgICogZGlzcGxheWVkIG9uIHNvbWUgcGxhdGZvcm1zIHNvIHRoZSB1c2VyIGFjY2VwdHMgb3IgcmVmdXNlcyB0aGF0IEdvb2dsZVxuICAgKiBjb2xsZWN0cyBsb2NhdGlvbiBkYXRhLiBTbyB3ZSB3YWl0IGZvciB0aGF0IHBvcC11cCB0byBvcGVuLCBpZiBpdFxuICAgKiBkb2Vzbid0IHRoZW4gcHJvY2VlZFxuICAgKi9cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5SSUdIVCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLkNFTlRFUik7XG4gICAgYXdhaXQgdGhpcy5hZGIud2FpdEZvck5vdEFjdGl2aXR5KGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LCA1MDAwKTtcbiAgfSBjYXRjaCAoaWduKSB7fVxuXG4gIGF3YWl0IHRoaXMuYWRiLmJhY2soKTtcbn07XG5cbmhlbHBlcnMuZG9LZXkgPSBhc3luYyBmdW5jdGlvbiBkb0tleSAoa2V5KSB7XG4gIC8vIFRPRE86IENvbmZpcm0gd2UgbmVlZCB0aGlzIGRlbGF5LiBTZWVtcyB0byB3b3JrIHdpdGhvdXQgaXQuXG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG4gIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KGtleSk7XG59O1xuXG5oZWxwZXJzLndyYXBCb290c3RyYXBEaXNjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gd3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgKHdyYXBwZWQpIHtcbiAgaWYgKCF0aGlzLmJvb3RzdHJhcCkge1xuICAgIHJldHVybiBhd2FpdCB3cmFwcGVkKCk7XG4gIH1cblxuICB0aGlzLmJvb3RzdHJhcC5pZ25vcmVVbmV4cGVjdGVkU2h1dGRvd24gPSB0cnVlO1xuICB0cnkge1xuICAgIGF3YWl0IHdyYXBwZWQoKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5yZXN0YXJ0KCk7XG4gICAgYXdhaXQgdGhpcy5ib290c3RyYXAuc3RhcnQodGhpcy5vcHRzLmFwcFBhY2thZ2UsIHRoaXMub3B0cy5kaXNhYmxlQW5kcm9pZFdhdGNoZXJzLCB0aGlzLm9wdHMuYWNjZXB0U3NsQ2VydHMpO1xuICB9IGZpbmFsbHkge1xuICAgIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IGZhbHNlO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvbmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -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.default = exports.NETWORK_KEYS = exports.BATTERY_KEYS = exports.MEMORY_KEYS = exports.CPU_KEYS = exports.SUPPORTED_PERFORMANCE_DATA_TYPES = exports.helpers = exports.commands = void 0;
8
+ exports.helpers = exports.default = exports.commands = exports.SUPPORTED_PERFORMANCE_DATA_TYPES = exports.NETWORK_KEYS = exports.MEMORY_KEYS = exports.CPU_KEYS = exports.BATTERY_KEYS = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11